创建 GCP 服务帐户密钥时权限被拒绝
Permission denied when creating GCP Service Account Key
我创建了 Service Account A
并授予了角色 Service Account Admin
和 Service Account Key Admin
。我在 GCP 控制台中完成了这项工作。
Service Account A
的功能是使用 GCP Java SDK 以编程方式创建其他服务帐户。它成功创建了新的服务帐户,但是当它为新创建的服务帐户创建密钥时,我得到以下响应:
{
"code": 403,
"errors": [
{
"domain": "global",
"message": "Permission iam.serviceAccountKeys.create is required to perform this operation on service account projects/-/serviceAccounts/<new_service_account_name>@<project_id>.iam.gserviceaccount.com.",
"reason": "forbidden"
}
],
"message": "Permission iam.serviceAccountKeys.create is required to perform this operation on service account projects/-/serviceAccounts/<new_service_account_name>@<project_id>.iam.gserviceaccount.com.",
"status": "PERMISSION_DENIED"
}
我试过等待,看看我是否在创建服务帐户后过早尝试创建密钥,但等待时间没有任何变化。
Service Account A
可以为自己成功创建密钥,只是不能为它创建的其他服务帐户创建密钥。
我该如何解决?
您遇到以下三个问题之一:
Service Account A 在项目中实际上没有IAM角色Service Account Key Admin。使用 CLI 命令 gcloud projects get-iam-policy 并仔细检查。
您的代码使用了错误的标识。您认为您使用的是服务帐户,但 ADC(应用程序默认凭据)正在加载另一个身份,或者您的代码有误。
您分配了正确的角色,但分配的是服务帐户而不是项目。使用 CLI 命令 gcloud iam service-accounts get-iam-policy。如果您找到输出中列出的角色,则说明您在错误的位置分配了角色。请改用 CLI 命令 gcloud projects add-iam-policy-binding。
注意:还有第四种方法可以防止您创建服务帐户密钥。约束可能已启用:
我创建了 Service Account A
并授予了角色 Service Account Admin
和 Service Account Key Admin
。我在 GCP 控制台中完成了这项工作。
Service Account A
的功能是使用 GCP Java SDK 以编程方式创建其他服务帐户。它成功创建了新的服务帐户,但是当它为新创建的服务帐户创建密钥时,我得到以下响应:
{
"code": 403,
"errors": [
{
"domain": "global",
"message": "Permission iam.serviceAccountKeys.create is required to perform this operation on service account projects/-/serviceAccounts/<new_service_account_name>@<project_id>.iam.gserviceaccount.com.",
"reason": "forbidden"
}
],
"message": "Permission iam.serviceAccountKeys.create is required to perform this operation on service account projects/-/serviceAccounts/<new_service_account_name>@<project_id>.iam.gserviceaccount.com.",
"status": "PERMISSION_DENIED"
}
我试过等待,看看我是否在创建服务帐户后过早尝试创建密钥,但等待时间没有任何变化。
Service Account A
可以为自己成功创建密钥,只是不能为它创建的其他服务帐户创建密钥。
我该如何解决?
您遇到以下三个问题之一:
Service Account A 在项目中实际上没有IAM角色Service Account Key Admin。使用 CLI 命令 gcloud projects get-iam-policy 并仔细检查。
您的代码使用了错误的标识。您认为您使用的是服务帐户,但 ADC(应用程序默认凭据)正在加载另一个身份,或者您的代码有误。
您分配了正确的角色,但分配的是服务帐户而不是项目。使用 CLI 命令 gcloud iam service-accounts get-iam-policy。如果您找到输出中列出的角色,则说明您在错误的位置分配了角色。请改用 CLI 命令 gcloud projects add-iam-policy-binding。
注意:还有第四种方法可以防止您创建服务帐户密钥。约束可能已启用: