使用Cloud KMS密钥创建Cloud Storage存储桶时的权限问题
GCP Cloud Storage使用CMEK创建存储桶权限问题解决
错误信息
The service-XXXXX345XXXX@gs-project-accounts.iam.gserviceaccount.com service account does not have the 'cloudkms.cryptoKeyEncrypterDecrypter' role.Verify that the service account has permission to encrypt/decrypt with the selected key. You need permissions for this action. Required permission(s): projects/test/locations/europe-west2/keyRings/integrations-test-data/cryptoKeys/integrations-test-data All of cloudkms.cryptoKeys.getIamPolicy and cloudkms.cryptoKeys.setIamPolicy
问题1:该服务账号归属何处?
这个服务账号是Cloud Storage的项目级服务账号,归属你当前正在创建存储桶的GCP项目。账号格式为service-[项目编号]@gs-project-accounts.iam.gserviceaccount.com,是GCP自动为Cloud Storage服务生成的,用于代表Storage服务执行与CMEK相关的加密、解密操作。
问题2:如何为该服务账号添加权限以解决此问题?
前提说明
错误中提到的cloudkms.cryptoKeys.getIamPolicy和cloudkms.cryptoKeys.setIamPolicy权限,是你当前登录控制台的操作账号需要具备的权限,确保你拥有KMS密钥的IAM编辑权限(比如roles/cloudkms.admin或roles/owner角色),否则无法完成后续权限添加操作。
方法1:通过Cloud控制台操作
- 打开Cloud KMS控制台,定位到错误信息中指定的密钥:
projects/test/locations/europe-west2/keyRings/integrations-test-data/cryptoKeys/integrations-test-data - 进入该密钥的「权限」标签页
- 点击「添加权限」,在「新成员」输入框中填入目标服务账号:
service-XXXXX345XXXX@gs-project-accounts.iam.gserviceaccount.com - 在「角色」下拉列表中搜索并选择Cloud KMS CryptoKey Encrypter/Decrypter(对应权限
cloudkms.cryptoKeyEncrypterDecrypter) - 点击「保存」完成权限配置
方法2:通过gcloud命令行操作
执行以下命令为服务账号添加对应角色(替换命令中的占位符为实际值):
gcloud kms keys add-iam-policy-binding integrations-test-data \ --location europe-west2 \ --keyring integrations-test-data \ --member serviceAccount:service-XXXXX345XXXX@gs-project-accounts.iam.gserviceaccount.com \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
内容的提问来源于stack exchange,提问作者SRJ
相关产品推荐
相关产品推荐

