Google Cloud Platform: как получить разрешения, назначенные для конкретной личности, для всех ресурсов GCP с помощью вызова REST

GCP IAM: в IAM разрешение на доступ к ресурсу не предоставляется напрямую конечному пользователю. Вместо этого разрешения группируются по ролям, и роли предоставляются прошедшим проверку участникам. Политика IAM определяет и применяет, какие роли предоставляются каким участникам, и эта политика прикреплена к ресурсу Ссылка: https://cloud.google.com/iam/docs/overview

Таким образом, контроль доступа к ресурсам Google Cloud управляется политиками IAM. К ресурсу прикреплена политика IAM.

С помощью API диспетчера облачных ресурсов мы можем получить политику и проверить разрешения, назначенные пользователю, но это ресурсо-ориентированный интерфейс. Можно получить политику для организации, папки, проектов и т. Д. Пример: https://cloud.google.com/resource-manager/reference/rest/v1/organizations/getIamPolicy.

Инвентаризация облачных ресурсов: имеет API для поиска по всем политикам iam. С помощью параметра запроса у него есть фильтр для пользователя, но он поддерживает подмножество ресурсов, на которых iam polciy может быть назначен API:https://cloud.google.com/asset-inventory/docs/reference/rest/v1/TopLevel/searchAllIamPolicies Ссылка:

Вопрос: Есть ли способ получить все разрешения, предоставленные идентификатору для всех ресурсов GCP, вместо проверки политики IAM для каждого ресурса?

В основном ищу консолидированное представление всех разрешений, предоставленных удостоверению в GCP. Проблема заключается в понимании разрешений, назначенных пользователю для одного ресурса, с помощью API. Мы должны получить все политики ресурсов и проверить их привязки.

1 ответ

Решение

На данный момент нет вызова 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]

и проверьте вывод, соответствующий includedPermissions: поля.

Поэтому я рекомендую вам снимется и проследуйте Feature Request на GCP Общественной Issue Tracker для проверки возможности (или нет) этого вопроса, который будет реализован в будущем.

Другие вопросы по тегам