CMEK の概要

このページでは、Apigee での CMEK の使用について説明します。ベスト プラクティスについては、 Apigee CMEK のベスト プラクティスをご覧ください。

概要

Google Cloud のデフォルトでは、Google が所有して管理する暗号鍵を使用して、 保存されているデータを自動的に暗号化します。データを保護する鍵について特定のコンプライアンス要件や規制要件がある場合、顧客管理の暗号鍵(CMEK)を使用できます。

Apigee での CMEK の使用について詳しくは、Apigee での CMEK の使用をご覧ください。CMEK 全般について詳しくは、Cloud Key Management Service のドキュメントをご覧ください。

顧客管理の暗号鍵(CMEK)を使用しても、Google のデフォルトの暗号化メカニズムよりもセキュリティが向上するとは限りませんが、セキュリティ要件とコンプライアンス要件を満たすために、鍵のライフサイクルと管理をより詳細に制御できます。

Google 所有の鍵と Google 管理の鍵よりも鍵オペレーションを細かく制御する必要がある場合は、顧客管理の暗号鍵を使用できます。これらの鍵は Cloud Key Management Service(Cloud KMS)を使用して作成および管理され、HSM クラスタまたは外部にソフトウェア鍵として保存されます。

鍵管理機能は、Cloud KMS サービスによって提供されます。

CMEK のユースケース

このセクションでは、Apigee で CMEK を使用する一般的なユースケースについて説明します。

鍵のローテーション

鍵を自動または手動でローテーションします。鍵をローテーションしても、Apigee に以前保存されていたデータが新しい鍵バージョンで自動的に再暗号化されることはありませんが、暗号化に使用した以前の鍵バージョンが無効化または破壊されていない限り、引き続きアクセスできます。

鍵のローテーションの主な目的は、古い鍵バージョンを完全に置き換えることではなく、データの露出を 1 つの鍵に制限することです。Apigee は現在、鍵のローテーション時の再暗号化をサポートしていません。Apigee の場合、鍵をローテーションすると、新しいプライマリ キー バージョンで暗号化されるのは、限られた数の新しいデータ(新しいプロキシ リビジョンなど)のみです。分析データ、ランタイム ディスク、古いプロキシ リビジョンなど、ほとんどのデータは古い鍵バージョンを引き続き使用しています。以前のキー バージョンを完全に削除する場合は、apigee 組織を再作成する必要があります。ランタイム暗号鍵の場合、以前の鍵バージョンを完全に削除するには、ランタイム インスタンスを再作成する必要があります。詳細については、 Apigee CMEK のベスト プラクティスをご覧ください。

鍵のローテーションも参照してください。

鍵の削除と無効化

鍵バージョンを無効にすると、その鍵バージョンで暗号化された Apigee データにはアクセスできなくなります。データへのアクセスを復元するには、鍵を再度有効にします。

以前のバージョンであっても CMEK 鍵を削除または無効にすると、暗号化に使用されている鍵のバージョンに応じて、apigee 組織で機能しなくなる可能性があります。一部の API は、データの復号に CMEK キーを必要とするため、直ちに機能停止します。一方、一部の関数は、Compute Engine 永続ディスクの再マウントなど、システム アクションがトリガーされた場合にのみ機能しなくなる場合があります。詳細については、 鍵の無効化をご覧ください。

鍵バージョンが破棄されると、その鍵バージョンで暗号化された Apigee データは読み取り不可になり、復元できなくなります。この操作は元に戻せません

関連情報:

キーの復元

鍵または以前の鍵バージョンを誤って削除または無効にした場合は、できるだけ早く復元する必要があります。CMEK は、鍵が使用できない場合にデータが失われることを目的とした機能です。鍵を復元しても、apigee 組織が復元される保証はなく、データが失われる可能性があります。詳細については、 鍵の再有効化をご覧ください。Google Cloud カスタマーケアにお問い合わせのうえ、最善の次のステップをご確認ください。

関連情報: 鍵バージョンの破棄と復元

鍵へのアクセス権を取り消す

IAM を使用して Apigee サービス エージェントによる鍵へのアクセス権を取り消すと、Apigee はどの鍵バージョンで暗号化されたコントロール プレーン データにもアクセスできなくなります。データの復号に依存する Apigee API オペレーションは失敗します。鍵へのアクセス権を再度付与することによりデータへのアクセスを復元できる可能性があり、データを復号する Apigee API オペレーションが復元されます。

関連情報: プロジェクト、フォルダ、組織へのアクセス権の管理

EKM

現在、Apigee は Cloud External Key Manager(Cloud EKM)をサポートしていません。Cloud EKM を使用している場合、Cloud EKM エラーが適切に伝播されず、エラーが表示されないという既知のデフェクトがあります。

鍵のトラッキング

Apigee は鍵トラッキングをサポートしていません。鍵の使用状況の表示を使用していて、特定のバージョンの鍵が使用されていないことに気付いた場合、Apigee は鍵トラッキング機能と統合されていないため、正確ではありません。

割り当て

CMEK 鍵を使用すると、一部の Cloud KMS の割り当てに対して使用量が発生する可能性があります。Cloud KMS の割り当てに関する最新情報については、割り当てをご覧ください。

暗号鍵の取り消し

Google Cloud で Apigee 上のデータが不正使用されていると思われる場合は、暗号鍵を取り消すことができます。ランタイム CMEK を取り消して、ランタイム インスタンスを正常に動作させないようにし、ゲートウェイ データへにアクセスできないようにします。コントロール プレーン CMEK を取り消して、Apigee が分析処理を実行したり、新しいプロキシをデプロイしたりできないようにします。

Apigee での CMEK の使用

Apigee の暗号鍵はランタイムとコントロール プレーンのデータに使用され、プロビジョニング プロセスで作成されます。

Apigee コントロール プレーン データはランタイム データとは異なる暗号鍵で暗号化し、異なるリージョンに保存できます。CMEK ドキュメントによると、この暗号化は保存データ、つまり最終的にディスクに保存されるデータにのみ適用されます。

Apigee コントロール プレーン データには、プロキシ構成(バンドル)、一部の環境構成データ、分析データが含まれます。Apigee ランタイム データには、KVM、キャッシュ、クライアント シークレットなどのアプリケーション データが含まれ、これらはランタイム データベースに保存されます。

暗号鍵の種類の説明については、Apigee 暗号鍵についてをご覧ください。

暗号鍵は Apigee 組織の作成時にのみ追加できます。CMEK が割り当てられると、組織の作成後に別の CMEK に変更することはできません。

データ所在地のコントロール プレーンの CMEK リージョン

リージョン化された Apigee コントロール プレーンで、コントロール プレーンに 2 つの暗号鍵を選択します。これは、Apigee コントロール プレーンの基盤となるコンポーネントの一部が、常にコントロール プレーンのロケーション内の単一リージョンにあるためです。詳細については、データ所在地のリージョンをご覧ください。

詳細 必要な鍵

コントロール プレーンはコントロール プレーン リージョンで実行されます。Apigee のコントロール プレーンは抽象的なコンセプトであり、基盤となる複数のコンポーネントが Apigee のコントロール プレーンを構成します。コントロール プレーン データは、プロキシ構成と分析用ストレージです。

他のコントロール プレーン データ(分析処理、ポータルなど)は、コントロール プレーンのサブリージョンにあります。

すべてのサブリージョンのコンポーネントは、同じリージョンに配置されます。

コントロール プレーン データに対し 1 つの鍵。

コントロール プレーンのサブリージョン データに対し 1 つの鍵。

組織ポリシーの制約

Google Cloud プロジェクトに CMEK 組織のポリシーの制約がある場合、Apigee はこれらの制約への準拠を適用します。Google Cloud UI、CLI、または Apigee API を介して Apigee を使用している場合、CEMK ポリシーの適用が保証されます。Google Cloud Apigee UI を使用する場合、CMEK 組織のポリシーの制約は事前に検証されるため、UI で有効なコンプライアンス構成を選択できます。

CMEK の組織のポリシーの制約を作成して、次の要件を満たすようにできます。

現在、Apigee の一部の機能は CMEK に準拠していません。CMEK を必要とするプロジェクトで、CMEK で保護されていない機能を無意識に使用しないようにするため、CMEK 制約付きのプロジェクトでは、コンプライアンスを確保するまで、これらの機能が無効になります。無効になるのは、この機能の新しい使用方法(新しいリソースの作成やアドオンの有効化)のみです。すでに使用している機能とリソースは引き続き使用および編集できますが、CMEK に準拠しなくなります。次の機能が無効になります。

  • CMEK を必要とする新規作成の組織では、Apigee 従来の UI を使用できません。これは、CMEK 組織は従来の UI でサポートされていないリージョン組織であるためです。既存の組織は引き続き従来の UI を使用できます。なお、CMEK の事前検証は従来の UI には実装されず、API エラーに依存します。つまり、CMEK を必要とする既存の組織では、CMEK 構成の構成や CMEK に準拠していない機能の無効化のためのガイド付き UX は使用できません。
  • Apigee シャドー API 検出は CMEK 組織のポリシーの対象ではなく、CMEK に準拠していません。

  • 評価組織の作成は、 CreateOrganization 評価組織 API と評価プロビジョニング ウィザードの両方でブロックされます。
  • Gemini Code Assist は使用できません。

  • グローバル組織の作成は、 CreateOrganization 評価組織 API と評価プロビジョニング ウィザードによってブロックされます。
  • ハイブリッド インスタンスの作成は、適用には使用できません。
  • CMEK が必要な場合、Apigee のデータを使用して Looker Studio を開く [Looker Studio] ボタンは無効になります。
  • ポータルの作成は、CreateSite API によってブロックされます。ポータル UI は Apigee Classic にのみ存在し(Google Cloud コンソールには存在しません)、Apigee Classic UI では事前検証が実装されないため、このブロックは API エラーに依存します(Apigee Classic UI の [Create] ポータル ボタンは無効になりません)。
  • 既存のリソースのコンプライアンスの遡及適用は使用できません。既存のリソースをコンプライアンスを遵守させる必要がある場合は、リソースを削除して再作成する必要があります。

Apigee で組織のポリシー制約を使用する方法については、 Apigee で組織のポリシー制約を使用するをご覧ください。

暗号鍵の作成方法

デフォルトでは、Google がプロビジョニング プロセス中に暗号鍵の作成を管理しますが、自分で作成することもできます。詳細については、Apigee 暗号鍵についてをご覧ください。

リスクとその軽減策

このセクションでは、潜在的な脅威と対処方法について説明します。

  • リスク:
    • 鍵の不正使用: KMS の脆弱性や鍵管理者への攻撃などにより、攻撃者が暗号鍵へのアクセス権を得た場合に発生します。
    • サービス拒否攻撃: 攻撃者が KMS またはストレージ システムを攻撃して、暗号鍵またはデータへのアクセスを妨害する可能性があります。
    • 鍵の紛失: 鍵を誤って削除または紛失した場合、データの損失やアクセス不能状態が発生する可能性があります。
  • 軽減策:
    • 強力なアクセス制御ポリシーと鍵管理ポリシーを実装します。
    • KMS のログとアクティビティをモニタリングし、不審な動作がないかどうか確認します。

トラブルシューティング

CMEK で暗号化された configstore データで発生する可能性のある一般的なエラーの条件、Apigee API から返されるよくあるエラー メッセージの要約、推奨されるトラブルシューティングの手順を次の表で説明します。

エラー メッセージ / 症状 原因 手順
Constraint constraints/gcp.restrictNonCmekServices violated for projects/my-project attempting to create or enable trial org. CMEK is not supported for trial orgs. To use trial orgs, adjust the gcp.restrictNonCmekServices constraint for this project. プロジェクトに組織のポリシー制約が存在するトライアル組織をプロビジョニングしようとしました。 CMEK は、トライアル/評価組織ではサポートされていません。トライアル組織をプロビジョニングするには、組織のポリシーの制約 constraints/gcp.restrictNonCmekServices を更新して、拒否されたサービスリストから Apigee を削除する必要があります。
Constraint constraints/gcp.restrictCmekCryptoKeyProjects violated for projects/my-project attempting to use projects/my-project/locations/my-location/keyRings/kr-1/cryptoKeys/ck-1 key. Use a key from a project that is allowed by the gcp.restrictCmekCryptoKeyProjects constraint. プロジェクトに組織のポリシーの制約があり、許可リストに登録されていない KMS CryptoKey を指定して組織をプロビジョニングしようとしました。 組織のポリシーで constraints/gcp.restrictCmekCryptoKeyProjects を設定しているため、指定した許可されたプロジェクトの CMEK 鍵を提供する必要があります。組織またはインスタンスを作成するには、許可されたプロジェクトの CMEK を指定する必要があります。または、組織のポリシーの制約 constraints/gcp.restrictCmekCryptoKeyProjects を更新して、目的の特定の Google Cloud プロジェクトの鍵を許可することもできます。
Apigee does not have permission to access key "..." ユーザーが、roles/cloudkms.cryptoKeyEncrypterDecrypter ロールを削除するなどすることにより、指定された KMS 鍵に対する Apigee のアクセスを取り消した。 ユーザーは、KMS 鍵に構成されたロールを確認し、Apigee サービス エージェントに必要な権限があることを確認する必要があります。
Unable to encrypt/decrypt data. Cloud KMS Error: "..." is not enabled, current state is: DESTROYED. ユーザーが、リクエストされた一部のデータの暗号化 / 復号に使用される鍵バージョンを無効にしたか、削除した。 可能であれば、ユーザーは鍵バージョンを再度有効にする必要があります。鍵または鍵バージョンが破棄されている場合、データは(設計上)復元できません。
No new Analytics data for US/EU users この問題の原因の一つとして、ユーザーが単一リージョン鍵の取り消し / 無効化 / 削除を行ったことが考えられます。 ユーザーは、単一リージョン鍵アクセスを再有効化 / 復元する必要があります。
Control plane key "..." in region "..." is not valid for this control plane instance. Supported region(s) are "…". ユーザーが、コントロール プレーンのインスタンスによって提供されるリージョンまたはマルチリージョンに対して無効またはサポートされていないリージョンで、単一リージョン コントロール プレーン鍵を指定した。 ユーザーは、サポートされているリージョンのいずれかで鍵を指定するか、別のコントロール プレーン インスタンスを使用する必要があります。
Multi-region control plane key is not valid for this control plane instance. Specify only the "apiConsumerDataEncryptionKeyName" field. ユーザーが、単一リージョン(マルチリージョン コントロール プレーンではないなど)にのみ存在するコントロール プレーンで、マルチリージョン コントロール プレーン鍵を指定した。 ユーザーは、マルチリージョン鍵のフィールドを省略するか、マルチリージョン コントロール プレーン インスタンスを使用する必要があります。
Multi-region control plane key is not valid for this control plane instance. Specify a multi-region key with region "..." ユーザーが、誤ったマルチリージョン コントロール プレーン インスタンスに、マルチリージョン コントロール プレーン鍵を指定した(「us」鍵を「eu」コントロール プレーン インスタンスに指定したなど)。 ユーザーは、正しいマルチリージョンでマルチリージョン鍵を使用するか、別のマルチリージョン コントロール プレーン インスタンスを使用する必要があります。