Как мне перечислить всех пользователей IAM для моего Google Cloud Project
Я хотел бы иметь возможность перечислять всех пользователей и учетные записи служб, связанные с моими проектами (желательно с gcloud
Инструмент CLI, но с удовольствием сделаю вызов API, если потребуется).
Я могу легко перечислить все учетные записи служб, связанные с проектом, используя это, но как можно также перечислить всех пользователей? Я бы ожидал что-то вроде следующего, но я не вижу ничего в документе:
gcloud beta iam users list
7 ответов
Список всех учетных записей служб в проекте
Следующая команда выводит список всех учетных записей служб, связанных с проектом:
$ gcloud iam service-accounts list
NAME EMAIL
Compute Engine default service account 12345678-compute@developer.gserviceaccount.com
dummy-sa-1 dummy-sa-1@MY_PROJECT.iam.gserviceaccount.com
Перечислите все учетные записи пользователей и служб в проекте с их ролями IAM
Если вы хотите перечислить всех пользователей / учетных записей служб, которым предоставлены роли IAM в указанном проекте, вы можете использовать эту команду:
$ gcloud projects get-iam-policy MY_PROJECT
bindings:
- members:
- serviceAccount:12345678-compute@developer.gserviceaccount.com
- user:alice@foobar.com
role: roles/editor
- members:
- user:you@yourdomain.com
- user:someoneelse@yourdomain.com
role: roles/owner
etag: ARBITRARY_ETAG_HERE
version: 1
Форматирование вывода
gcloud
поддерживает форматирование вывода как json
и множество других настроек по мере необходимости, которые в некоторых случаях проще анализировать или распечатывать только ту информацию, которая вам нужна.
Примеры:
# Prints the output as json instead of the default yaml format
$ gcloud projects get-iam-policy MY_PROJECT --format=json
# Display just the bindings in json format
$ gcloud projects get-iam-policy MY_PROJECT --format='json(bindings)'
# Display the bindings in a flattened format
$ $ gcloud projects get-iam-policy MY_PROJECT --format='flattened(bindings)'
список учетных записей служб
$ gcloud iam service-accounts list
список участников ролей для проекта
$ gcloud projects get-iam-policy [project]
добавить / повлиять на пользователя на роль
$ gcloud projects add-iam-policy-binding [project] \
--member="user:name@gmail.com" \
--role="roles/iam.serviceAccountUser"
Удалить пользователя:
$ gcloud projects remove-iam-policy-binding [project] \
--member="user:name@gmail.com" \
--role="roles/iam.serviceAccountUser"
добавить / изменить группу google к роли
$ gcloud projects add-iam-policy-binding [project] \
--member="group:my_group@googlegroups.com" \
--role="roles/storage.admin"
Следующая команда может дать четкое представление о ЧЛЕНАХ вашего проекта в учетной записи GCP:gcloud projects get-iam-policy PROJECT_ID --flatten="bindings[].members" --format="table(bindings.members)"
Вы можете использовать search-all-iam-policies для вывода списка всех политик IAM для проекта / папки / организации и поиска пользователей:
$ gcloud beta asset search-all-iam-policies --scope=projects/123 | grep user:
Это покажет вам не только пользователей, которым предоставлены роли в самом проекте, но и пользователей, которым предоставлены роли в субресурсах, таких как вычислительные экземпляры или наборы данных bigquery.
Вы можете изменить область действия на организации /123 для поиска по всей организации, если у вас есть cloudasset.assets.searchAllIamPolicies
разрешение на объем.
Более подробная информация в другом сообщении: Как перечислить, найти или выполнить поиск политик iam по сервисам (API), типам ресурсов и проектам на облачной платформе Google (GCP)?
Следующая команда выведет список всех не обслуживающих учетных записей из всей организации GCP:
gcloud organizations get-iam-policy ORGANIZATION_ID | grep user\: | sort | uniq
Получить идентификатор организации
gcloud organizations list
К сожалению, нет возможности перечислить всех пользователей, использующих
gcloud iam . . .
дерево команд; однако мы можем перечислить все учетные записи в рамках проекта Google Cloud Platform (GCP) () через
gcloud projects get-iam-policy
дерево команд вместо этого:
gcloud projects get-iam-policy $GCP_PROJECT_NAME \
--flatten="bindings[].members" \
--format="value(bindings.members)" \
--sort-by=bindings.members | uniq
#=>
. . .
serviceAccount:$SOME_SERVICE_ACCOUNT
. . .
user:$SOME_USER
. . .
который включает в себя передачу любых повторяющихся результатов, хотя
uniq
.
Примечание : приведенная выше команда гарантированно перечислит все учетные записи, связанные с
$GCP_PROJECT_NAME
потому что у каждой учетной записи должна быть хотя бы одна роль:
gcloud projects add-iam-policy-binding $ANOTHER_USER \
--member="user:${ANOTHER_USER}"
#=>
ERROR: (gcloud.projects.add-iam-policy-binding) argument --role: Must be specified.
При необходимости мы можем воспользоваться
.flatten()
,
.slice()
а также
.split()
прогнозы, чтобы избавиться от
serviceAccount:
а также
user:
префиксы:
gcloud projects get-iam-policy $GCP_PROJECT_NAME \
--flatten="bindings[].members" \
--format="value(bindings.members.split(':').slice(1:).flatten())" \
--sort-by=bindings.members | uinq
#=>
. . .
$SOME_SERVICE_ACCOUNT
. . .
$SOME_USER
. . .
Еще
gcloud
прогнозы здесь.
Мы также можем отфильтровать этот результат, используя
--filter
флаг:
gcloud projects get-iam-policy $GCP_PROJECT_NAME \
--filter="user" \
--flatten="bindings[].members" \
--format="value(bindings.members.split(':').slice(1:).flatten())" \
--sort-by=bindings.members | uniq
#=>
. . .
$SOME_USER
. . .
а также:
gcloud projects get-iam-policy $GCP_PROJECT_NAME \
--filter="serviceAccount" \
--flatten="bindings[].members" \
--format="value(bindings.members.split(':').slice(1:).flatten())" \
--sort-by=bindings.members | uniq
#=>
. . .
$SOME_SERVICE_ACCOUNT
. . .
Если вы ищете одного пользователя среди нескольких проектов, вы также можете использовать этот скрипт.
for i in $(gcloud projects list |awk '/PROJECT_ID:/ {print$2}');
do
echo ">> checking $i";
gcloud projects get-iam-policy $i |grep -i YOURUSER ;
done