Google Cloud には、組織全体で CMEK が使用されるように、2 つの組織のポリシーの制約が提供されています。
constraints/gcp.restrictNonCmekServices
は、CMEK 保護を要求するために使用されます。constraints/gcp.restrictCmekCryptoKeyProjects
は、CMEK の保護に使用される Cloud KMS 鍵を制限するために使用されます。
CMEK の組織ポリシーは、サポートされる Google Cloud サービス内で新しく作成されたリソースにのみ適用されます。
必要なロール
リソースの作成時に各ユーザーが組織のポリシーを確認するために必要な権限を確実に持つようにするため、各ユーザーに組織のポリシー閲覧者(roles/orgpolicy.policyViewer
)の IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。
この事前定義ロールには、リソースの作成時に組織のポリシーを確認するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
リソースの作成時に組織のポリシーを確認するには、次の権限が必要です。
-
組織のポリシーの詳細を表示するには:
orgpolicy.policy.get
-
リソースの作成時に組織のポリシーを確認するには:
orgpolicy.policies.check
管理者は、各ユーザーにカスタムロールや他の事前定義ロールでこれらの権限付与することもできます。
組織のポリシーが有効な場合、CMEK 鍵で保護されたリソースを作成する Google Cloud コンソール ユーザーには orgpolicy.policies.check
権限が必要です。この権限のないユーザーは、Google Cloud コンソールを使用して CMEK で保護されたリソースを作成できますが、こうしたユーザーは restrictCmekCryptoKeyProjects
制約で許可されていない CMEK 鍵を選択できます。この制約を満たさないキーが選択されると、リソースの作成が最終的に失敗します。
CMEK 保護を要求する
組織の CMEK 保護を要求するには、constraints/gcp.restrictNonCmekServices
組織のポリシーを構成します。
リスト型制約として許可される値は、Google Cloud サービス名です(例: sqladmin.googleapis.com
)。Google Cloud サービス名のリストを指定して、制約を [拒否] に設定すると、この制約を使用できます。リソースが CMEK によって保護されていない場合、この構成によりこれらのサービスでのリソースの作成がブロックされます。つまり、サービス内でリソースを作成するリクエストは Cloud KMS 鍵を指定しないと成功しません。また、この制約により、これらのサービスのリソースから CMEK 保護が削除されるのをブロックします。この制約は、サポート対象サービスにのみ適用されます。
CMEK の Cloud KMS 鍵の使用を制限する
CMEK の保護に使用される Cloud KMS 鍵がどれかを制限するには、constraints/gcp.restrictCmekCryptoKeyProjects
制約を構成します。
リスト型制約として許容される値は、リソース階層インジケーター(projects/PROJECT_ID
、under:folders/FOLDER_ID
、under:organizations/ORGANIZATION_ID
など)です。この制約を使用するには、リソース階層インジケーターのリストを構成し、制約を [許可] に設定します。この構成では、CMEK 鍵が、リストされたプロジェクト、フォルダ、組織からのみ選択できるように、サポート対象サービスが制限されます。構成されたサービスで CMEK で保護されたリソースを作成するリクエストは、許可されたリソースのいずれかからの Cloud KMS 鍵がないと成功しません。この制約が構成されている場合、すべてのサポート対象サービスに適用されます。
サポート対象のサービス
サービス | CMEK を必要とする際の制約値 |
---|---|
AlloyDB for PostgreSQL | alloydb.googleapis.com |
Apigee | apigee.googleapis.com |
アプリケーションの統合 | integrations.googleapis.com |
Artifact Registry | artifactregistry.googleapis.com |
BigQuery | bigquery.googleapis.com |
Bigtable | bigtable.googleapis.com |
Cloud Composer | composer.googleapis.com |
Cloud Logging | logging.googleapis.com |
Cloud Run | run.googleapis.com |
Cloud Run 関数 | cloudfunctions.googleapis.com |
Cloud SQL | sqladmin.googleapis.com |
Cloud Storage | storage.googleapis.com |
Cloud Workstations | workstations.googleapis.com |
Colab Enterprise | aiplatform.googleapis.com |
Compute Engine | compute.googleapis.com |
Dataflow | dataflow.googleapis.com |
Dataproc | dataproc.googleapis.com |
Document AI | documentai.googleapis.com |
Filestore | file.googleapis.com |
Firestore | firestore.googleapis.com |
Google Kubernetes Engine (プレビュー) | container.googleapis.com |
Memorystore for Redis | redis.googleapis.com |
Pub/Sub | pubsub.googleapis.com |
Secret Manager | secretmanager.googleapis.com |
Secure Source Manager | securesourcemanager.googleapis.com |
Spanner | spanner.googleapis.com |
Speech-to-Text | speech.googleapis.com |
Vertex AI | aiplatform.googleapis.com |
Vertex AI Agent Builder | discoveryengine.googleapis.com |
Vertex AI Workbench インスタンス | notebooks.googleapis.com |
CMEK 組織のポリシーと Storage Transfer Service
Storage Transfer Service には CMEK 統合はありませんが、CMEK 組織のポリシーで使用できます。Storage Transfer Service を使用して、Secret Manager に保存されているデータベース認証情報が CMEK で保護されるようにする場合、storagetransfer.googleapis.com
と secretmanager.googleapis.com
の両方を constraints/gcp.restrictNonCmekServices
制約に追加する必要があります。詳細については、Storage Transfer Service CMEK のドキュメントをご覧ください。
リソースタイプ別の適用例外
CMEK 組織のポリシーの制約は、新しいリソースの作成時、または既存のリソースの Cloud KMS 鍵を変更するときに(サポートされている場合)適用されます。通常、これらの制約は、CMEK をサポートし、リソースの構成のみに基づいた、すべてのサービス リソースタイプに適用されます。主な例外を以下にまとめます。
リソースの種類 | 違反措置の例外 |
---|---|
bigquery.googleapis.com/Dataset |
データセットのデフォルトの Cloud KMS 鍵に部分的に適用(gcp.restrictCmekCryptoKeyProjects のみ) |
bigquery.googleapis.com/Job |
クエリジョブのみ: クエリで指定された Cloud KMS 鍵または課金プロジェクトのデフォルトに適用されます。個別のプロジェクトのデフォルト Cloud KMS 鍵の構成もご覧ください |
bigquerydatatransfer.googleapis.com/TransferConfig |
転送構成では、CMEK 組織のポリシー制約に Data Transfer Service のサービス名(bigquerydatatransfer.googleapis.com)が使用されます。 |
container.googleapis.com/Cluster |
(プレビュー)ノード ブートディスクのみの Cloud KMS 鍵に適用されます。アプリケーション レイヤでは Secret に適用されません |
logging.googleapis.com/LogBucket |
明示的に作成されたログバケットに適用されます。組み込みログバケットのコンプライアンスを確保するために必要な構成もご覧ください |
storage.googleapis.com/Bucket |
バケットのデフォルトの Cloud KMS 鍵に適用されます |
storage.googleapis.com/Object |
バケットとは独立して適用されます。個別のバケットのデフォルト Cloud KMS 鍵の構成もご覧ください。 |
設定例
この構成例では、サンプル組織について次のリソース階層があると想定しています。
CMEK を要求し、プロジェクトの鍵を制限する
projects/5
のすべての Cloud Storage リソースに対して CMEK による保護を要求し、projects/4
から取得した鍵のみを使用できるようにします。
すべての新しい Cloud Storage リソースで CMEK の保護を要求するには、次の組織のポリシー設定を使用します。
- 組織のポリシー:
constraints/gcp.restrictNonCmekServices
- バインディングの場所:
projects/5
- ポリシータイプ: 拒否
- ポリシーの値:
storage.googleapis.com
projects/4
の鍵のみが使用されるようにするには、次の構成を使用します。
- 組織のポリシー:
constraints/gcp.restrictCmekCryptoKeyProjects
- バインディングの場所:
projects/5
- ポリシータイプ: 許可
- ポリシーの値:
projects/4
CMEK を要求し、フォルダ内の鍵を制限する
または、将来的に folders/2
に Cloud KMS プロジェクトを追加する予定があり、folders/3
内で CMEK をより広範に適用したいとします。このシナリオでは、若干異なる構成が必要です。
folders/3
で新しい Cloud SQL リソースと Cloud Storage リソースに対して追加の CMEK 保護を要求するには:
- 組織のポリシー:
constraints/gcp.restrictNonCmekServices
- バインディングの場所:
folders/3
- ポリシータイプ: 拒否
- ポリシーの値:
sqladmin.googleapis.com
、storage.googleapis.com
folders/2
の Cloud KMS プロジェクトの鍵のみが使用されるようにするには:
- 組織のポリシー:
constraints/gcp.restrictCmekCryptoKeyProjects
- バインディングの場所:
folders/3
- ポリシータイプ: 許可
- ポリシーの値:
under:folders/2
組織の CMEK を要求する
CMEK を組織内の任意の場所(サポート対象サービス)で要求するには、次の設定で constraints/gcp.restrictNonCmekServices
制約を構成します。
- 組織のポリシー:
constraints/gcp.restrictNonCmekServices
- バインディングの場所:
organizations/1
- ポリシータイプ: 拒否
- ポリシーの値:(すべてのサポート対象サービス)
制限事項
Google Cloud コンソールを使用してリソースを作成する場合は、プロジェクトとサービスに constraints/gcp.restrictNonCmekServices
が構成されている場合、CMEK 以外の暗号化オプションを使用できない場合があります。CMEK 組織のポリシーの制限は、お客様のアカウントにプロジェクトに対する orgpolicy.policy.get
IAM 権限が付与されている場合にのみ表示されます。
次のステップ
組織のポリシーの利点と一般的なユースケースの詳細について、組織のポリシー サービスの概要を確認する。
特定の制約を含む組織のポリシーを作成するその他の例については、制約の使用をご覧ください。