Как получить все роли / разрешения, которые есть у сервисного аккаунта для проекта и организации в GCP через API

У меня есть сервисный аккаунт, принадлежащий проекту. У него есть некоторые роли / разрешения, установленные на уровне проекта, а также некоторые роли / разрешения, установленные на уровне организации.

Мне нужно получить список всех разрешений / ролей, предоставленных учетной записи службы.

При поиске я обнаружил "Управление идентификацией и доступом (IAM) API », в которой есть API, в котором перечислены все ресурсы, имеющие доступ к учетной записи службы, и роли, установленные для ресурсов. Мне нужно обратное. Я хочу получить все роли, которые имеет учетная запись службы на других ресурсах (в моем случае проект и организация).

В этом документе упоминается, что «метод projects.serviceAccounts.getIamPolicy () не возвращает, к каким ресурсам у учетной записи службы есть доступ. Чтобы узнать, имеет ли учетная запись службы доступ к ресурсу, вызовите метод getIamPolicy для целевого ресурса. Например, , чтобы просмотреть гранты для проекта, вызовите метод projects.getIamPolicy. " Но для получения разрешений на уровне организации у учетной записи службы нет разрешения на вызов API.

Есть ли другой способ получить все роли учетной записи службы в проекте и организации.


person Johnny Cage    schedule 26.02.2020    source источник


Ответы (2)


Есть ли другой способ получить все роли учетной записи службы в проекте и организации.

В это время вам нужно будет вручную проверять все ресурсы повсюду.

Учетная запись службы - это личность. Удостоверению могут быть предоставлены разрешения на ресурсы как в вашем проекте / организации, так и в других проектах / организациях. Сюда входят такие ресурсы, как объекты облачного хранилища, ключи KMS, такие службы, как Cloud Run и т. Д. Эти разрешения отслеживаются на уровне ресурсов, но не на уровне удостоверений.

Обычно администраторы предоставляют члену IAM разрешения (роли) на уровне проекта. Однако разрешения также могут быть предоставлены на уровне ресурса, то есть отдельного объекта облачного хранилища или ключа KMS. Проверка разрешений проекта / организации не покажет разрешения на уровне ресурсов (проекты - это просто еще один ресурс).

person John Hanley    schedule 26.02.2020
comment
Спасибо. Я все еще думаю о том, как связать все роли с учетной записью службы. Мне нужно получить список ролей, которые учетная запись службы имеет в проекте и организации. Я могу запустить projects.getIamPolicy (), который возвращает все удостоверения, у которых есть доступ к проекту, и может фильтровать требуемый идентификатор службы. Я не могу выполнить organization.getIamPolicy (), поскольку у учетной записи службы нет разрешения на вызов этого API. Можете ли вы предложить мне способ выполнить эту задачу? - person Johnny Cage; 26.02.2020
comment
Вам необходимо разрешение на доступ к ресурсу организации. Эта ссылка объясняет больше и содержит пример кода: cloud.google.com/resource-manager/docs/access-control-org - person John Hanley; 26.02.2020
comment
Итак, в настоящее время это единственный способ выполнить эту задачу? - person Johnny Cage; 27.02.2020
comment
Я просто хочу получить все разрешения, которые данная сервисная учетная запись имеет в организации. Нет ли другого способа получить его со стороны учетной записи службы вместо получения разрешений для всех учетных записей / ресурсов, которые имеют доступ к организации? Метод organization.getIamPolicy () предоставляет список всех учетных записей / пользователей / ресурсов, которые имеют доступ к этой организации, что не требуется. - person Johnny Cage; 27.02.2020
comment
Ресурсы содержат разрешения для удостоверения. Вам необходимо разрешение на доступ к ресурсу, чтобы получить эту информацию. Удостоверение не знает, какие разрешения у него есть на других ресурсах. Разрешения назначаются ресурсу (организации, проекту, объекту и т. Д.), А не идентификатору. Исключение составляют случаи, когда удостоверение также является ресурсом, предоставляющим разрешение другим удостоверениям. - person John Hanley; 27.02.2020

Вы можете использовать search-all-iam-policies для поиска всех политик IAM по службам, типам ресурсов, проектам в рамках проекта, папки или организации.

Чтобы узнать, какие роли выполняет учетная запись службы в организации:

gcloud asset search-all-iam-policies --scope=organizations/123 --query="policy:[email protected]"

Чтобы узнать больше, см. Другой пост: Как составить список, найти или выполнить поиск политик iam по службам (API), типам ресурсов и проектам на облачной платформе Google (GCP)?

person Circy    schedule 05.03.2020