您是否可以跨具有服务角色的项目共享Google Cloud KMS密钥?

时间:2018-03-10 21:18:12

标签: google-app-engine google-cloud-platform google-cloud-kms

This GCP article建议使用两个单独的项目:一个用于密钥管理,另一个用于加密/解密。

这似乎是一个适用于用户角色的设置,但不适用于服务角色作为服务角色绑定到它所属的项目。我错过了什么吗?

实际上有一种方法可以创建一个角色(在项目1中,比如项目1),创建KMS密钥,然后有一个服务角色(在项目2中,可以说是项目2),可以访问所述密钥在运行时进行解密?

1 个答案:

答案 0 :(得分:7)

有可能!您可以使用主体(成员)和&添加IAM策略。不同项目中的资源。

要授予对svcacct@project2.iam.gserviceaccount.com中特定密钥的project1解密权限,您可以例如:

$ KMS_KEY_RESOURCE_NAME=projects/project1/locations/${location}/keyRings/${keyring_name}/cryptoKeys/${crypto_key_name}
$ gcloud kms keys add-iam-policy-binding \
  --location ${location} ${KMS_KEY_RESOURCE_NAME} \
  --member serviceAccount:svcacct@project2.iam.gserviceaccount.com \
  --role roles/cloudkms.cryptoKeyDecrypter

您也可以将svcacct@project2.iam.gserviceaccount.com直接粘贴到“权限”下的“添加成员”文本框中,以便在http://console.cloud.google.com/iam-admin/kms?project=project1下选择的KeyRing或密钥