谷歌云平台:如何通过REST调用在所有GCP资源中获取为特定身份分配的权限



GCP IAM:在IAM中,访问资源的权限不会直接授予最终用户。相反,权限被分组为角色,并且角色被授予经过身份验证的成员。IAM策略定义并强制将哪些角色授予哪些成员,并且此策略附加到资源参考编号:https://cloud.google.com/iam/docs/overview

因此,基本上,谷歌云资源的访问控制是由IAM策略管理的。IAM策略附加到资源。

使用云资源管理器API我们可以检索策略并检查分配给用户的权限,但这是以资源为中心的。可以检索组织、文件夹、项目等的策略。示例:https://cloud.google.com/resource-manager/reference/rest/v1/organizations/getIamPolicy

云资产清单:具有API来搜索所有iam policies。使用Query Parameter,它有一个用户过滤器,但它支持可以在其上分配iam polciy的资源子集API:https://cloud.google.com/asset-inventory/docs/reference/rest/v1/TopLevel/searchAllIamPolicies参考:

  • https://cloud.google.com/asset-inventory/docs/supported-asset-types
  • https://cloud.google.com/iam/docs/resource-types-with-policies

问题:是否有任何方法可以获取所有GCP资源中授予标识的所有权限,而不是检查每个资源的IAM策略?

基本上是在寻找GCP中授予身份的所有权限的合并视图。问题是为了理解在单个资源上分配给用户的权限,使用API,我们必须获取所有资源策略并检查它们的绑定

到目前为止,还没有一个gcloud或API调用可以像您的问题中解释的那样,轻松地检查授予特定资源(如用户、服务帐户等(的权限。如您所知,您可以使用相关的gcloud命令来搜索分配给每个不同资源的特定角色,例如:

gcloud asset search-all-iam-policies --scope='projects/[YOUR-PROJECT-ID]' --query='policy:[YOUR-USERNAME]@[YOUR-DOMAIN]'

导致例如:

---
policy:
bindings:
- members:
- projectOwner:[PROJECT-ID]
- user:[YOUR-USERNAME]@[YOUR-DOMAIN]
role: roles/bigquery.dataOwner
project: projects/[PROJECT-NUMBER]
resource: //bigquery.googleapis.com/projects/[PROJECT-ID]/datasets/[DATASET-NAME]
---
policy:
bindings:
- members:
- user:[YOUR-USERNAME]@[YOUR-DOMAIN]
role: projects/[PROJECT-ID]/roles/[CUSTOM-ROLE-NAME]
- members:
- user:[ANOTHER-USERNAME]@[YOUR-DOMAIN]
- user:[YOUR-USERNAME]@[YOUR-DOMAIN]
role: roles/owner
project: projects/[PROJECT-NUMBER]

根据这些响应,解析与分配给每个资源的role:相对应的字段,以查看使用相关的gcloud命令将哪些权限分配给该特定角色:

gcloud iam roles describe [CHANGE-FOR-ROLE-(e.g. roles/owner)] --project=[PR0JECT-ID]

并且检查与CCD_ 2字段相对应的输出。

因此,我建议您在GCP的公共问题跟踪器上加入并遵循此功能请求,以检查未来实施此问题的可行性(或不可行性(。

最新更新