Назначение роли
Чтобы предоставить доступ к ресурсу, назначьте на него роль. Ее могут получить:
- пользователи с аккаунтом на Яндексе;
- локальные пользователи;
- федеративные пользователи;
- сервисные аккаунты;
- группы пользователей.
Роль можно назначить не только на сам ресурс, но и на его родительский ресурс, так как от него наследуются права доступа. Например, если сервисному аккаунту назначить роль на облако, этот сервисный аккаунт получит разрешения на все ресурсы во всех каталогах этого облака. Подробнее читайте в разделе Как устроено управление доступом в Yandex Cloud.
Чтобы назначить роль на ресурс, нужна роль admin или service-name.admin, где service-name— название сервиса, на ресурс которого назначается роль.
Узнайте, на какие ресурсы можно назначать роли.
Чтобы выбрать роли, обратитесь к их справочнику.
Примечание
Даже если операция с ресурсами сервисов Yandex Cloud разрешена ролью, ее выполнение может быть заблокировано, если для организации, облака или каталога создана политика авторизации, запрещающая эту операцию.
Назначить роль на каталог или облако
- В консоли управления
на панели сверху нажмите или и выберите облако или каталог. - Перейдите на вкладку Права доступа.
- Нажмите кнопку Настроить доступ.
- Выберите группу, пользователя или сервисный аккаунт, которым нужно предоставить доступ к облаку или каталогу.
- Нажмите кнопку
Добавить роль и выберите необходимые роли. - Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
Чтобы назначить роль на облако или каталог:
-
Посмотрите описание команды CLI для назначения роли:
yc resource-manager <cloud_или_folder> add-access-binding --helpУкажите
cloudдля облака иfolderдля каталога. -
Получите список доступных облаков или каталогов вместе с их идентификаторами:
yc resource-manager <cloud_или_folder> list -
Получите идентификатор пользователя, сервисного аккаунта, группы пользователей, организации или федерации удостоверений, которым или пользователем которых вы назначаете роль.
-
Чтобы назначить роль, выполните команду:
yc resource-manager <cloud_или_folder> add-access-binding \ --id <идентификатор_облака_или_каталога> \ --role <идентификатор_роли> \ --subject <тип_субъекта>:<идентификатор_субъекта>Где:
-
--id— идентификатор ресурса, на который назначается роль. -
--role— идентификатор роли, которую нужно назначить, напримерresource-manager.clouds.owner. -
--subject— обозначение субъекта, которому назначается роль.Обозначения субъектов
Для обозначения субъекта используется параметр
--subjectсо значением в формате<тип_субъекта>:<идентификатор>. Для некоторых типов субъектов в Yandex Cloud CLI вместо--subjectдоступны отдельные параметры, в которых достаточно указать имя или идентификатор субъекта без типа. Возможные обозначения субъектов и соответствующие параметры CLI:Тип субъекта
Обозначение субъекта
Параметр Yandex Cloud CLI
userAccountuserAccount:<идентификатор_пользователя>--user-account-idили--user-yandex-loginserviceAccountserviceAccount:<идентификатор_сервисного_аккаунта>--service-account-idили--service-account-namefederatedUserfederatedUser:<идентификатор_пользователя>--user-account-idgroupgroup:<идентификатор_группы>--group-memberssystemsystem:allAuthenticatedUsers(группа
All authenticated users)--all-authenticated-userssystem:allUsers(группа
All users)—
system:group:organization:<идентификатор_организации>:users(группа
All users in organization X)--organization-userssystem:group:federation:<идентификатор_федерации>:users(группа
All users in federation N)--federation-userssystem:group:userpool:<идентификатор_пула>:users(группа
All users in userpool P)—
Например, чтобы назначить сервисному аккаунту роль
viewerна каталог:yc resource-manager folder add-access-binding \ --id b1g672qpemb4******** \ --role viewer \ --subject serviceAccount:aje8m5luj4qf******** -
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, аутентифицируйтесь соответствующим способом.
-
Опишите в конфигурационном файле параметры назначаемых ролей.
Пример структуры конфигурационного файла:
// Назначение роли на облако resource "yandex_resourcemanager_cloud_iam_member" "cloud_member" { cloud_id = "<идентификатор_облака>" role = "<роль>" member = "<субъект>" } // Назначение роли на каталог resource "yandex_resourcemanager_folder_iam_member" "folder_member" { folder_id = "<идентификатор_каталога>" role = "<роль>" member = "<субъект>" }Где:
-
cloud_id— идентификатор облака. Получить список доступных облаков можно с помощью команды CLI:yc resource-manager cloud list. Обязательный параметр. -
folder_id— идентификатор каталога. Получить список доступных каталогов можно с помощью команды CLI:yc resource-manager cloud list. Обязательный параметр. -
role— роль, которую нужно назначить. Перечень ролей можно получить с помощью команды CLI:yc iam role list. В одном ресурсе можно назначить только одну роль. Обязательный параметр. -
member— обозначение субъекта, которому назначается роль. Обязательный параметр.Обозначения субъектов
Для обозначения субъекта используется комбинация типа и уникального идентификатора —
<тип_субъекта>:<идентификатор>. Возможные обозначения субъектов:Тип субъекта
Обозначение субъекта
userAccountuserAccount:<идентификатор_пользователя>serviceAccountserviceAccount:<идентификатор_сервисного_аккаунта>federatedUserfederatedUser:<идентификатор_пользователя>groupgroup:<идентификатор_группы>systemsystem:allAuthenticatedUsers(группа
All authenticated users)system:allUsers(группа
All users)system:group:organization:<идентификатор_организации>:users(группа
All users in organization X)system:group:federation:<идентификатор_федерации>:users(группа
All users in federation N)system:group:userpool:<идентификатор_пула>:users(группа
All users in userpool P)
Подробнее о параметрах ресурсов в Terraform читайте в документации провайдера.
-
-
Создайте ресурсы:
-
В терминале перейдите в директорию с конфигурационным файлом.
-
Проверьте корректность конфигурации с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
После этого в организации будут созданы нужные ресурсы.
-
Чтобы назначить роль на облако, воспользуйтесь методом REST API updateAccessBindings для ресурса Cloud или вызовом gRPC API CloudService/UpdateAccessBindings.
Чтобы назначить роль на каталог, воспользуйтесь методом REST API updateAccessBindings для ресурса Folder или вызовом gRPC API FolderService/UpdateAccessBindings.
Передайте в запросе:
-
Значение
ADDв параметреaccessBindingDeltas[].action, чтобы добавить роль. -
Роль в параметре
accessBindingDeltas[].accessBinding.roleId. -
Идентификатор субъекта, которму назначается роль, в параметре
accessBindingDeltas[].accessBinding.subject.id. -
Тип субъекта, которому назначается роль, в параметре
accessBindingDeltas[].accessBinding.subject.type.Обозначения субъектов
Для обозначения субъекта используется комбинация типа и уникального идентификатора в полях запроса
subject.typeиsubject.id. Возможные комбинации:subject.type
subject.id
userAccount<идентификатор_пользователя>serviceAccount<идентификатор_сервисного_аккаунта>federatedUser<идентификатор_пользователя>group<идентификатор_группы>systemallAuthenticatedUsers(группа
All authenticated users)allUsers(группа
All users)group:organization:<идентификатор_организации>:users(группа
All users in organization X)group:federation:<идентификатор_федерации>:users(группа
All users in federation N)group:userpool:<идентификатор_пула>:users(группа
All users in userpool P)
Назначить роль на организацию
Чтобы выдать права доступа на организацию, вам нужна роль не ниже organization-manager.admin. Подробнее о последовательности ролей читайте в документе Yandex Identity Hub.
Чтобы назначить роль на организацию:
-
Войдите в сервис Yandex Identity Hub
с учетной записью администратора или владельца организации. -
На панели слева выберите
Права доступа. -
Если у нужного пользователя, сервисного аккаунта или группы пользователей уже есть хотя бы одна роль, в строке с этим пользователем, сервисным аккаунтом или группой нажмите значок
и выберите Назначить роли.Если нужного нужного пользователя, сервисного аккаунта или группы пользователей нет в списке, в правом верхнем углу страницы нажмите кнопку Назначить роли. В открывшемся окне выберите нужного пользователя, сервисный аккаунт или группу из списка. При необходимости воспользуйтесь строкой поиска.
-
Нажмите кнопку
Добавить роль и выберите роль, которую хотите назначить. Вы можете назначить несколько ролей.Описание доступных ролей можно найти в справочнике ролей Yandex Cloud.
-
Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
Чтобы назначить роль на организацию:
-
Посмотрите описание команды CLI для назначения роли:
yc organization-manager organization add-access-binding --help -
Получите список доступных организаций вместе с их идентификаторами:
yc organization-manager organization list -
Получите идентификатор пользователя, сервисного аккаунта, группы пользователей, организации или федерации удостоверений, которым или пользователем которых вы назначаете роль.
-
Чтобы назначить роль, выполните команду:
yc organization-manager organization add-access-binding \ --id <идентификатор_организации> \ --role <идентификатор_роли> \ --subject <тип_субъекта>:<идентификатор_субъекта>Где:
-
--id— идентификатор ресурса, на который назначается роль. -
--role— идентификатор роли, которую нужно назначить, напримерresource-manager.clouds.owner. -
--subject— обозначение субъекта, которому назначается роль.Обозначения субъектов
Для обозначения субъекта используется параметр
--subjectсо значением в формате<тип_субъекта>:<идентификатор>. Для некоторых типов субъектов в Yandex Cloud CLI вместо--subjectдоступны отдельные параметры, в которых достаточно указать имя или идентификатор субъекта без типа. Возможные обозначения субъектов и соответствующие параметры CLI:Тип субъекта
Обозначение субъекта
Параметр Yandex Cloud CLI
userAccountuserAccount:<идентификатор_пользователя>--user-account-idили--user-yandex-loginserviceAccountserviceAccount:<идентификатор_сервисного_аккаунта>--service-account-idили--service-account-namefederatedUserfederatedUser:<идентификатор_пользователя>--user-account-idgroupgroup:<идентификатор_группы>--group-memberssystemsystem:allAuthenticatedUsers(группа
All authenticated users)--all-authenticated-userssystem:allUsers(группа
All users)—
system:group:organization:<идентификатор_организации>:users(группа
All users in organization X)--organization-userssystem:group:federation:<идентификатор_федерации>:users(группа
All users in federation N)--federation-userssystem:group:userpool:<идентификатор_пула>:users(группа
All users in userpool P)—
Например, чтобы назначить сервисному аккаунту роль
viewerна организацию:yc organization-manager organization add-access-binding \ --id org672qpemb4******** \ --role viewer \ --subject serviceAccount:aje8m5luj4qf******** -
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, аутентифицируйтесь соответствующим способом.
Чтобы назначить роль на организацию:
-
Получите идентификатор пользователя, сервисного аккаунта или группы пользователей, которым назначаете роль.
-
Опишите в конфигурационном файле ресурс с ролью на организацию.
Пример структуры конфигурационного файла:
resource "yandex_organizationmanager_organization_iam_binding" "<название_ресурса>" { organization_id = "<идентификатор_организации>" role = "<роль>" member = "<субъект>" }Где:
-
organization_id— идентификатор организации. Обязательный параметр. -
role— назначаемая роль. Для каждой роли можно использовать только один ресурсyandex_organizationmanager_organization_iam_binding. Обязательный параметр. -
member— обозначение субъекта, которому назначается роль. Обязательный параметр.Обозначения субъектов
Для обозначения субъекта используется комбинация типа и уникального идентификатора —
<тип_субъекта>:<идентификатор>. Возможные обозначения субъектов:Тип субъекта
Обозначение субъекта
userAccountuserAccount:<идентификатор_пользователя>serviceAccountserviceAccount:<идентификатор_сервисного_аккаунта>federatedUserfederatedUser:<идентификатор_пользователя>groupgroup:<идентификатор_группы>systemsystem:allAuthenticatedUsers(группа
All authenticated users)system:allUsers(группа
All users)system:group:organization:<идентификатор_организации>:users(группа
All users in organization X)system:group:federation:<идентификатор_федерации>:users(группа
All users in federation N)system:group:userpool:<идентификатор_пула>:users(группа
All users in userpool P)
Подробнее читайте в документации провайдера.
-
-
Создайте ресурсы:
-
В терминале перейдите в директорию с конфигурационным файлом.
-
Проверьте корректность конфигурации с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
После этого в организации будут созданы нужные ресурсы. Проверить их создание можно в консоли управления
или с помощью команды CLI:yc organization-manager organization list-access-bindings <имя_или_идентификатор_организации> -
Чтобы назначить роль на организацию, воспользуйтесь методом REST API updateAccessBindings для ресурса Organization или вызовом gRPC API OrganizationService/UpdateAccessBindings и передайте в запросе:
-
Значение
ADDв параметреaccessBindingDeltas[].action, чтобы добавить роль. -
Роль в параметре
accessBindingDeltas[].accessBinding.roleId. -
Идентификатор субъекта, которому назначается роль, в параметре
accessBindingDeltas[].accessBinding.subject.id. -
Тип субъекта, которому назначается роль, в параметре
accessBindingDeltas[].accessBinding.subject.type.Обозначения субъектов
Для обозначения субъекта используется комбинация типа и уникального идентификатора в полях запроса
subject.typeиsubject.id. Возможные комбинации:subject.type
subject.id
userAccount<идентификатор_пользователя>serviceAccount<идентификатор_сервисного_аккаунта>federatedUser<идентификатор_пользователя>group<идентификатор_группы>systemallAuthenticatedUsers(группа
All authenticated users)allUsers(группа
All users)group:organization:<идентификатор_организации>:users(группа
All users in organization X)group:federation:<идентификатор_федерации>:users(группа
All users in federation N)group:userpool:<идентификатор_пула>:users(группа
All users in userpool P)
Назначить роль на ресурс
Вы можете назначить роль не только на организацию, облако или каталог, но и на их дочерние ресурсы. Они перечислены в разделе Ресурсы, на которые можно назначать роли.
Чтобы назначить роль на ресурс:
- В консоли управления
на панели сверху нажмите или и выберите каталог, в котором находится ресурс. - Откройте его страницу.
- Перейдите в раздел
Права доступа и нажмите кнопку Назначить роли. - Выберите группу, пользователя или сервисный аккаунт, которым нужно предоставить доступ к ресурсу.
- Нажмите кнопку
Добавить роль и выберите необходимые роли. - Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
Чтобы назначить роль на ресурс:
-
Посмотрите описание команды CLI для назначения роли:
yc <имя_сервиса> <ресурс> add-access-binding --helpПример для виртуальной машины Yandex Compute Cloud:
yc compute instance add-access-binding --help -
Получите список ресурсов вместе с их идентификаторами:
yc <имя_сервиса> <ресурс> list -
Получите идентификатор пользователя, сервисного аккаунта, группы пользователей, организации или федерации удостоверений, которым или пользователем которых вы назначаете роль.
-
Чтобы назначить роль, выполните команду:
yc <имя_сервиса> <ресурс> add-access-binding \ --id <идентификатор_ресурса> \ --role <идентификатор_роли> \ --subject <тип_субъекта>:<идентификатор_субъекта>Где:
-
--id— идентификатор ресурса, на который назначается роль. -
--role— идентификатор роли, которую нужно назначить, напримерresource-manager.clouds.owner. -
--subject— обозначение субъекта, которому назначается роль.Обозначения субъектов
Для обозначения субъекта используется параметр
--subjectсо значением в формате<тип_субъекта>:<идентификатор>. Для некоторых типов субъектов в Yandex Cloud CLI вместо--subjectдоступны отдельные параметры, в которых достаточно указать имя или идентификатор субъекта без типа. Возможные обозначения субъектов и соответствующие параметры CLI:Тип субъекта
Обозначение субъекта
Параметр Yandex Cloud CLI
userAccountuserAccount:<идентификатор_пользователя>--user-account-idили--user-yandex-loginserviceAccountserviceAccount:<идентификатор_сервисного_аккаунта>--service-account-idили--service-account-namefederatedUserfederatedUser:<идентификатор_пользователя>--user-account-idgroupgroup:<идентификатор_группы>--group-memberssystemsystem:allAuthenticatedUsers(группа
All authenticated users)--all-authenticated-userssystem:allUsers(группа
All users)—
system:group:organization:<идентификатор_организации>:users(группа
All users in organization X)--organization-userssystem:group:federation:<идентификатор_федерации>:users(группа
All users in federation N)--federation-userssystem:group:userpool:<идентификатор_пула>:users(группа
All users in userpool P)—
Например, чтобы назначить сервисному аккаунту роль
viewerна виртуальную машину:yc compute instance add-access-binding \ --id ins672qpemb4******** \ --role viewer \ --subject serviceAccount:aje8m5luj4qf******** -
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, аутентифицируйтесь соответствующим способом.
Чтобы назначить роль на организацию:
-
Получите идентификатор пользователя, сервисного аккаунта или группы пользователей, которым назначаете роль.
-
Опишите в конфигурационном файле ресурс с ролью на организацию.
Пример структуры конфигурационного файла для назначения роли на каталог:
resource "yandex_resourcemanager_folder_iam_member" "admin-account-iam" { folder_id = "<идентификатор_каталога>" role = "<роль>" member = "<субъект>" }Где:
-
folder_id— идентификатор каталога. Обязательный параметр. -
role— назначаемая роль. Для каждой роли можно использовать только один ресурсyandex_organizationmanager_organization_iam_binding. Обязательный параметр. -
member— обозначение субъекта, которому назначается роль. Обязательный параметр.Обозначения субъектов
Для обозначения субъекта используется комбинация типа и уникального идентификатора —
<тип_субъекта>:<идентификатор>. Возможные обозначения субъектов:Тип субъекта
Обозначение субъекта
userAccountuserAccount:<идентификатор_пользователя>serviceAccountserviceAccount:<идентификатор_сервисного_аккаунта>federatedUserfederatedUser:<идентификатор_пользователя>groupgroup:<идентификатор_группы>systemsystem:allAuthenticatedUsers(группа
All authenticated users)system:allUsers(группа
All users)system:group:organization:<идентификатор_организации>:users(группа
All users in organization X)system:group:federation:<идентификатор_федерации>:users(группа
All users in federation N)system:group:userpool:<идентификатор_пула>:users(группа
All users in userpool P)
Подробнее читайте в документации провайдера.
-
-
Создайте ресурсы:
-
В терминале перейдите в директорию с конфигурационным файлом.
-
Проверьте корректность конфигурации с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
После этого в организации будут созданы нужные ресурсы. Проверить их создание можно в консоли управления
или с помощью команд CLI. -
Чтобы назначить роль на ресурс, воспользуйтесь методом REST API или вызовом gRPC API updateAccessBindings для нужного ресурса и передайте в запросе:
-
Значение
ADDв параметреaccessBindingDeltas[].action, чтобы добавить роль. -
Роль в параметре
accessBindingDeltas[].accessBinding.roleId. -
Идентификатор субъекта, которому назначается роль, в параметре
accessBindingDeltas[].accessBinding.subject.id. -
Тип субъекта, которому назначается роль, в параметре
accessBindingDeltas[].accessBinding.subject.type.Обозначения субъектов
Для обозначения субъекта используется комбинация типа и уникального идентификатора в полях запроса
subject.typeиsubject.id. Возможные комбинации:subject.type
subject.id
userAccount<идентификатор_пользователя>serviceAccount<идентификатор_сервисного_аккаунта>federatedUser<идентификатор_пользователя>group<идентификатор_группы>systemallAuthenticatedUsers(группа
All authenticated users)allUsers(группа
All users)group:organization:<идентификатор_организации>:users(группа
All users in organization X)group:federation:<идентификатор_федерации>:users(группа
All users in federation N)group:userpool:<идентификатор_пула>:users(группа
All users in userpool P)
Назначить несколько ролей
- В консоли управления
выберите каталог, в котором находится ресурс. - Откройте его страницу.
- Перейдите в раздел
Права доступа и нажмите кнопку Назначить роли. - Выберите группу, пользователя или сервисный аккаунт, которым нужно предоставить доступ к ресурсу.
- Нажмите кнопку
Добавить роль и выберите необходимые роли. - Нажмите кнопку Сохранить.
Внимание
Команда set-access-bindings для назначения нескольких ролей полностью перезаписывает права доступа к ресурсу. Все текущие роли на ресурс будут удалены.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
Чтобы назначить несколько ролей на ресурс:
-
Убедитесь, что на ресурс не назначены роли, которые вы не хотите потерять:
yc <имя_сервиса> <ресурс> list-access-bindings \ --id <идентификатор_ресурса>Пример для виртуальной машины Yandex Compute Cloud:
yc compute instance list-access-bindings \ --id <идентификатор_ВМ> -
Посмотрите описание команды CLI для назначения ролей:
yc <имя_сервиса> <ресурс> set-access-bindings --help -
Получите список ресурсов вместе с их идентификаторами:
yc <имя_сервиса> <ресурс> list -
Получите идентификатор пользователя, сервисного аккаунта, группы пользователей, организации или федерации удостоверений, которым или пользователем которых вы назначаете роль.
-
Чтобы назначить роль, выполните команду:
yc <имя_сервиса> <ресурс> set-access-bindings \ --id <идентификатор_ресурса> \ --access-binding role=<роль>,subject=<тип_субъекта>:<идентификатор_субъекта>Где:
-
--id— идентификатор ресурса, на который назначается роль. -
role— идентификатор роли, которую нужно назначить, напримерresource-manager.clouds.owner. -
subject— обозначение субъекта, которому назначается роль.Обозначения субъектов
Для обозначения субъекта используется параметр
--subjectсо значением в формате<тип_субъекта>:<идентификатор>. Для некоторых типов субъектов в Yandex Cloud CLI вместо--subjectдоступны отдельные параметры, в которых достаточно указать имя или идентификатор субъекта без типа. Возможные обозначения субъектов и соответствующие параметры CLI:Тип субъекта
Обозначение субъекта
Параметр Yandex Cloud CLI
userAccountuserAccount:<идентификатор_пользователя>--user-account-idили--user-yandex-loginserviceAccountserviceAccount:<идентификатор_сервисного_аккаунта>--service-account-idили--service-account-namefederatedUserfederatedUser:<идентификатор_пользователя>--user-account-idgroupgroup:<идентификатор_группы>--group-memberssystemsystem:allAuthenticatedUsers(группа
All authenticated users)--all-authenticated-userssystem:allUsers(группа
All users)—
system:group:organization:<идентификатор_организации>:users(группа
All users in organization X)--organization-userssystem:group:federation:<идентификатор_федерации>:users(группа
All users in federation N)--federation-userssystem:group:userpool:<идентификатор_пула>:users(группа
All users in userpool P)—
Для каждой роли передайте отдельный параметр
--access-binding. Наример, чтобы назначить несколько ролей сервисному аккаунту на виртуальную машину:yc compute instance set-access-bindings \ --id ins672qpemb4******** \ --access-binding role=compute.disks.user,subject=<тип_субъекта>:aje8m5luj4qf******** \ --access-binding role=compute.images.user,subject=<тип_субъекта>:aje8m5luj4qf******** \ --access-binding role=compute.operator,subject=<тип_субъекта>:aje8m5luj4qf******** -
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, аутентифицируйтесь соответствующим способом.
-
Опишите в конфигурационном файле параметры назначаемых ролей.
Пример структуры конфигурационного файла для назначения нескольких ролей на облако:
resource "yandex_resourcemanager_cloud_iam_member" "cloud_member_1" { cloud_id = "<идентификатор_облака>" role = "<роль_1>" members = ["<субъект_1>","<субъект_2>,...,<субъект_n>"] } resource "yandex_resourcemanager_cloud_iam_member" "cloud_member_2" { cloud_id = "<идентификатор_облака>" role = "<роль_2>" members = ["<субъект_1>","<субъект_2>,...,<субъект_n>"] }Где:
-
cloud_id— идентификатор облака. Получить список доступных облаков можно с помощью команды CLI:yc resource-manager cloud list. Обязательный параметр. -
role— роль, которую нужно назначить. Перечень ролей можно получить с помощью команды CLI:yc iam role list. В одном ресурсеyandex_resourcemanager_cloud_iam_memberможно назначить только одну роль. Обязательный параметр. -
members— обозначения субъектов, которым назначается роль. Обязательный параметр.Обозначения субъектов
Для обозначения субъекта используется комбинация типа и уникального идентификатора —
<тип_субъекта>:<идентификатор>. Возможные обозначения субъектов:Тип субъекта
Обозначение субъекта
userAccountuserAccount:<идентификатор_пользователя>serviceAccountserviceAccount:<идентификатор_сервисного_аккаунта>federatedUserfederatedUser:<идентификатор_пользователя>groupgroup:<идентификатор_группы>systemsystem:allAuthenticatedUsers(группа
All authenticated users)system:allUsers(группа
All users)system:group:organization:<идентификатор_организации>:users(группа
All users in organization X)system:group:federation:<идентификатор_федерации>:users(группа
All users in federation N)system:group:userpool:<идентификатор_пула>:users(группа
All users in userpool P)
Подробнее о параметрах ресурсов в Terraform читайте в документации провайдера.
-
-
Создайте ресурсы:
-
В терминале перейдите в директорию с конфигурационным файлом.
-
Проверьте корректность конфигурации с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
После этого в организации будут созданы нужные ресурсы.
-
Внимание
Метод setAccessBindings для назначения нескольких ролей полностью перезаписывает права доступа к ресурсу. Все текущие роли на ресурс будут удалены.
Чтобы назначить несколько ролей на ресурс, воспользуйтесь методом REST API или вызовом gRPC API setAccessBindings для нужного ресурса. Передайте в запросе массив из объектов, каждый из которых соответствует отдельной роли и содержит следующие данные:
-
Роль в параметре
accessBindings[].roleId. -
Идентификатор субъекта, на кого назначаются роли, в параметре
accessBindings[].subject.id. -
Тип субъекта, на кого назначаются роли, в параметре
accessBindings[].subject.type.Обозначения субъектов
Для обозначения субъекта используется комбинация типа и уникального идентификатора в полях запроса
subject.typeиsubject.id. Возможные комбинации:subject.type
subject.id
userAccount<идентификатор_пользователя>serviceAccount<идентификатор_сервисного_аккаунта>federatedUser<идентификатор_пользователя>group<идентификатор_группы>systemallAuthenticatedUsers(группа
All authenticated users)allUsers(группа
All users)group:organization:<идентификатор_организации>:users(группа
All users in organization X)group:federation:<идентификатор_федерации>:users(группа
All users in federation N)group:userpool:<идентификатор_пула>:users(группа
All users in userpool P)