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

Ven*_*ius 4 google-app-engine google-cloud-platform google-cloud-kms

这篇GCP文章建议使用两个独立的项目:一个用于密钥管理,另一个用于加密/解密.

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

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

小智 8

这是可能的!您可以在不同项目中添加具有主体(成员)和资源的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
Run Code Online (Sandbox Code Playgroud)

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