[英]Adding roles to service accounts on Google Cloud Platform using REST API
我想用一个python脚本调用REST API来创建GCP服务帐户,然后赋予它特定的角色-理想一些的这些,比如roles/logging.logWriter
。
首先,我请求创建一个工作正常的帐户,我可以在控制台/IAM 中看到该帐户。
其次,我想给它这个角色, 这似乎是正确的方法。 但是,它不接受roles/logging.logWriter
/logging.logWriter,说 HttpError 400, "Role roles/logging.logWriter is not supported for this resource.">
/logging.logWriter "Role roles/logging.logWriter is not supported for this resource.">
相反,如果我在控制台中设置所需的策略,然后尝试getIamPolicy
方法(使用 gcloud 工具),我得到的只是响应etag: ACAB
,没有提及我设置的实际角色。 因此我认为这些角色指的是不同的东西。
知道如何使用 API 为服务帐户编写角色/范围的脚本吗?
您似乎正在尝试在服务帐户上设置角色(作为资源)。 这是用于设置谁可以使用服务帐户。
如果您想为服务帐户(作为身份)赋予项目及其资源的特定角色,请参阅此方法: https : //cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy
您可以为 GCP 项目中的 GCP 服务帐号授予权限,而无需重写整个项目策略!
gcloud projects add-iam-policy-binding ...
使用gcloud projects add-iam-policy-binding ...
命令 ( docs )。
例如,给定环境变量GCP_PROJECT_ID
和GCP_SVC_ACC
,以下命令将container.admin
角色中的所有权限授予所选服务帐户:
gcloud projects add-iam-policy-binding ${GCP_PROJECT_ID} \
--member=serviceAccount:${GCP_SVC_ACC}
--role=roles/container.admin
要查看您所做的工作:
$ gcloud projects get-iam-policy $GCP_PROJECT_ID \
--flatten="bindings[].members" \
--format='table(bindings.role)' \
--filter="bindings.members:${GCP_SVC_ACC}"
输出:
ROLE
roles/container.admin
(或更多角色,如果之前授予过这些角色)
笔记:
GCP_SVC_ACC
应包含服务帐户的电子邮件符号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.