如何通过API获取服务帐户在GCP中对项目和组织的所有角色/权限

时间:2020-02-26 14:35:40

标签: google-cloud-platform google-cloud-iam

我有一个属于项目的服务帐户。它具有在项目级别设置的某些角色/权限以及在组织级别设置的某些角色/权限。

我需要获取授予该服务帐户的所有权限/角色的列表。

在搜索中,我发现“ Identity and Access Management (IAM) API”文档具有API,该API将列出有权访问服务帐户的所有资源以及设置为资源的角色。我需要的是相反的。我想获得服务帐户在其他资源(在我的情况下是项目和组织)上具有的所有角色。

在该文档中提到“ projects.serviceAccounts.getIamPolicy()方法不会返回该服务帐户可以访问的资源。要查看服务帐户是否可以访问资源,请在目标资源上调用getIamPolicy方法例如,要查看项目的拨款,请调用projects.getIamPolicy方法。”但是要获得组织级别的权限,服务帐户无权执行API调用。

是否还有其他方法可以使服务帐户在项目和组织中拥有所有角色。

2 个答案:

答案 0 :(得分:2)

是否还有其他方法可以使服务帐户在 项目和组织。

这时,您将需要手动检查所有资源。

服务帐户是一个身份。可以在您的项目/组织中,但在其他项目/组织中,向一个身份授予资源权限。其中包括诸如Cloud Storage对象,KMS密钥之类的资源以及诸如Cloud Run之类的服务等。这些许可权是在资源级别而不是身份级别进行跟踪的。

通常,管理员在项目级别授予IAM成员权限(角色)。但是,也可以在资源级别(即单个云存储对象或KMS密钥)授予权限。检查项目/组织权限不会显示资源级别的权限(项目只是另一个资源)。

答案 1 :(得分:2)

您可以使用search-all-iam-policies搜索跨服务,资源类型,项目,文件夹或组织内的项目的所有IAM策略。

要了解服务帐户在组织中具有哪些角色:

gcloud beta asset search-all-iam-policies --scope=organizations/123 --query="policy:123-compute@developer.gserviceaccount.com"

要了解更多信息,请参阅其他文章: How to list, find, or search iam policies across services (APIs), resource types, and projects in google cloud platform?