このページでは、Apigee での CMEK の使用について説明します。ベスト プラクティスについては、Apigee での CMEK に関するベスト プラクティスをご覧ください。
概要
Google Cloud のデフォルトでは、Google が所有して管理する暗号鍵を使用して、保存されているデータが自動的に暗号化されます。データを保護する鍵について特定のコンプライアンス要件や規制要件がある場合、顧客管理の暗号鍵(CMEK)を使用できます。
Apigee での CMEK の使用について詳しくは、Apigee での CMEK の使用をご覧ください。CMEK 全般について詳しくは、Cloud Key Management Service のドキュメントをご覧ください。
顧客管理の暗号鍵(CMEK)を使用しても、Google のデフォルトの暗号化メカニズムよりもセキュリティが向上するとは限りませんが、セキュリティ要件とコンプライアンス要件を満たすために、鍵のライフサイクルと管理をより詳細に制御できます。
鍵オペレーションを Google が所有して管理する鍵で可能なレベルより細かく制御する必要がある場合は、CMEK を使用できます。CMEK は Cloud Key Management Service(Cloud KMS)を使用して作成および管理され、HSM クラスタまたは外部にソフトウェア鍵として保存されます。
鍵の管理機能は Cloud KMS サービスによって提供されます。
CMEK のユースケース
このセクションでは、Apigee で CMEK を使用する一般的なユースケースについて説明します。
鍵のローテーション
鍵を自動または手動でローテーションします。鍵をローテーションしても、以前に Apigee に保存したデータが自動的に新しい鍵バージョンで再暗号化されることはありませんが、暗号化に使用した以前の鍵バージョンが無効化または破棄されていない限り、引き続きデータにアクセスできます。
鍵のローテーションの主な目的は、古い鍵バージョンを完全に置き換えることではなく、1 つの鍵の流出時に生じるデータ漏洩を制限することです。Apigee は現在、鍵のローテーション時の再暗号化をサポートしていません。Apigee で鍵をローテーションした後に新しいバージョンのプライマリ鍵で暗号化されるのは、限られた数の新しいデータ(新しいプロキシ リビジョンなど)のみです。分析データ、ランタイム ディスク、古いプロキシ リビジョンなど、ほとんどのデータは古い鍵バージョンを引き続き使用します。以前の鍵バージョンを完全に削除するには、apigee
組織を再作成する必要があります。ランタイム暗号鍵の場合、以前の鍵バージョンを完全に削除するには、ランタイム インスタンスを再作成する必要があります。詳細については、Apigee での CMEK に関するベスト プラクティスをご覧ください。
鍵をローテーションするも参照してください。
鍵の削除と無効化
1 つの鍵バージョンを無効にすると、その鍵バージョンで暗号化された Apigee データにはアクセスできなくなります。データへのアクセスを復元するには、鍵を再度有効にします。
CMEK の場合は、以前の鍵バージョンだけを削除または無効にしたとしても、暗号化に使用されている鍵のバージョンによっては apigee
組織が機能しなくなる可能性があります。データの復号に CMEK を必要とする一部の API は、直ちに機能を停止します。また、一部の関数は、Compute Engine 永続ディスクの再マウントといったシステム アクションがトリガーされた場合にのみ機能しなくなります。詳細については、鍵の無効化をご覧ください。
1 つの鍵バージョンが破棄されると、その鍵バージョンで暗号化された Apigee データは読み取り不可になり、復元できなくなります。この操作は元に戻せません。
関連情報:
鍵の復元
鍵または以前の鍵バージョンを誤って削除または無効にした場合は、できるだけ早く復元を試みる必要があります。ただし、CMEK は鍵が使用できなくなった場合にデータを消失させることを目的とした機能です。鍵を復元しても apigee
組織が回復する保証はなく、データが失われる可能性があります。詳細については、鍵の再有効化をご覧ください。Google Cloud カスタマーケアにお問い合わせのうえ、最適な次のステップを確認してください。
関連情報: 鍵バージョンの破棄と復元
鍵へのアクセス権を取り消す
Apigee サービス エージェントに付与された鍵へのアクセス権を IAM によって取り消すと、どの鍵バージョンで暗号化されたコントロール プレーン データにも 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 UI で Apigee を使用する場合は、CMEK に関する組織ポリシーの制約が事前に検証されるため、ポリシーに準拠する有効な構成を UI で選択できます。
CMEK に関する組織ポリシーの制約を作成すると、次のことを要求できます。
Apigee の一部の機能は、現時点で CMEK に準拠していません。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 にのみ存在し(Google Cloud コンソールには存在しません)、事前検証は従来の Apigee UI に実装されないため、このブロックは API エラーによって発生します(従来の Apigee UI の [+ Portal] ボタンは無効になりません)。
- 既存のリソースに対して組織ポリシーの制約を遡及的に適用することはできません。既存のリソースを制約に準拠させる必要がある場合は、削除して再作成する必要があります。
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」コントロール プレーン インスタンスに指定したなど)。 | ユーザーは、正しいマルチリージョンでマルチリージョン鍵を使用するか、別のマルチリージョン コントロール プレーン インスタンスを使用する必要があります。 |