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 が必要な場合の制約値
Application Integration integrations.googleapis.com
Artifact Registry artifactregistry.googleapis.com
BigQuery bigquery.googleapis.com
Bigtable bigtable.googleapis.com
Cloud Composer composer.googleapis.com
Cloud Functions cloudfunctions.googleapis.com
Cloud Logging logging.googleapis.com
Cloud Run run.googleapis.com
Cloud SQL sqladmin.googleapis.com
Cloud Storage storage.googleapis.com
Cloud Workstations workstations.googleapis.com
Compute Engine compute.googleapis.com
Dataflow dataflow.googleapis.com
Dataproc dataproc.googleapis.com
Document AI documentai.googleapis.com
Filestore file.googleapis.com
Google Kubernetes Engineプレビューcontainer.googleapis.com
Pub/Sub pubsub.googleapis.com
Secret Manager secretmanager.googleapis.com
Spanner spanner.googleapis.com
Vertex AI aiplatform.googleapis.com
Vertex AI Workbench インスタンス notebooks.googleapis.com

リソースタイプごとの適用の例外

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 権限が顧客アカウントに付与されている場合にのみ表示されます。

次のステップ

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

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