我想创建使用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 为服务帐户编写角色/范围的脚本吗?
我已经在Google Cloud Console中创建了一个服务帐户并选择了角色Storage/ Storage Admin(即,完全控制GCS资源)。
gcloud projects get-iam-policy my_project似乎表明实际上已选择了该角色:
- members:
- serviceAccount:my_sa@my_project.iam.gserviceaccount.com
role: roles/storage.admin
- members:
- serviceAccount:my_sa@my_project.iam.gserviceaccount.com
role: roles/storage.objectAdmin
- members:
- serviceAccount:my_sa@my_project.iam.gserviceaccount.com
role: roles/storage.objectCreator
Run Code Online (Sandbox Code Playgroud)
并且文档清楚地表明角色roles/storage.admin包含权限storage.objects.*(以及storage.buckets.*)。
但是,当我尝试将该服务帐户与适用于Python的Google Cloud Storage客户端库结合使用时,会收到以下错误消息:
my_sa@my_project.iam.gserviceaccount.com没有对my_project / my_bucket的storage.objects.get访问权限。
那么,为什么所选角色在这种情况下不够用?
python google-cloud-storage service-accounts google-cloud-platform
在 Google Cloud Platform (GCP) 中,您只能通过调用 getIamPolicy(gcloud 中的 get-iam-policy)获取特定资源的 IAM 策略。
是否可以列出、搜索、列出、搜索或查找跨资源、服务或项目的 IAM 策略?
这是回答以下问题所必需的:
google-cloud-platform gcloud google-iam google-cloud-iam google-cloud-resource-manager