Назначение роли
Чтобы предоставить доступ к ресурсу, назначьте на него роль. Ее могут получить:
- пользователи с аккаунтом на Яндексе;
- федеративные пользователи;
- сервисные аккаунты;
- группы пользователей.
Роль можно назначить не только на сам ресурс, но и на его родительский ресурс, так как от него наследуются права доступа. Например, если сервисному аккаунту назначить роль на облако, этот сервисный аккаунт получит разрешения на все ресурсы во всех каталогах этого облака. Подробнее см. в разделе Как устроено управление доступом в Yandex Cloud.
Узнайте, на какие ресурсы можно назначать роли.
Чтобы выбрать роли, обратитесь к их справочнику.
Назначить роль на каталог или облако
- В консоли управления
выберите нужное облако или каталог. - Перейдите на вкладку Права доступа.
- Нажмите кнопку Настроить доступ.
- Выберите группу, пользователя или сервисный аккаунт, которым нужно предоставить доступ к облаку или каталогу.
- Нажмите кнопку
Добавить роль и выберите необходимые роли. - Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --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 <роль> \ --user-account-id <идентификатор_пользователя>
-
Федеративному пользователю:
yc resource-manager <cloud_или_folder> add-access-binding \ --id <идентификатор_облака_или_каталога> \ --role <роль> \ --subject federatedUser:<идентификатор_пользователя>
-
Сервисному аккаунту:
yc resource-manager <cloud_или_folder> add-access-binding \ --id <идентификатор_облака_или_каталога> \ --role <роль> \ --service-account-id <идентификатор_сервисного_аккаунта>
-
Группе пользователей:
yc resource-manager <cloud_или_folder> add-access-binding \ --id <идентификатор_облака_или_каталога> \ --role <роль> \ --subject group:<идентификатор_группы>
-
Всем пользователям организации:
yc resource-manager <cloud_или_folder> add-access-binding \ --id <идентификатор_облака_или_каталога> \ --role <роль> \ --organization-users <идентификатор_организации>
-
Всем пользователям федерации удостоверений:
yc resource-manager <cloud_или_folder> add-access-binding \ --id <идентификатор_облака_или_каталога> \ --role <роль> \ --federation-users <идентификатор_федерации>
-
Чтобы назначить роль на облако, воспользуйтесь методом 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
.
Назначить роль на организацию
Чтобы выдать права доступа на организацию, вам нужна роль не ниже organization-manager.admin
. Подробнее о последовательности ролей см. в документе Yandex Cloud Organization.
Чтобы назначить роль на организацию:
-
Войдите в сервис Yandex Cloud Organization
с учетной записью администратора или владельца организации. -
На панели слева выберите
Права доступа. -
Если у нужного пользователя, сервисного аккаунта или группы пользователей уже есть хотя бы одна роль, в строке с этим пользователем, сервисным аккаунтом или группой нажмите значок
и выберите Назначить роли.Если нужного нужного пользователя, сервисного аккаунта или группы пользователей нет в списке, в правом верхнем углу страницы нажмите кнопку Назначить роли. В открывшемся окне выберите нужного пользователя, сервисный аккаунт или группу из списка. При необходимости воспользуйтесь строкой поиска.
-
Нажмите кнопку
Добавить роль и выберите роль, которую хотите назначить. Вы можете назначить несколько ролей.Описание доступных ролей можно найти в справочнике ролей Yandex Cloud.
-
Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --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 <роль> \ --user-account-id <идентификатор_пользователя>
-
Федеративному пользователю:
yc organization-manager organization add-access-binding \ --id <идентификатор_организации> \ --role <роль> \ --subject federatedUser:<идентификатор_пользователя>
-
Сервисному аккаунту:
yc organization-manager organization add-access-binding \ --id <идентификатор_организации> \ --role <роль> \ --service-account-id <идентификатор_сервисного_аккаунта>
-
Всем пользователям организации:
yc organization-manager organization add-access-binding \ --id <идентификатор_организации> \ --role <роль> \ --organization-users <идентификатор_организации>
-
Всем пользователям федерации удостоверений:
yc organization-manager organization add-access-binding \ --id <идентификатор_организации> \ --role <роль> \ --federation-users <идентификатор_федерации>
-
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы назначить роль на организацию:
-
Получите идентификатор пользователя, сервисного аккаунта или группы пользователей, которым назначаете роль.
-
Опишите в конфигурационном файле ресурс с ролью на организацию.
Пример структуры конфигурационного файла:
resource "yandex_organizationmanager_organization_iam_binding" "<название_ресурса>" { organization_id = "<идентификатор_организации>" role = "<роль>" members = [<пользователи>] }
Где:
-
organization_id
— идентификатор организации. Обязательный параметр. -
role
— назначаемая роль. Для каждой роли можно использовать только один ресурсyandex_organizationmanager_organization_iam_binding
. Обязательный параметр. -
members
— пользователи, которым назначается роль. Укажите:members = ["userAccount:<идентификатор_пользователя>"]
— для пользователя с аккаунтом на Яндексе.members = ["federatedUser:<идентификатор_пользователя>"]
— для федеративного пользователя.members = ["serviceAccount:<идентификатор_пользователя>"]
— для сервисного аккаунта.members = ["group:<идентификатор_пользователя>"]
— для группы пользователей.members = ["system:group:organization:<идентификатор_организации>:users"]
— для всех пользователей организации.members = ["system:group:federation:<идентификатор_федерации>:users"]
— для всех пользователей федерации удостоверений.
Более подробную информацию см. в документации провайдера
. -
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Назначьте роль.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
После этого в организации будут созданы нужные ресурсы. Проверить их создание можно в консоли управления
или с помощью команды 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
.
Назначить роль на ресурс
Вы можете назначить роль не только на организацию, облако или каталог, но и на их дочерние ресурсы. Они перечислены в разделе Список ресурсов, на которые можно назначать роли.
Чтобы назначить роль на ресурс:
- В консоли управления
выберите каталог, в котором находится ресурс. - Откройте его страницу.
- Перейдите в раздел
Права доступа и нажмите кнопку Назначить роли. - Выберите группу, пользователя или сервисный аккаунт, которым нужно предоставить доступ к ресурсу.
- Нажмите кнопку
Добавить роль и выберите необходимые роли. - Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --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 <роль> \ --user-account-id <идентификатор_пользователя>
-
Федеративному пользователю:
yc <имя_сервиса> <ресурс> add-access-binding \ --id <идентификатор_ресурса> \ --role <роль> \ --subject federatedUser:<идентификатор_пользователя>
-
Сервисному аккаунту:
yc <имя_сервиса> <ресурс> add-access-binding \ --id <идентификатор_ресурса> \ --role <роль> \ --service-account-id <идентификатор_сервисного_аккаунта>
-
Группе пользователей:
yc <имя_сервиса> <ресурс> add-access-binding \ --id <идентификатор_ресурса> \ --role <роль> \ --subject group:<идентификатор_группы>
-
Всем пользователям организации:
yc <имя_сервиса> <ресурс> add-access-binding \ --id <идентификатор_ресурса> \ --role <роль> \ --organization-users <идентификатор_организации>
-
Всем пользователям федерации удостоверений:
yc <имя_сервиса> <ресурс> add-access-binding \ --id <идентификатор_ресурса> \ --role <роль> \ --federation-users <идентификатор_федерации>
-
Чтобы назначить роль на ресурс, воспользуйтесь методом REST API или вызовом gRPC API updateAccessBindings
для нужного ресурса и передайте в запросе:
- Значение
ADD
в параметреaccessBindingDeltas[].action
, чтобы добавить роль. - Роль в параметре
accessBindingDeltas[].accessBinding.roleId
. - Идентификатор субъекта, на кого назначается роль, в параметре
accessBindingDeltas[].accessBinding.subject.id
. - Тип субъекта, на кого назначается роль, в параметре
accessBindingDeltas[].accessBinding.subject.type
.
Назначить несколько ролей
- В консоли управления
выберите каталог, в котором находится ресурс. - Откройте его страницу.
- Перейдите в раздел
Права доступа и нажмите кнопку Назначить роли. - Выберите группу, пользователя или сервисный аккаунт, которым нужно предоставить доступ к ресурсу.
- Нажмите кнопку
Добавить роль и выберите необходимые роли. - Нажмите кнопку Сохранить.
Внимание
Команда set-access-bindings
для назначения нескольких ролей полностью перезаписывает права доступа к ресурсу. Все текущие роли на ресурс будут удалены.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --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=<роль>,user-account-id=<идентификатор_пользователя>
-
Федеративному пользователю:
yc <имя_сервиса> <ресурс> set-access-bindings \ --id <идентификатор_ресурса> \ --access-binding role=<роль>,subject=federatedUser:<идентификатор_пользователя>
-
Сервисному аккаунту:
yc <имя_сервиса> <ресурс> set-access-bindings \ --id <идентификатор_ресурса> \ --access-binding role=<роль>,service-account-id=<идентификатор_сервисного_аккаунта>
-
Группе пользователей:
yc <имя_сервиса> <ресурс> set-access-bindings \ --id <идентификатор_ресурса> \ --access-binding role=<роль>,subject=group:<идентификатор_группы>
-
Всем пользователям организации:
yc <имя_сервиса> <ресурс> set-access-bindings \ --id <идентификатор_ресурса> \ --access-binding role=<роль>,subject=system:group:organization:<идентификатор_организации>:users
-
Всем пользователям федерации удостоверений:
yc <имя_сервиса> <ресурс> set-access-bindings \ --id <идентификатор_ресурса> \ --access-binding role=<роль>,subject=system:group:federation:<идентификатор_федерации>:users
Для каждой роли передайте отдельный флаг
--access-binding
. Пример:yc <имя_сервиса> <ресурс> set-access-bindings \ --id <идентификатор_ресурса> \ --access-binding role=<роль1>,service-account-id=<идентификатор_сервисного_аккаунта> \ --access-binding role=<роль2>,service-account-id=<идентификатор_сервисного_аккаунта> \ --access-binding role=<роль3>,service-account-id=<идентификатор_сервисного_аккаунта>
-
Внимание
Метод setAccessBindings
для назначения нескольких ролей полностью перезаписывает права доступа к ресурсу. Все текущие роли на ресурс будут удалены.
Чтобы назначить несколько ролей на ресурс, воспользуйтесь методом REST API или вызовом gRPC API setAccessBindings
для нужного ресурса. Передайте в запросе массив из объектов, каждый из которых соответствует отдельной роли и содержит следующие данные:
- Роль в параметре
accessBindings[].roleId
. - Идентификатор субъекта, на кого назначаются роли, в параметре
accessBindings[].subject.id
. - Тип субъекта, на кого назначаются роли, в параметре
accessBindings[].subject.type
.