Назначение роли
Чтобы предоставить доступ к ресурсу, назначьте субъекту роль на сам ресурс или ресурс, от которого наследуются права доступа, например на каталог или облако. Подробнее читайте в разделе Как устроено управление доступом в Yandex Cloud.
Назначить роль пользователю с аккаунтом на Яндексе
В этом разделе описывается, как назначить роль пользователю с аккаунтом на Яндексе. В примерах ниже описано, как назначить роль сервисному аккаунту, пользователю федерации или всем пользователям сразу.
В консоли управления можно назначить роль только на облако или каталог:
-
Добавьте пользователя в облако через Yandex Cloud Organization или Cloud Console.
-
Назначьте пользователю роль в облаке:
- В консоли управления
выберите облако. - Перейдите на вкладку Права доступа.
- Нажмите кнопку Назначить роли.
- В открывшемся окне выберите раздел Пользовательские аккаунты.
- Выберите пользователя из списка или воспользуйтесь поиском по пользователям.
- Нажмите кнопку
Добавить роль и выберите роль из списка или воспользуйтесь поиском. - Нажмите кнопку Сохранить.
- В консоли управления
-
Назначьте пользователю роль в каталоге:
- В консоли управления
перейдите в нужный каталог. - Перейдите на вкладку Права доступа.
- Нажмите кнопку Назначить роли.
- В открывшемся окне выберите раздел Пользовательские аккаунты.
- Выберите пользователя из списка или воспользуйтесь поиском по пользователям.
- Нажмите кнопку
Добавить роль и выберите роль из списка или воспользуйтесь поиском. - Нажмите кнопку Сохранить.
- В консоли управления
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
-
Выберите роль в справочнике ролей Yandex Cloud.
-
Назначьте роль с помощью команды:
yc <имя_сервиса> <категория_ресурса> add-access-binding <имя_или_идентификатор_ресурса> \ --role <идентификатор_роли> \ --subject userAccount:<идентификатор_пользователя>
Где:
<имя_сервиса>
— имя сервиса, на чей ресурс назначается роль, напримерresource-manager
.<категория_ресурса>
— категория ресурса, напримерcloud
.<имя_или_идентификатор_ресурса>
— имя или идентификатор ресурса. Вы можете указать ресурс по имени или идентификатору.--role
— идентификатор роли, напримерresource-manager.clouds.owner
.--subject userAccount
— идентификатор аккаунта пользователя, которому назначается роль.
Например, назначьте роль
viewer
на облакоmycloud
:yc resource-manager cloud add-access-binding mycloud \ --role viewer \ --subject userAccount:aje6o61dvog2********
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Добавьте в конфигурационный файл параметры ресурса, укажите нужную роль и перечень пользователей облака:
cloud_id
— идентификатор облака. Вы также можете назначить роль внутри отдельного каталога. Для этого вместоcloud_id
укажитеfolder_id
и нужный идентификатор каталога в параметрах ресурса.role
— назначаемая роль. Обязательный параметр.members
— список пользователей и сервисных аккаунтов, которым назначается роль. Указывается в видеuserAccount:<идентификатор_пользователя>
илиserviceAccount:<идентификатор_сервисного_аккаунта>
. Обязательный параметр.
Пример структуры конфигурационного файла:
resource "yandex_resourcemanager_cloud_iam_binding" "admin" { cloud_id = "<идентификатор_облака>" role = "<роль>" members = [ "serviceAccount:<идентификатор_сервисного_аккаунта>", "userAccount:<идентификатор_пользователя>", ] }
Более подробную информацию о параметрах ресурса
yandex_resourcemanager_cloud_iam_binding
см. в документации провайдера . -
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов: введите в терминал слово
yes
и нажмите Enter.
После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить создание ресурса можно в консоли управления
или с помощью команды CLI:yc resource-manager folder list-access-bindings <имя_или_идентификатор_каталога>
-
Воспользуйтесь методом REST API updateAccessBindings
для соответствующего ресурса.
-
Выберите роль в справочнике ролей Yandex Cloud.
-
Сформируйте тело запроса, например в файле
body.json
. В свойствеaction
укажитеADD
, а в свойствеsubject
- типuserAccount
и идентификатор пользователя:body.json:
{ "accessBindingDeltas": [{ "action": "ADD", "accessBinding": { "roleId": "editor", "subject": { "id": "gfei8n54hmfh********", "type": "userAccount" } } } ] }
-
Назначьте роль сервисному аккаунту. Например, на каталог с идентификатором
b1gvmob95yys********
:export FOLDER_ID=b1gvmob95yys******** export IAM_TOKEN=CggaAT******** curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${IAM_TOKEN}" \ -d '@body.json' \ "https://resource-manager.api.cloud.yandex.net/resource-manager/v1/folders/${FOLDER_ID}:updateAccessBindings"
Вы можете ознакомиться с подробной инструкцией назначения роли для соответствующего ресурса:
Назначить несколько ролей
- В консоли управления
перейдите в нужный каталог. - Перейдите на вкладку Права доступа.
- Нажмите кнопку Назначить роли.
- В открывшемся окне выберите раздел Пользовательские аккаунты.
- Выберите пользователя из списка или воспользуйтесь поиском по пользователям.
- Нажмите кнопку
Добавить роль и выберите роль из списка или воспользуйтесь поиском. - Выполните предыдущее действие необходимое количество раз, чтобы добавить все нужные роли.
- Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
Команда add-access-binding
позволяет добавить только одну роль. Вы можете назначить несколько ролей с помощью команды set-access-binding
.
Внимание
Команда set-access-binding
полностью перезаписывает права доступа к ресурсу! Все текущие роли на ресурс будут удалены.
Например, чтобы назначить несколько ролей на каталог:
-
Убедитесь, что на ресурс не назначено ролей, которые вы не хотите потерять:
yc resource-manager folder list-access-binding my-folder
-
Назначьте роли. Например, назначьте одному пользователю роль
editor
, а другомуviewer
:yc resource-manager folder set-access-bindings my-folder \ --access-binding role=editor,subject=userAccount:gfei8n54hmfh******** --access-binding role=viewer,subject=userAccount:helj89sfj80a********
-
Чтобы назначить одному пользователю роль
editor
, а другомуviewer
, в файл с телом запроса добавьте несколько привязок прав доступа вaccessBindingDeltas
.body.json:
{ "accessBindingDeltas": [{ "action": "ADD", "accessBinding": { "roleId": "editor", "subject": { "id": "gfei8n54hmfh********", "type": "userAccount" } } },{ "action": "ADD", "accessBinding": { "roleId": "viewer", "subject": { "id": "helj89sfj80a********", "type": "userAccount" } } }] }
-
Назначьте указанные роли, например на каталог с идентификатором
b1gvmob95yys********
:export FOLDER_ID=b1gvmob95yys******** export IAM_TOKEN=CggaAT******** curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${IAM_TOKEN}" \ -d '@body.json' \ "https://resource-manager.api.cloud.yandex.net/resource-manager/v1/folders/${FOLDER_ID}:updateAccessBindings"
Вы также можете назначать роли с помощью метода REST API setAccessBindings для ресурса ServiceAccount или вызовом gRPC API ServiceAccountService/SetAccessBindings.
Внимание
Метод setAccessBindings
полностью перезаписывает права доступа к ресурсу! Все текущие роли на ресурс будут удалены.
-
В теле запроса укажите список новых привязок прав доступа.
body.json:
{ "accessBindings": [{ "roleId": "editor", "subject": { "id": "ajei8n54hmfh********", "type": "userAccount" } },{ "roleId": "viewer", "subject": { "id": "helj89sfj80a********", "type": "userAccount" } }] }
-
Назначьте роли:
export FOLDER_ID=b1gvmob95yys******** export IAM_TOKEN=CggaATEVAgA... curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${IAM_TOKEN}" \ -d '@body.json' \ "https://resource-manager.api.cloud.yandex.net/resource-manager/v1/folders/${FOLDER_ID}:setAccessBindings"
Доступ к ресурсу для сервисного аккаунта
Сервисному аккаунту можно назначать роли на любые ресурсы в любом облаке, если эти ресурсы относятся к той же организации, что и сервисный аккаунт. Также сервисному аккаунту можно назначать роли на саму организацию.
Назначение роли на ресурс
Права доступа наследуются от родительского ресурса к дочерним. Например, если сервисному аккаунту назначить роль на облако, этот сервисный аккаунт получит нужные разрешения на все ресурсы во всех каталогах этого облака.
Узнайте, на какие ресурсы можно назначать роли.
Чтобы назначить роль на ресурс:
Роли сервисному аккаунту назначаются так же, как пользовательскому аккаунту.
Чтобы назначить сервисному аккаунту роль на облако или каталог:
- В консоли управления
выберите нужное облако или каталог. - Перейдите на вкладку Права доступа.
- Нажмите кнопку Назначить роли.
- В открывшемся окне выберите раздел Сервисные аккаунты.
- Выберите нужный сервисный аккаунт из списка или воспользуйтесь поиском.
- Нажмите кнопку
Добавить роль и выберите роль из списка или воспользуйтесь поиском. - Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы назначить сервисному аккаунту роль на облако или каталог, выполните команду:
yc resource-manager <категория_ресурса> add-access-binding <имя_или_идентификатор_ресурса> \
--role <идентификатор_роли> \
--subject serviceAccount:<идентификатор_сервисного_аккаунта>
Где:
<категория_ресурса>
—cloud
, чтобы назначить роль на облако, илиfolder
, чтобы назначить роль на каталог.<имя_или_идентификатор_ресурса>
— имя или идентификатор ресурса, на который назначется роль.--role
— идентификатор роли, напримерviewer
.--subject serviceAccount
— идентификатор сервисного аккаунта, которому назначается роль.
Например, чтобы назначить сервисному аккаунту роль viewer
на каталог my-folder
:
-
Выберите роль, которую хотите назначить сервисному аккаунту. Описание ролей можно найти в документации Yandex Identity and Access Management в справочнике ролей Yandex Cloud.
-
Узнайте идентификатор сервисного аккаунта по его имени:
yc iam service-account get my-robot
Результат:
id: aje6o61dvog2******** folder_id: b1gvmob95yys******** created_at: "2018-10-15T18:01:25Z" name: my-robot
Если вы не знаете имя сервисного аккаунта, получите список сервисных аккаунтов с их идентификаторами:
yc iam service-account list
Результат:
+----------------------+------------------+-----------------+ | ID | NAME | DESCRIPTION | +----------------------+------------------+-----------------+ | aje6o61dvog2******** | my-robot | my description | +----------------------+------------------+-----------------+
-
Назначьте роль
viewer
сервисному аккаунтуmy-robot
, используя его идентификатор:yc resource-manager folder add-access-binding my-folder \ --role viewer \ --subject serviceAccount:aje6o61dvog2********
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
Пример структуры конфигурационного файла:
resource "yandex_resourcemanager_folder_iam_member" "admin-account-iam" { folder_id = "<идентификатор_каталога>" role = "<роль>" member = "serviceAccount:<идентификатор_сервисного_аккаунта>" }
Где:
folder_id
— идентификатор каталога. Обязательный параметр.role
— назначаемая роль. Описание ролей можно найти в документации Yandex Identity and Access Management в справочнике ролей Yandex Cloud. Обязательный параметр.member
— идентификатор сервисного аккаунта, которому назначается роль. Указывается в видеserviceAccount:<идентификатор_сервисного_аккаунта>
. Обязательный параметр.
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера
. -
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов: введите в терминал слово
yes
и нажмите Enter.
После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить создание ресурса можно в консоли управления
или с помощью команды CLI:yc resource-manager folder list-access-bindings <имя_или_идентификатор_каталога>
-
Чтобы назначить сервисному аккаунту роль на облако или каталог, воспользуйтесь методом REST API updateAccessBindings
для ресурса Cloud или Folder:
-
Выберите роль, которую хотите назначить сервисному аккаунту. Описание ролей можно найти в документации Yandex Identity and Access Management в справочнике ролей Yandex Cloud.
-
Узнайте ID каталога с сервисными аккаунтами.
-
Получите IAM-токен для авторизации в API Yandex Cloud.
-
Получите список сервисных аккаунтов в каталоге, чтобы узнать их идентификаторы:
export FOLDER_ID=b1gvmob95yys******** export IAM_TOKEN=CggaATEVAgA... curl -H "Authorization: Bearer ${IAM_TOKEN}" \ "https://iam.api.cloud.yandex.net/iam/v1/serviceAccounts?folderId=${FOLDER_ID}"
Результат:
{ "serviceAccounts": [ { "id": "ajebqtreob2d********", "folderId": "b1gvmob95yys********", "createdAt": "2018-10-18T13:42:40Z", "name": "my-robot", "description": "my description" } ] }
-
Сформируйте тело запроса, например в файле
body.json
. В свойствеaction
укажитеADD
, в свойствеroleId
— нужную роль, напримерeditor
, а в свойствеsubject
— типserviceAccount
и идентификатор сервисного аккаунта:body.json:
{ "accessBindingDeltas": [{ "action": "ADD", "accessBinding": { "roleId": "editor", "subject": { "id": "ajebqtreob2d********", "type": "serviceAccount" } } }] }
-
Назначьте роль сервисному аккаунту. Например, на каталог с идентификатором
b1gvmob95yys********
:export FOLDER_ID=b1gvmob95yys******** export IAM_TOKEN=CggaAT******** curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${IAM_TOKEN}" \ -d '@body.json' \ "https://resource-manager.api.cloud.yandex.net/resource-manager/v1/folders/${FOLDER_ID}:updateAccessBindings"
Назначение роли на организацию
Права доступа наследуются от организации ко всем созданным в ней ресурсам. Например, если сервисному аккаунту назначить роль на организацию, этот сервисный аккаунт получит нужные разрешения на все ресурсы всех облаков этой организации.
Чтобы предоставить сервисному аккаунту права доступа на организацию, необходима роль не ниже organization-manager.admin
.
-
Войдите в аккаунт
администратора или владельца организации. -
Перейдите в сервис Yandex Cloud Organization
. -
На панели слева выберите
Права доступа . -
В фильтре Тип аккаунта выберите
Сервисные аккаунты
. -
Если у нужного сервисного аккаунта уже есть хотя бы одна роль, выберите его из списка или воспользуйтесь поиском. В строке аккаунта нажмите значок
и выберите Назначить роли.Если нужного сервисного аккаунта нет в списке, в правом верхнем углу страницы нажмите кнопку Назначить роли. В открывшемся окне перейдите в раздел Сервисные аккаунты и выберите аккаунт из списка или воспользуйтесь поиском.
-
Нажмите кнопку
Добавить роль и выберите роль из списка или воспользуйтесь поиском.Описание доступных ролей можно найти в документации Yandex Identity and Access Management в справочнике ролей Yandex Cloud.
-
Нажмите Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы назначить сервисному аккаунту роль на организацию, выполните команду:
yc organization-manager organization add-access-binding <имя_или_идентификатор_организации> \
--role <идентификатор_роли> \
--subject serviceAccount:<идентификатор_сервисного_аккаунта>
Где:
<имя_или_идентификатор_организации>
— техническое название или идентификатор организации.--role
— идентификатор роли, напримерviewer
.--subject serviceAccount
— идентификатор сервисного аккаунта, которому назначается роль.
Например, чтобы назначить сервисному аккаунту роль viewer
на организацию MyOrg
:
-
Выберите роль, которую хотите назначить сервисному аккаунту. Описание ролей можно найти в документации Yandex Identity and Access Management в справочнике ролей Yandex Cloud.
-
Получите список доступных вам организаций, чтобы узнать их идентификаторы и технические названия:
yc organization-manager organization list
Результат:
+---------------------------------+---------------------------------+----------------------+ | ID | NAME | TITLE | +---------------------------------+---------------------------------+----------------------+ | bpf1smsil5q0******** | hdt5j5uw******** | MyOrg | +---------------------------------+---------------------------------+----------------------+
Техническое название организации находится в столбце
NAME
, идентификатор организации — в столбцеID
. -
Узнайте идентификатор сервисного аккаунта по его имени:
yc iam service-account get my-robot
Результат:
id: aje6o61dvog2******** folder_id: b1gvmob95yys******** created_at: "2018-10-15T18:01:25Z" name: my-robot
Если вы не знаете имя сервисного аккаунта, получите полный список сервисных аккаунтов с их идентификаторами:
yc iam service-account list
Результат:
+----------------------+------------------+-----------------+ | ID | NAME | DESCRIPTION | +----------------------+------------------+-----------------+ | aje6o61dvog2******** | my-robot | my description | +----------------------+------------------+-----------------+
-
Назначьте сервисному аккаунту
my-robot
рольviewer
на организацию с идентификаторомbpf1smsil5q0********
:yc organization-manager organization add-access-binding bpf1smsil5q0******** \ --role viewer \ --subject serviceAccount:aje6o61dvog2********
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать:
Пример структуры конфигурационного файла:
resource "yandex_organizationmanager_organization_iam_binding" "editor" { organization_id = "<идентификатор_организации>" role = "<роль>" members = [ "serviceAccount:<идентификатор_сервисного_аккаунта>", ] }
Где:
organization_id
— идентификатор организации. Обязательный параметр.role
— назначаемая роль. Описание ролей можно найти в документации Yandex Identity and Access Management в справочнике ролей Yandex Cloud. Для каждой роли можно использовать только одинyandex_organization manager_organization_iam_binding
. Обязательный параметр.members
— идентификатор сервисного аккаунта, которому назначается роль. Указывается в видеserviceAccount:<идентификатор_сервисного_аккаунта>
. Обязательный параметр.
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера
. -
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список назначенных ролей. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов: введите в терминал слово
yes
и нажмите Enter.
После этого в указанной организации будут созданы все требуемые ресурсы. Проверить создание ресурса можно в консоли управления
или с помощью команды CLI:yc organization-manager organization list-access-bindings <имя_или_идентификатор_организации>
-
Чтобы назначить сервисному аккаунту роль на организацию, воспользуйтесь методом REST API updateAccessBindings для ресурса Organization:
-
Выберите роль, которую хотите назначить сервисному аккаунту. Описание ролей можно найти в документации Yandex Identity and Access Management в справочнике ролей Yandex Cloud.
-
Узнайте ID каталога с сервисными аккаунтами.
-
Получите IAM-токен для авторизации в API Yandex Cloud.
-
Получите список сервисных аккаунтов в каталоге, чтобы узнать их идентификаторы:
export FOLDER_ID=b1gvmob95yys******** export IAM_TOKEN=CggaATEVAgA... curl -H "Authorization: Bearer ${IAM_TOKEN}" \ "https://iam.api.cloud.yandex.net/iam/v1/serviceAccounts?folderId=${FOLDER_ID}"
Результат:
{ "serviceAccounts": [ { "id": "ajebqtreob2d********", "folderId": "b1gvmob95yys********", "createdAt": "2018-10-18T13:42:40Z", "name": "my-robot", "description": "my description" } ] }
-
Получите список организаций, чтобы узнать их идентификаторы:
export IAM_TOKEN=CggaATEVAgA... curl -H "Authorization: Bearer ${IAM_TOKEN}" \ -X GET "https://organization-manager.api.cloud.yandex.net/organization-manager/v1/organizations"
Результат:
{ "organizations": [ { "id": "bpfaidqca8vd********", "createdAt": "2023-04-07T08:11:54.313033Z", "name": "xvdq9q22********", "title": "MyOrg" } ] }
-
Сформируйте тело запроса, например в файле
body.json
. В свойствеaction
укажитеADD
, в свойствеroleId
— нужную роль, напримерviewer
, а в свойствеsubject
— типserviceAccount
и идентификатор сервисного аккаунта:body.json:
{ "accessBindingDeltas": [{ "action": "ADD", "accessBinding": { "roleId": "viewer", "subject": { "id": "ajebqtreob2d********", "type": "serviceAccount" } } }] }
-
Назначьте роль сервисному аккаунту. Например, на организацию с идентификатором
bpfaidqca8vd********
:export ORGANIZATION_ID=bpfaidqca8vd******** export IAM_TOKEN=CggaATEVAgA... curl -H "Content-Type: application/json" \ -H "Authorization: Bearer ${IAM_TOKEN}" \ -d '@body.json' \ -X POST "https://organization-manager.api.cloud.yandex.net/organization-manager/v1/organizations/${ORGANIZATION_ID}:updateAccessBindings"
Доступ к ресурсу для федеративного пользователя
В консоли управления федеративному пользователю можно назначить роль на отдельное облако или каталог.
Назначение роли происходит так же, как назначение роли пользователю с аккаунтом на Яндексе. Рядом с именем пользователя будет указано имя федерации, к которой он относится.
В консоли управления можно назначить роль только на облако или каталог:
-
Назначьте пользователю роль в облаке:
- В консоли управления
выберите облако. - Перейдите на вкладку Права доступа.
- Нажмите кнопку Назначить роли.
- В открывшемся окне выберите раздел Пользовательские аккаунты.
- Выберите пользователя из списка или воспользуйтесь поиском по пользователям.
- Нажмите кнопку
Добавить роль и выберите роль из списка или воспользуйтесь поиском. - Нажмите кнопку Сохранить.
- В консоли управления
-
Назначьте пользователю роль в каталоге:
- В консоли управления
перейдите в нужный каталог. - Перейдите на вкладку Права доступа.
- Нажмите кнопку Назначить роли.
- В открывшемся окне выберите раздел Пользовательские аккаунты.
- Выберите пользователя из списка или воспользуйтесь поиском по пользователям.
- Нажмите кнопку
Добавить роль и выберите роль из списка или воспользуйтесь поиском. - Нажмите кнопку Сохранить.
- В консоли управления
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
-
Выберите роль в справочнике ролей Yandex Cloud.
-
Назначьте роль с помощью команды:
yc <имя_сервиса> <категория_ресурса> add-access-binding <имя_или_идентификатор_ресурса> \ --role <идентификатор_роли> \ --subject federatedUser:<идентификатор_пользователя>
Где:
<имя_сервиса>
— имя сервиса, на чей ресурс назначается роль, напримерresource-manager
.<категория_ресурса>
— категория ресурса, напримерcloud
.<имя_или_идентификатор_ресурса>
— имя или идентификатор ресурса. Вы можете указать ресурс по имени или идентификатору.--role
— идентификатор роли, напримерresource-manager.clouds.owner
.--subject federatedUser
— идентификатор аккаунта пользователя, которому назначается роль.
Например, назначьте роль
viewer
на облакоmycloud
:yc resource-manager cloud add-access-binding mycloud \ --role viewer \ --subject federatedUser:aje6o61dvog2********
Воспользуйтесь методом REST API updateAccessBindings
для соответствующего ресурса.
-
Выберите роль в справочнике ролей Yandex Cloud.
-
Сформируйте тело запроса, например в файле
body.json
. В свойствеaction
укажитеADD
, а в свойствеsubject
- типfederatedUser
и идентификатор пользователя:body.json:
{ "accessBindingDeltas": [{ "action": "ADD", "accessBinding": { "roleId": "editor", "subject": { "id": "gfei8n54hmfh********", "type": "federatedUser" } } } ] }
-
Назначьте роль сервисному аккаунту. Например, на каталог с идентификатором
b1gvmob95yys********
:export FOLDER_ID=b1gvmob95yys******** export IAM_TOKEN=CggaAT******** curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${IAM_TOKEN}" \ -d '@body.json' \ "https://resource-manager.api.cloud.yandex.net/resource-manager/v1/folders/${FOLDER_ID}:updateAccessBindings"
Доступ к ресурсу для группы пользователей
Назначьте роль в облаке для группы пользователей:
- В консоли управления
выберите облако. - Перейдите на вкладку Права доступа.
- Нажмите кнопку Назначить роли.
- В открывшемся окне выберите раздел Группы.
- Выберите группу из списка или воспользуйтесь поиском, чтобы найти группу по названию.
- Нажмите кнопку
Добавить роль и выберите роль из списка или воспользуйтесь поиском. - Нажмите кнопку Сохранить.
Название группы отобразится в разделе Права доступа облака вместе с остальными пользователями, у которых есть роли в этом облаке.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
-
Выберите роль в справочнике ролей Yandex Cloud.
-
Назначьте роль с помощью команды:
yc <имя_сервиса> <категория_ресурса> add-access-binding <имя_или_идентификатор_ресурса> \ --role <идентификатор_роли> \ --subject group:<идентификатор_группы>
Где:
<имя_сервиса>
— имя сервиса, на чей ресурс назначается роль, напримерresource-manager
.<категория_ресурса>
— категория ресурса, напримерcloud
.<имя_или_идентификатор_ресурса>
— имя или идентификатор ресурса. Вы можете указать ресурс по имени или идентификатору.--role
— идентификатор роли, напримерresource-manager.clouds.owner
.--subject group
— идентификатор группы, которой назначается роль.
Например, назначьте роль
viewer
на облакоmycloud
:yc resource-manager cloud add-access-binding mycloud \ --role viewer \ --subject group:aje6o61dvog2********
Доступ к ресурсу всем пользователям
Вы можете предоставить публичный доступ к ресурсу. Для этого назначьте роль системной группе allAuthenticatedUsers
или allUsers
.
Системной группе можно назначить любые роли, кроме resource-manager.clouds.owner
и resource-manager.clouds.member
.
Внимание
Не назначайте системной группе роли editor
и admin
на каталог или облако. Это позволит любому, кто узнает идентификатор каталога, пользоваться ресурсами Yandex Cloud за ваш счет.
Например, разрешите любому прошедшему аутентификацию пользователю просматривать информацию о каталоге:
- В консоли управления
перейдите в нужный каталог. - Перейдите на вкладку Права доступа.
- Нажмите кнопку Назначить роли.
- В открывшемся окне выберите раздел Публичные.
- Выберите группу
All authenticated users
. - Нажмите кнопку
Добавить роль. - Выберите роль
resource-manager.viewer
. - Нажмите Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
Назначьте роль viewer
на каталог my-folder
. В качестве субъекта укажите тип system
и идентификатор allAuthenticatedUsers
:
yc resource-manager folder add-access-binding my-folder \
--role viewer \
--subject system:allAuthenticatedUsers
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Внимание
Не создавайте ресурс совместно с ресурсом yandex_resourcemanager_folder_iam_policy
. Они будут конфликтовать.
Чтобы назначить роль на каталог, созданный с помощью Terraform:
-
Опишите в конфигурационном файле параметры роли каталога:
-
folder_id
— идентификатор каталога, на который назначаются права. Обязательный параметр. -
role
— назначаемая роль. Обязательный параметр.Примечание
Для каждой роли можно использовать только один ресурс
yandex_resourcemanager_folder_iam_member
. -
member
— пользователь, которому будет присвоена роль. Чтобы добавить всех пользователей, создайте запись в форматеsystem:<allUsers|allAuthenticatedUsers>
, где<allUsers|allAuthenticatedUsers>
— одна из системных групп. Обязательный параметр.
Пример структуры конфигурационного файла:
... data "yandex_resourcemanager_folder" "project1" { folder_id = "<идентификатор_каталога>" } resource "yandex_resourcemanager_folder_iam_member" "viewer" { folder_id = "${data.yandex_resourcemanager_folder_iam_member.project1.id}" role = "viewer" member = "system:allUsers" } ...
Более подробную информацию о параметрах ресурса
yandex_resourcemanager_folder_iam_member
в Terraform см. в документации провайдера . -
-
Проверьте конфигурацию командой:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминал слово
yes
и нажмите Enter.Проверить изменение каталога можно в консоли управления
или с помощью команды CLI:yc resource-manager folder list-access-bindings <имя_или_идентификатор_каталога>
-
Сформируйте тело запроса, например в файле
body.json
. ВroleId
назначьте рольviewer
. В свойствеsubject
укажите типsystem
и идентификаторallAuthenticatedUsers
:body.json:
{ "accessBindingDeltas": [{ "action": "ADD", "accessBinding": { "roleId": "viewer", "subject": { "id": "allAuthenticatedUsers", "type": "system" } } }] }
-
Назначьте роль сервисному аккаунту. Например, на каталог с идентификатором
b1gvmob95yys********
:export FOLDER_ID=b1gvmob95yys******** export IAM_TOKEN=CggaAT******** curl -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${IAM_TOKEN}" \ -d '@body.json' \ "https://resource-manager.api.cloud.yandex.net/resource-manager/v1/folders/${FOLDER_ID}:updateAccessBindings"