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 Ссылка:
- https://cloud.google.com/asset-inventory/docs/supported-asset-types
- https://cloud.google.com/iam/docs/resource-types-with-policies
Вопрос: Есть ли способ получить все разрешения, предоставленные идентификатору для всех ресурсов 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 для проверки возможности (или нет) этого вопроса, который будет реализован в будущем.