このページでは、Apigee での CMEK の使用について説明します。
概要
Google Cloud のデフォルトでは、Google が管理する暗号鍵を使用して、保存されているデータを自動的に暗号化します。データを保護する鍵について特定のコンプライアンス要件や規制要件がある場合、顧客管理の暗号鍵(CMEK)を使用できます。
Apigee での CMEK の使用について詳しくは、Apigee での CMEK の使用をご覧ください。CMEK 全般について詳しくは、Cloud Key Management Service のドキュメントをご覧ください。
顧客管理の暗号鍵(CMEK)を使用しても、Google のデフォルトの暗号化メカニズムよりもセキュリティが向上するとは限りませんが、セキュリティ要件とコンプライアンス要件を満たすために、鍵のライフサイクルと管理をより詳細に制御できます。
CMEK のメリット
鍵オペレーションを Google が管理する暗号鍵よりも細かく制御する必要がある場合は、顧客管理の暗号鍵を使用できます。これらの鍵は Cloud Key Management Service(Cloud KMS)を使用して作成、管理され、HSM クラスタまたは外部にソフトウェア鍵として保存されます。
鍵管理機能は、Cloud KMS サービスによって提供されます。一般的なユースケースは次のとおりです。
- 鍵のローテーション。鍵を自動または手動でローテーションします。鍵をローテーションしても、Apigee に以前保存されていたデータが新しい鍵バージョンで自動的に再暗号化されることはありませんが、暗号化に使用した以前の鍵バージョンが無効化または破壊されていない限り、引き続きアクセスできます。
- 鍵バージョンの有効化または無効化。鍵バージョンを無効にすると、その鍵バージョンで暗号化された Apigee データにはアクセスできなくなります。データへのアクセスを復元するには、鍵を再度有効にします。
- 鍵バージョンの破棄。鍵バージョンが破棄されると、その鍵バージョンで暗号化された Apigee データは読み取り不可になり、復元できなくなります。この操作は元に戻せません。
-
IAM を使用した Apigee サービス エージェントによる鍵へのアクセスの取り消し。これが行われると、Apigee はすべての鍵バージョンで暗号化されたどのコントロールプレーン データにもアクセスできなくなります。データの復号に依存する Apigee API オペレーションは失敗します。鍵へのアクセス権を再度付与することによりデータへのアクセスを復元できる可能性があり、データを復号する Apigee API オペレーションが復元されます。
割り当て
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 がプロビジョニング プロセス中に暗号鍵の作成を管理しますが、自分で作成することもできます。詳細については、Apigee 暗号鍵についてをご覧ください。
リスクとその軽減策
このセクションでは、潜在的な脅威と対処方法について説明します。
- リスク:
- 鍵の不正使用: KMS の脆弱性や鍵管理者への攻撃などにより、攻撃者が暗号鍵へのアクセス権を得た場合に発生します。
- サービス拒否攻撃: 攻撃者が KMS またはストレージ システムを攻撃して、暗号鍵またはデータへのアクセスを妨害する可能性があります。
- 鍵の紛失: 鍵を誤って削除または紛失した場合、データの損失やアクセス不能状態が発生する可能性があります。
- 軽減策:
- 強力なアクセス制御ポリシーと鍵管理ポリシーを実装します。
- KMS のログとアクティビティをモニタリングし、不審な動作がないかどうか確認します。
トラブルシューティング
CMEK で暗号化された configstore データで発生する可能性のある一般的なエラーの条件、Apigee API から返されるよくあるエラー メッセージの要約、推奨されるトラブルシューティングの手順を次の表で説明します。
エラー メッセージ / 症状 | 原因 | 手順 |
---|---|---|
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」コントロール プレーン インスタンスに指定したなど)。 | ユーザーは、正しいマルチリージョンでマルチリージョン鍵を使用するか、別のマルチリージョン コントロール プレーン インスタンスを使用する必要があります。 |