CMEK の組織のポリシー

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_IDunder:folders/FOLDER_IDunder: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 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 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.comsecretmanager.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.comstorage.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 権限が付与されている場合にのみ表示されます。

次のステップ

組織のポリシーの利点と一般的なユースケースの詳細について、組織のポリシー サービスの概要を確認する。

特定の制約を含む組織のポリシーを作成するその他の例については、制約の使用をご覧ください。