我想使用调用 REST API 的 python 脚本在 GCP 上创建一个服务帐户,然后赋予它特定的角色 - 最好是一些角色these https://cloud.google.com/iam/docs/viewing-grantable-roles, 例如roles/logging.logWriter
.
首先我请求创建帐户 https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts/create效果很好,我可以在控制台/IAM 中看到该帐户。
其次我想给它这个角色this https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts/setIamPolicy似乎是正确的方法。然而,它并不接受roles/logging.logWriter
,说 HttpError 400,"Role roles/logging.logWriter is not supported for this resource.">
相反,如果我在控制台中设置所需的策略,则尝试getIamPolicy
方法(使用 gcloud 工具),我得到的只是响应etag: ACAB
,没有提及我设定的实际角色。因此我认为这些角色指的是不同的事物。
知道如何使用 API 为服务帐户编写角色/范围脚本吗?
您可以向 GCP 项目中的 GCP 服务帐号授予权限,而无需重写整个项目政策!
Use the gcloud projects add-iam-policy-binding ...
命令(docs https://cloud.google.com/sdk/gcloud/reference/projects/add-iam-policy-binding).
例如,给定环境变量GCP_PROJECT_ID
and 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}"
Output:
ROLE
roles/container.admin
(或更多角色,如果之前已授予这些角色)
Notes:
- 环境变量
GCP_SVC_ACC
预计包含服务帐户的电子邮件符号。
- 感谢这个答案 https://stackoverflow.com/a/50485552/145400以获得格式良好的读数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)