Получение информации о субъектах в системе управления доступом Yandex Cloud
Yandex Identity and Access Management предоставляет функциональность получения информации о субъектах для поиска и получения атрибутов различных типов субъектов системы управления доступом Yandex Cloud в организации.
Роли, необходимые для получения информации о субъектах, зависят от целевого типа субъектов:
- Пользователи — роль
organization-manager.users.viewerили выше на организацию. - Сервисные аккаунты — роль
iam.auditorили выше на организацию. - Группы пользователей, системные и публичные группы — роль
organization-manager.groups.viewerили выше на организацию. - Пользователи с аккаунтом на Яндексе, которые были приглашены в организацию, но еще не приняли приглашение — роль
organization-manager.users.viewerили выше на организацию.
Получить список субъектов
Чтобы получить список субъектов организации:
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
-
Посмотрите описание команды CLI для получения списка субъектов организации:
yc iam subject-details list --help -
Получите список доступных организаций:
yc organization-manager organization listРезультат:
+----------------------+-----------------------------+-------------------------+--------+ | ID | NAME | TITLE | LABELS | +----------------------+-----------------------------+-------------------------+--------+ | bpf1smsil5q0******** | org1-technical-name | Organization One | | | bpf2c65rqcl8******** | org2-technical-name | Organization Two | | | bpfaidqca8vd******** | org3-technical-name | Organization Three | | +----------------------+-----------------------------+-------------------------+--------+В поле
IDскопируйте идентификатор нужной организации. -
Получите список субъектов:
yc iam subject-details list \ --organization-id <идентификатор_организации> \ --field-mask <список_атрибутов> \ --filter '(<фильтрующее_CEL-выражение>)' \ --limit <количество_субъектов> \ --format yamlГде:
-
--organization-id— идентификатор организации, список субъектов которой вы хотите получить. -
--field-mask— маска субъектов, то есть список атрибутов, которые вы хотите получить. Для разных типов субъектов доступны разные наборы атрибутов.Например, чтобы вывести в списке даты создания, адреса электронной почты и фамилии пользователей, укажите в этом параметре
created_at,user_account.email,user_account.family_name.Необязательный параметр. По умолчанию, независимо от значения параметра
--field-mask, в списке выводятся идентификаторы и типы субъектов. -
--filter— фильтрующее выражение на языке Common Expression Language (CEL) .Например, чтобы вывести только список локальных пользователей, в профилях которых заполнено поле
Электронная почтаи адрес электронной почты которых содержит имяivan, укажите в этом параметре:'(subject.type in [1] && has(subject.user_account.email) && subject.user_account.email.icontains("ivan"))'Примечание
Функция
icontainsпозволяет выполнять регистронезависимую проверку вхождения подстроки в строку.Необязательный параметр. По умолчанию фильтры к результатам не применяются.
-
--limit— ограничение на количество субъектов в списке с результатами. Необязательный параметр. По умолчанию —1000. -
--format— чтобы получить результат с атрибутами, отличными от значений по умолчанию, используйте формат выводаjsonилиyaml.
Результат:
- sub: ek09f4kjk3mk******** type: USER_ACCOUNT created_at: "2026-09-23T16:54:03.297124Z" user_account: family_name: Иванов email: Sergey-Ivanov@example.com - sub: ek0ogbhh6o3p******** type: USER_ACCOUNT created_at: "2026-09-23T16:55:42.318668Z" user_account: family_name: Сергеев email: IVANsergeev@example.com -
Воспользуйтесь методом REST API list для ресурса SubjectDetails или вызовом gRPC API SubjectDetailsService/List.
Чтобы получить определенные атрибуты субъектов, передайте их в поле field_mask. Чтобы нужным образом отфильтровать результаты, в поле filter передайте фильтрующее выражение на языке Common Expression Language (CEL)
Примеры
Получить список всех субъектов, созданных позднее определенной даты
Выполните команду:
yc iam subject-details list \
--organization-id bpf2c65rqcl8******** \
--field-mask created_at \
--filter '(subject.created_at >= timestamp("2026-09-01T00:00:00Z"))' \
--format yaml
Результат
- sub: aje7gcq7usen********
type: SERVICE_ACCOUNT
created_at: "2026-09-24T07:26:05.813707Z"
- sub: ek09f4kjk3mk********
type: USER_ACCOUNT
created_at: "2026-09-23T16:54:03.297124Z"
- sub: ek0ogbhh6o3p********
type: USER_ACCOUNT
created_at: "2026-09-23T16:55:42.318668Z"
Получить список с именами сервисных аккаунтов в определенных каталогах
Выполните команду:
yc iam subject-details list \
--organization-id bpf2c65rqcl8******** \
--field-mask name,service_account.folder.id \
--filter '(subject.service_account.folder.id in ["b1gkd6dks6i1********", "b1gfq9pe6rd2********"])' \
--format yaml
Результат
- sub: aje8ibek25c6********
type: SERVICE_ACCOUNT
name: sa-sd
service_account:
folder:
id: b1gkd6dks6i1********
- sub: ajepodjpcifj********
type: SERVICE_ACCOUNT
name: sa-lockbox
service_account:
folder:
id: b1gfq9pe6rd2********
- sub: ajet9uglmjir********
type: SERVICE_ACCOUNT
name: sample-sa
service_account:
folder:
id: b1gkd6dks6i1********
Получить список со статусами локальных пользователей, в профилях которых не указан номер телефона
Выполните команду:
yc iam subject-details list \
--organization-id bpf2c65rqcl8******** \
--field-mask status \
--filter '(subject.user_account.subject_container.container_type == 4 &&
!has(subject.user_account.phone_number))' \
--format yaml
Результат
- sub: aje3i1gq49n3********
type: USER_ACCOUNT
status: ACTIVE
- sub: ajejij9f440p********
type: USER_ACCOUNT
status: ACTIVE
- sub: ajejvne736i3********
type: USER_ACCOUNT
status: ACTIVE
- sub: ek09f4kjk3mk********
type: USER_ACCOUNT
status: SUSPENDED
Получить атрибуты отдельных субъектов
Чтобы получить атрибуты отдельных субъектов организации:
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
-
Посмотрите описание команды CLI для получения атрибутов отдельных субъектов организации:
yc iam subject-details get --help -
Получите информацию о субъектах:
yc iam subject-details get \ --subject-ids <список_идентификаторов> \ --field-mask <список_атрибутов> \ --filter '(<фильтрующее_CEL-выражение>)' \ --format yaml \ --organization-id <идентификатор_организации>Где:
-
--subject-ids— список идентификаторов субъектов, атрибуты которых вы хотите получить. Несколько значений указываются через запятую. Например:ek09f4kjk3mk********,ek0ogbhh6o3p********. -
--field-mask— маска субъектов, то есть список атрибутов, которые вы хотите получить. Для разных типов субъектов доступны разные наборы атрибутов.Например, чтобы получить адреса электронной почты и полные наборы данных о месте работы пользователей, укажите в этом параметре
user_account.email,user_account.job_info.Необязательный параметр. По умолчанию, независимо от значения параметра
--field-mask, в списке выводятся идентификаторы и типы субъектов. -
--filter— фильтрующее выражение на языке Common Expression Language (CEL) .Например, чтобы команда вывела только тех пользователей, в профилях которых заполнены поля в разделе
Организационная информация, укажите в этом параметре:'(has(subject.user_account.job_info))'Необязательный параметр. По умолчанию фильтры к результатам не применяются.
-
--format— чтобы получить результат с атрибутами, отличными от значений по умолчанию, используйте формат выводаjsonилиyaml. -
--organization-id— идентификатор организации, к которой относятся искомые субъекты.Необязательный параметр. Указывайте идентификатор организации в случаях, когда без него получить информацию невозможно.
Совет
Например, идентификатор организации необходим при попытке получить список групп, в которых состоит пользователь организации с аккаунтом на Яндексе. Необходимость явно указывать организацию связана с тем, что такой пользователь может состоять одновременно в нескольких разных организациях.
Результат:
- sub: ek09f4kjk3mk******** type: USER_ACCOUNT user_account: email: Sergey-Ivanov@example.com job_info: company_name: Top Company department: Accounting job_title: Senior Accountant employee_id: "456" - sub: ek0ogbhh6o3p******** type: USER_ACCOUNT user_account: email: IVANsergeev@example.com job_info: company_name: Top Company department: IT job_title: DevOps engineer employee_id: "123" -
Воспользуйтесь методом REST API batchGet для ресурса SubjectDetails или вызовом gRPC API SubjectDetailsService/BatchGet.
Чтобы получить определенные атрибуты субъектов, передайте их в поле field_mask. Чтобы нужным образом отфильтровать результаты, в поле filter передайте фильтрующее выражение на языке Common Expression Language (CEL)
Примеры
Получить список групп, участником которых является пользователь
Примечание
Чтобы получить список групп для пользователя с аккаунтом на Яндексе, передайте в команде идентификатор организации.
Выполните команду:
yc iam subject-details get \
--subject-ids ajei280a73vc******** \
--field-mask groups \
--organization-id bpf2c65rqcl8******** \
--format yaml
Результат
sub: ajei280a73vc********
type: USER_ACCOUNT
groups:
- id: ajeql2iqn9d1********
name: sample-group
type: EXPLICIT
- id: allUsers
name: All users
type: PUBLIC_ACCESS
- id: allAuthenticatedUsers
name: All authenticated users
type: PUBLIC_ACCESS
- id: group:organization:bpf2c65rqcl8********:users
name: All users in organization Test Organization
type: META
Получить все имеющиеся атрибуты пользователей
Выполните команду:
yc iam subject-details get \
--subject-ids aje3b3juqevc********,ek0ogbhh6o3p********,ajei280a73vc******** \
--field-mask created_at,status,name,last_authenticated_at,external_id,user_account \
--format yaml
Результат
- sub: aje3b3juqevc********
type: USER_ACCOUNT
created_at: "2025-08-03T18:38:44.195748Z"
status: ACTIVE
user_account:
preferred_username: sample-federated-user
subject_container:
id: bpfsuecgv39i********
name: sample-federation
container_type: SAML
last_id_proof_at: "2025-08-03T18:38:44.195748Z"
modified_at: "2025-08-03T18:38:44.195748Z"
external_id: sample-federated-user
- sub: ek0ogbhh6o3p********
type: USER_ACCOUNT
created_at: "2026-09-23T16:55:42.318668Z"
status: ACTIVE
name: Иван Сергеев
user_account:
given_name: Иван
family_name: Сергеев
preferred_username: ivanserg@example.com
email: IVANsergeev@example.com
subject_container:
id: ek0o6g0irskn********
name: sample-pool
container_type: USERPOOL
job_info:
company_name: Top Company
department: IT
job_title: DevOps engineer
employee_id: "123"
modified_at: "2026-09-23T19:48:49.112910Z"
- sub: ajei280a73vc********
type: USER_ACCOUNT
created_at: "2020-01-23T06:21:07Z"
status: ACTIVE
name: Алексей И.
last_authenticated_at: "2026-09-24T05:40:00Z"
user_account:
given_name: Алексей
family_name: Иванов
preferred_username: aivan********
email: aivan********@yandex.ru
phone_number: "+79876******"
subject_container:
id: yandex
name: yandex
container_type: PASSPORT
last_id_proof_at: "2026-09-24T05:42:45.551123Z"
modified_at: "2026-09-22T05:55:45.853516Z"
external_id: "114*****"
Получить фамилии федеративных и локальных пользователей, которые никогда не аутентифицировались в Yandex Cloud
Важно
Если в фильтре вы используете поля с типом данных enum, передавайте для таких полей числовые значения, указанные в таблице с атрибутами субъектов.
Выполните команду:
yc iam subject-details get \
--subject-ids aje3b3juqevc********,ek0ogbhh6o3p********,ajei280a73vc******** \
--field-mask user_account.family_name \
--filter 'subject.user_account.subject_container.container_type in [1, 4] &&
!has(subject.last_authenticated_at)' \
--format yaml
Результат
sub: ek0ogbhh6o3p********
type: USER_ACCOUNT
user_account:
family_name: Сергеев
Полезные ссылки
Организация — это высший ресурс в иерархии ресурсной модели Yandex Cloud, который объединяет ресурсы всех остальных сервисов, а также используется для управления пользователями и параметрами их аутентификации и авторизации. Подробнее читайте в разделе Организация.