python - GCP 服务帐号跨项目角色和权限

标签 python google-cloud-platform google-compute-engine service-accounts

我开发了以下代码,用于自动启动/停止我的一些实例的任务,这些实例不需要一直运行,但需要在特定范围内运行。

这是我的代码:https://github.com/maartinpii/gcp-shst

我按照谷歌云平台指南创建了一个服务帐户(引用: https://cloud.google.com/iam/docs/understanding-service-accounts https://cloud.google.com/iam/docs/service-accounts#service_account_permissions ),因此我在项目 A 中创建了一个服务 SC-Auto ,然后在其他项目的 IAM 选项卡中创建它们并带来它是“项目所有者”角色。

注意:从我运行它的地方,我还执行了 gcloud auth service-account ...如上所述 Cross project management using service account

但是,当我执行代码时,出现以下情况:

  • 当执行它时,调用我创建服务帐户的项目时,效果很好。

  • 当执行它调用我设置项目所有者角色的任何其他项目时,它总是检索此错误

    回溯(最近一次调用最后一次): 文件“gcp-shst.py”,第 45 行,位于 响应 = 请求.execute() 文件“/usr/lib/python2.7/site-packages/googleapiclient/_helpers.py”,第 130 行,位于positional_wrapper 中 返回包裹(*args,**kwargs) 文件“/usr/lib/python2.7/site-packages/googleapiclient/http.py”,第 842 行,执行中 引发 HttpError(resp, content, uri=self.uri) googleapiclient.errors.HttpError:https://www.googleapis.com/compute/v1/projects//zones/southamerica-east1-a/instances//start?alt=json 返回“需要'compute.instances.start'权限对于“项目//区域/southamerica-east1-a/instances/”">

所以现在我想知道是否可以使用相同的服务帐户在我配置它并赋予其正确权限的所有项目中执行功能,或者我是否需要为每个项目创建一个不同的服务帐户,或者如果我做错事了...

预先感谢您的帮助!

最佳答案

经过调试和分析,我发现我无法使用服务帐户操作的项目的名称与其ID不同(引用: https://cloud.google.com/resource-manager/docs/creating-managing-projects#Identifying projects )

因此,当我用 ID 替换项目名称时,它工作正常。

关于python - GCP 服务帐号跨项目角色和权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51505029/

相关文章:

python - 将自定义 qemu 二进制文件与 libvirt 一起使用失败?

python - DataFrame.astype() 错误参数

python - Django 1.8 : ImproperlyConfigured: Module "django.contrib.auth.middleware" does not define a "SessionAuthenticationMiddleware" attribute/class

node.js - 调试 Node.js 中的内存不足错误

python - 在 GAE 上部署 cron 作业时出现内部服务器错误

google-cloud-platform - 从运行在 Google Cloud VM 实例上的应用程序访问 Google Secrets - 将 Cloud API 分配给 VM

python - OpenCV绘制轮廓(Jupyter Notebook)

MySQL 连接到 Google Cloud SQL 实例语法错误

google-cloud-platform - 如何使用容器镜像创建谷歌计算实例模板

github - Docker:从私有(private) GitHub 存储库中获取