使用 REST API 向 Google Cloud Platform 上的服务帐户添加角色

Rob*_*cok 13 rest amazon-iam service-accounts google-cloud-platform

我想创建使用Python脚本调用REST API GCP服务帐户,然后赋予它特定的角色-理想一些的这些,比如roles/logging.logWriter

首先,我请求创建一个工作正常的帐户,我可以在控制台/IAM 中看到该帐户。
其次,我想给它这个角色,似乎是正确的方法。但是,它不接受roles/logging.logWriter,说 HttpError 400,"Role roles/logging.logWriter is not supported for this resource.">
相反,如果我在控制台中设置了所需的策略,然后尝试该getIamPolicy方法(使用 gcloud 工具),我得到的只是 response etag: ACAB,没有提及我设置的实际角色。因此我认为这些角色指的是不同的东西。

知道如何使用 API 为服务帐户编写角色/范围的脚本吗?

Jan*_*cke 45

您可以向 GCP 项目中的 GCP 服务帐号授予权限,而无需重写整个项目政策!

使用gcloud projects add-iam-policy-binding ...该命令(文档)。

例如,给定环境变量GCP_PROJECT_IDGCP_SVC_ACC以下命令,将container.admin角色中的所有权限授予所选服务帐户:

gcloud projects add-iam-policy-binding ${GCP_PROJECT_ID} \
    --member=serviceAccount:${GCP_SVC_ACC} \
    --role=roles/container.admin
Run Code Online (Sandbox Code Playgroud)

要回顾您所做的事情:

$ gcloud projects get-iam-policy $GCP_PROJECT_ID \
    --flatten="bindings[].members" \
    --format='table(bindings.role)' \
    --filter="bindings.members:${GCP_SVC_ACC}"
Run Code Online (Sandbox Code Playgroud)

输出:

ROLE
roles/container.admin
Run Code Online (Sandbox Code Playgroud)

(或更多角色,如果之前已授予这些角色)

笔记:

  • 环境变量GCP_SVC_ACC应包含服务帐户的电子邮件符号。
  • 感谢这个答案的格式良好的读数。

  • 看起来第 2 行的第一个“gcloudprojects”命令示例中缺少尾部反斜杠。 (2认同)

小智 7

您似乎正在尝试在服务帐户上设置角色(作为资源)。这是用于设置谁可以使用服务帐户。

如果您想为服务帐户(作为身份)赋予项目及其资源的特定角色,请参阅此方法:https : //cloud.google.com/resource-manager/reference/rest/v1/projects/setIamPolicy

  • 没有; 放弃并在aws上走得更远 (3认同)
  • 应该非常小心,该页面以以下内容开头:为指定项目设置 IAM 访问控制策略。**覆盖任何现有策略。** (2认同)
  • 使用“projects add-iam-policy-binding”似乎是针对给定问题的风险更小、更可行、更易于使用的解决方案。我添加了新答案,请查看! (2认同)