Google Cloud Platform:如何通过 REST 调用跨所有 GCP 资源获取为特定身份分配的权限
Google Cloud Platform: How to fetch permissions assigned for particular Identity across all GCP resources via REST call
GCP IAM: 在 IAM 中,访问资源的权限不会直接授予最终用户。相反,权限被分组为角色,并且角色被授予经过身份验证的成员。 IAM 策略定义并强制执行向哪些成员授予哪些角色,并且此策略附加到资源
参考:https://cloud.google.com/iam/docs/overview
所以基本上,Google 云资源的访问控制由 IAM 策略管理。 IAM 策略已附加到资源。
使用云资源管理器API,我们可以检索策略并检查分配给用户的权限,但它是以资源为中心的。可以检索组织、文件夹、项目等的策略。
示例:https://cloud.google.com/resource-manager/reference/rest/v1/organizations/getIamPolicy
Cloud asset inventory: 有一个API来搜索所有的iam策略。使用查询参数,它有一个用户过滤器,但它支持可以分配 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 command 来搜索分配给每个不同资源的特定角色,例如:
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 command:
将哪些权限分配给该特定角色
gcloud iam roles describe [CHANGE-FOR-ROLE-(e.g. roles/owner)] --project=[PR0JECT-ID]
并检查对应于 includedPermissions:
字段的输出。
因此,我会建议您星标并关注此Feature Request on GCP's Public Issue Tracker以检查未来实施此问题的可行性。
GCP IAM: 在 IAM 中,访问资源的权限不会直接授予最终用户。相反,权限被分组为角色,并且角色被授予经过身份验证的成员。 IAM 策略定义并强制执行向哪些成员授予哪些角色,并且此策略附加到资源 参考:https://cloud.google.com/iam/docs/overview
所以基本上,Google 云资源的访问控制由 IAM 策略管理。 IAM 策略已附加到资源。
使用云资源管理器API,我们可以检索策略并检查分配给用户的权限,但它是以资源为中心的。可以检索组织、文件夹、项目等的策略。 示例:https://cloud.google.com/resource-manager/reference/rest/v1/organizations/getIamPolicy
Cloud asset inventory: 有一个API来搜索所有的iam策略。使用查询参数,它有一个用户过滤器,但它支持可以分配 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 command 来搜索分配给每个不同资源的特定角色,例如:
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 command:
gcloud iam roles describe [CHANGE-FOR-ROLE-(e.g. roles/owner)] --project=[PR0JECT-ID]
并检查对应于 includedPermissions:
字段的输出。
因此,我会建议您星标并关注此Feature Request on GCP's Public Issue Tracker以检查未来实施此问题的可行性。