Назначить роль на ресурс
Чтобы предоставить доступ к ресурсу, назначьте субъекту роль на сам ресурс или на ресурс, от которого наследуются права доступа, например на каталог или облако. Актуальный список ресурсов, на которые можно назначать роли, доступен в разделе На какие ресурсы можно назначить роль.
- В консоли управления
выберите каталог, в котором нужно назначить роль на ресурс. - Перейдите
в сервис Container Registry. - Выберите реестр или репозиторий в нем.
- Перейдите на вкладку Права доступа.
- Нажмите кнопку Назначить роли.
- В открывшемся окне выберите группу, пользователя или сервисный аккаунт.
- Нажмите кнопку
Добавить роль и выберите роль из списка. - Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
Выполните команду, чтобы назначить роль на ресурс:
yc container <ресурс> add-access-binding <имя_или_идентификатор_ресурса> \
--role <роль> \
--subject <тип_субъекта>:<идентификатор_субъекта>
Где:
-
<ресурс>— тип ресурсаregistry(реестр) илиrepository(репозиторий); -
<имя_или_идентификатор_ресурса>— имя или идентификатор ресурса, на который назначается роль; -
--role— роль, которую необходимо назначить; -
--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)—
Пример
В примере ниже пользователю назначается роль container-registry.admin на реестр my-first-registry.
yc container registry add-access-binding my-first-registry \
--role container-registry.admin \
--subject userAccount:ajeugsk5ubk6********
Результат:
done (4s)
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, аутентифицируйтесь соответствующим способом.
-
Опишите в конфигурационном файле:
-
Параметры ресурса
yandex_container_registry_iam_binding, чтобы назначить роль на реестр:resource "yandex_container_registry_iam_binding" "имя_реестра" { registry_id = "<идентификатор_реестра>" role = "<роль>" members = [ "<тип_субъекта>:<идентификатор_субъекта>", ] }Где:
-
registry_id— идентификатор реестра, на который назначается роль. Чтобы узнать идентификатор реестра, получите список реестров в каталоге. -
role— роль, которую необходимо назначить. -
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)
-
-
Параметры ресурса
yandex_container_repository_iam_binding, чтобы назначить роль на репозиторий:resource "yandex_container_repository_iam_binding" "имя_репозитория" { repository_id = "<идентификатор_репозитория>" role = "<роль>" members = [ "<тип_субъекта>:<идентификатор_субъекта>", ] }Где:
-
repository_id— идентификатор репозитория, на который назначается роль. Чтобы узнать идентификатор репозитория, получите список репозиториев в каталоге. -
role— роль, которую необходимо назначить. -
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)
-
Подробнее о параметрах ресурса
yandex_container_repository_iam_bindingв документации провайдера. -
-
-
В терминале перейдите в директорию с конфигурационным файлом.
-
Проверьте корректность конфигурации с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
-
Проверить назначение роли можно в консоли управления
-
Для реестра:
yc container registry list-access-bindings <имя_или_идентификатор_реестра> -
Для репозитория:
yc container repository list-access-bindings <имя_или_идентификатор_репозитория>
Чтобы назначить роль на реестр, воспользуйтесь методом REST API updateAccessBindings для ресурса Registry или вызовом gRPC API RegistryService/UpdateAccessBindings.
Чтобы назначить роль на репозиторий, воспользуйтесь методом REST API updateAccessBindings для ресурса Repository или вызовом gRPC API RepositoryService/UpdateAccessBindings.
В теле запроса в свойстве action укажите ADD, а в свойстве subject — тип и идентификатор субъекта.
Обозначения субъектов
Для обозначения субъекта используется комбинация типа и уникального идентификатора в полях запроса subject.type и subject.id. Возможные комбинации:
|
subject.type |
subject.id |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(группа |
|
(группа |
|
|
(группа |
|
|
(группа |
|
|
(группа |