GCP 服务帐户角色和权限跨项目
GCP Service Accounts roles & permissions cross project
我已经开发了以下代码来自动执行我的一些实例的 start/stop 任务,这些实例不需要一直 运行 而是在特定范围内。
所以这是我的代码:https://github.com/maartinpii/gcp-shst
我按照 google 云平台指南(参考:https://cloud.google.com/iam/docs/understanding-service-accounts https://cloud.google.com/iam/docs/service-accounts#service_account_permissions)创建了一个服务帐户,所以我在项目 A 中创建了一个服务 SC-Auto,然后在 IAM 选项卡中创建了它们其他项目并赋予它 "Project Owner" 角色。
注意:从我所在的位置 运行 我还执行了 gcloud auth 服务帐户 ... 如前所述
然而,当我执行我的代码时,我遇到了以下情况:
当执行它时从我创建服务帐户的地方调用项目时效果很好。
当执行它调用我设置项目所有者角色的任何其他项目时,它总是检索此错误
回溯(最近调用最后):
文件 "gcp-shst.py",第 45 行,位于
响应 = request.execute()
文件“/usr/lib/python2.7/site-packages/googleapiclient/_helpers.py”,第 130 行,在 positional_wrapper 中
return 包装(*args,**kwargs)
文件“/usr/lib/python2.7/site-packages/googleapiclient/http.py”,第 842 行,在执行中
提高 HttpError(响应,内容,uri=self.uri)
googleapiclient.errors.HttpError: https://www.googleapis.com/compute/v1/projects//zones/southamerica-east1-a/instances//start?alt=json returned "Required 'compute.instances.start' permission for 'projects//zones/southamerica-east1-a/instances/'">
所以现在我想知道是否可以使用相同的服务帐户在我配置它的所有项目中执行功能并赋予它正确的权限,或者我是否需要为每个项目创建不同的服务帐户或者如果我做错了什么...
在此先感谢您的帮助!
调试和分析后,我发现我无法使用服务帐户操作的项目有一个 Name,它与 ID(参考:https://cloud.google.com/resource-manager/docs/creating-managing-projects#Identifying projects)
所以当我用 ID 替换项目名称时它工作正常。
我已经开发了以下代码来自动执行我的一些实例的 start/stop 任务,这些实例不需要一直 运行 而是在特定范围内。
所以这是我的代码:https://github.com/maartinpii/gcp-shst
我按照 google 云平台指南(参考:https://cloud.google.com/iam/docs/understanding-service-accounts https://cloud.google.com/iam/docs/service-accounts#service_account_permissions)创建了一个服务帐户,所以我在项目 A 中创建了一个服务 SC-Auto,然后在 IAM 选项卡中创建了它们其他项目并赋予它 "Project Owner" 角色。
注意:从我所在的位置 运行 我还执行了 gcloud auth 服务帐户 ... 如前所述
然而,当我执行我的代码时,我遇到了以下情况:
当执行它时从我创建服务帐户的地方调用项目时效果很好。
当执行它调用我设置项目所有者角色的任何其他项目时,它总是检索此错误
回溯(最近调用最后): 文件 "gcp-shst.py",第 45 行,位于 响应 = request.execute() 文件“/usr/lib/python2.7/site-packages/googleapiclient/_helpers.py”,第 130 行,在 positional_wrapper 中 return 包装(*args,**kwargs) 文件“/usr/lib/python2.7/site-packages/googleapiclient/http.py”,第 842 行,在执行中 提高 HttpError(响应,内容,uri=self.uri) googleapiclient.errors.HttpError: https://www.googleapis.com/compute/v1/projects//zones/southamerica-east1-a/instances//start?alt=json returned "Required 'compute.instances.start' permission for 'projects//zones/southamerica-east1-a/instances/'">
所以现在我想知道是否可以使用相同的服务帐户在我配置它的所有项目中执行功能并赋予它正确的权限,或者我是否需要为每个项目创建不同的服务帐户或者如果我做错了什么...
在此先感谢您的帮助!
调试和分析后,我发现我无法使用服务帐户操作的项目有一个 Name,它与 ID(参考:https://cloud.google.com/resource-manager/docs/creating-managing-projects#Identifying projects)
所以当我用 ID 替换项目名称时它工作正常。