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サービス名です(例: bigquery.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 が必要な場合の制約値 |
|---|---|
| Agent Assist | dialogflow.googleapis.com |
| AlloyDB for PostgreSQL | alloydb.googleapis.com |
| Apigee | apigee.googleapis.com |
| アプリケーションの統合 | integrations.googleapis.com |
| Artifact Registry | artifactregistry.googleapis.com |
| Backup for GKE | gkebackup.googleapis.com |
| BigQuery | bigquery.googleapis.com |
| Bigtable | bigtable.googleapis.com |
| Cloud Composer | composer.googleapis.com |
| Cloud Data Fusion | datafusion.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 Tasks | cloudtasks.googleapis.com |
| Cloud Workstations | workstations.googleapis.com |
| Colab Enterprise | aiplatform.googleapis.com |
| Compute Engine | compute.googleapis.com |
| 会話型分析情報 | contactcenterinsights.googleapis.com |
| Dataflow | dataflow.googleapis.com |
| Dataform | dataform.googleapis.com |
| Dataplex Universal Catalog | dataplex.googleapis.com |
| Dataproc | dataproc.googleapis.com |
| Dialogflow CX | dialogflow.googleapis.com |
| Document AI | documentai.googleapis.com |
| Eventarc Advanced (プレビュー) | eventarc.googleapis.com |
| Eventarc Standard | eventarc.googleapis.com |
| Filestore | file.googleapis.com |
| Firestore | firestore.googleapis.com |
| Google Agentspace Enterprise | discoveryengine.googleapis.com |
| Google Cloud NetApp Volumes | netapp.googleapis.com |
| Google Kubernetes Engine (プレビュー) | container.googleapis.com |
| Looker(Google Cloud コア) | looker.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 Search | 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 権限が顧客アカウントに付与されている場合にのみ表示されます。
次のステップ
組織のポリシーの利点と一般的なユースケースの詳細について、組織のポリシー サービスの概要を確認する。
特定の制約を含む組織のポリシーの作成例については、制約の使用をご覧ください。