Назначение прав доступа
Управление доступом в Yandex Cloud построено на политике Role Based Access Control (RBAC). Чтобы предоставить пользователю определенные права или доступ к ресурсу, нужно назначить ему соответствующие роли.
Каждая роль состоит из набора разрешений, описывающих допустимые операции с ресурсом. Пользователь может назначить роли только с теми разрешениями, которые имеются у него самого. Например, чтобы назначить роль владельца организации, пользователь должен сам обладать этой ролью, а роли администратора для этого недостаточно.
Если у ресурса есть дочерние ресурсы, то все разрешения от родительского ресурса будут унаследованы дочерними ресурсами. Например, если вы назначите пользователю роль администратора организации, в которой находится облако, то все разрешения этой роли будут действовать для облака и всех вложенных ресурсов этого облака.
Подробнее об управлении доступом в Yandex Cloud читайте в документации Yandex Identity and Access Management в разделе Как устроено управление доступом в Yandex Cloud.
Сервисные роли
-
organization-manager.admin
— роль администратора организации.Роль дает возможность редактировать настройки организации, создавать федерации удостоверений, добавлять и удалять пользователей, назначать других администраторов, управлять ресурсами облаков организации.
-
organization-manager.organizations.owner
— роль владельца организации.Роль дает возможность назначать владельцев организации, а также пользоваться всеми полномочиями администратора.
По умолчанию владелец организации — это пользователь, который ее создал.
-
organization-manager.viewer
— роль дает возможность просматривать настройки организации, но не редактировать их. -
organization-manager.groups.memberAdmin
— роль дает возможность просматривать информацию о группе, добавлять и удалять участников.
Назначить пользователя администратором организации
Чтобы дать пользователю права на управление организацией, назначьте ему одну из ролей:
organization-manager.admin
;organization-manager.organizations.owner
.
Назначить роль пользователю
Назначать роли в Yandex Cloud Organization могут администраторы и владельцы организации. Вы можете назначать пользователям не только роли для управления организацией, но и роли для доступа к ресурсам облаков, подключенных к вашей организации.
О том, какие роли доступны в Yandex Cloud и какие разрешения в них входят, читайте в документации Yandex Identity and Access Management в разделе Роли.
-
Войдите в аккаунт администратора или владельца организации.
-
Перейдите в сервис Yandex Cloud Organization.
-
На левой панели выберите раздел Пользователи .
-
Выберите пользователя из списка или воспользуйтесь строкой поиска вверху страницы.
-
В правом столбце нажмите значок
-
В окне Настройка прав доступа нажмите кнопку Добавить роль и введите название роли или выберите роль в списке.
Описание доступных ролей можно найти в документации Yandex Identity and Access Management в разделе Роли.
-
Нажмите кнопку Сохранить.
-
Выберите роль, которую хотите назначить. Описание ролей можно найти в документации Yandex Identity and Access Management в разделе Роли.
-
Назначьте роль с помощью команды:
yc <SERVICE-NAME> <RESOURCE> add-access-binding <RESOURCE-NAME>|<RESOURCE-ID> \ --role <ROLE-ID> \ --subject userAccount:<USER-ACCOUNT-ID>
<SERVICE-NAME>
— имя сервиса, на чей ресурс назначается роль, напримерorganization-manager
.<RESOURCE>
— категория ресурса. Для организации всегда имеет значениеorganization
.<RESOURCE-NAME>
— имя ресурса. Для организации в качестве имени используйте техническое название.<RESOURCE-ID>
— идентификатор ресурса.<ROLE-ID>
— идентификатор роли, напримерorganization-manager.admin
.<USER-ACCOUNT-ID>
— идентификатор аккаунта пользователя, которому назначается роль.
Например, назначьте роль администратора для организации с идентификатором
bpf3crucp1v28b74p3rk
:yc organization-manager organization add-access-binding bpf3crucp1v28b74p3rk \ --role organization-manager.admin \ --subject userAccount:aje6o61dvog2h6g9a33s
Воспользуйтесь методом updateAccessBindings
для соответствующего ресурса.
-
Выберите роль, которую хотите назначить. Описание ролей можно найти в документации Yandex Identity and Access Management в разделе Роли.
-
Сформируйте тело запроса, например в файле
body.json
. В свойствеaction
укажитеADD
, а в свойствеsubject
- типuserAccount
и идентификатор пользователя:Пример файла
body.json
:{ "accessBindingDeltas": [{ "action": "ADD", "accessBinding": { "roleId": "organization-manager.admin", "subject": { "id": "gfei8n54hmfhuk5nogse", "type": "userAccount" } } }] }
-
Назначьте роль. Например, для организации с идентификатором
bpf3crucp1v28b74p3rk
:
export ORGANIZATION_ID=bpf3crucp1v28b74p3rk
export IAM_TOKEN=CggaATEVAgA...
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${IAM_TOKEN}" \
-d '@body.json' \ "https://organization-manager.api.cloud.yandex.net/organization-manager/v1/organizations/${ORGANIZATION_ID}:updateAccessBindings"
Вы можете ознакомиться с подробной инструкцией назначения роли для соответствующего ресурса в документации Yandex Identity and Access Management и Yandex Resource Manager:
Если у вас ещё нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры назначаемых ролей:
organization_id
— идентификатор организации.role
— роль, которую хотите назначить. Описание ролей можно найти в документации Yandex Identity and Access Management в разделе Роли. Для каждой роли можно использовать только одинyandex_organization manager_organization_iam_binding
.members
— массив идентификаторов пользователей, которым будет назначена роль:userAccount:{user_id}
— идентификатор аккаунта пользователя на Яндексе.serviceAccount:{service_account_id}
— идентификатор сервисного аккаунта.federatedUser:{federated_user_id}
— идентификатор федеративного пользователя.
Пример структуры конфигурационного файла:
resource "yandex_organizationmanager_organization_iam_binding" "editor" { organization_id = "<ID организации>" role = "editor" members = [ "federatedUser:<ID пользователя>", ] }
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера.
-
Проверьте корректность конфигурационных файлов.
- В командной строке перейдите в папку, где вы создали конфигурационный файл.
- Выполните проверку с помощью команды:
$ terraform plan
Если конфигурация описана верно, в терминале отобразится список назначенных ролей. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Назначьте роли.
Если в конфигурации нет ошибок, выполните команду:
$ terraform apply
После этого в указанной организации будут назначены роли.
Отозвать роль у пользователя
Если вы хотите запретить пользователю доступ к ресурсу, отзовите у него соответствующие роли на этот ресурс и на ресурсы, от которых наследуются права доступа. Подробнее об управлении доступом в Yandex Cloud читайте в документации Yandex Identity and Access Management.
Отозвать роль может пользователь с ролью администратора organization-manager.admin
или владельца organization-manager.organizations.owner
организации. Как назначить роль пользователю, читайте в разделе Роли.
-
Войдите в аккаунт администратора или владельца организации.
-
Перейдите в сервис Yandex Cloud Organization.
-
На левой панели выберите раздел Пользователи .
-
Выберите пользователя из списка или воспользуйтесь строкой поиска вверху страницы.
-
В правом столбце нажмите значок
-
Нажмите значок
рядом с ролью, чтобы удалить ее. -
Нажмите кнопку Сохранить.
Чтобы отозвать роль у субъекта, удалите соответствующую привязку прав доступа для соответствующего ресурса:
-
Посмотрите, кому и какие роли назначены на ресурс:
yc <SERVICE-NAME> <RESOURCE> list-access-bindings <RESOURCE-NAME>|<RESOURCE-ID>
<SERVICE-NAME>
— имя сервиса, которому принадлежит ресурс, напримерorganization-manager
.<RESOURCE>
— категория ресурса. Для организации всегда имеет значениеorganization
.<RESOURCE-NAME>
— имя ресурса. Для организации в качестве имени используйте техническое название.<RESOURCE-ID>
— идентификатор ресурса.
Например, посмотрите, кому и какие роли назначены в организации с идентификатором
bpf3crucp1v28b74p3rk
:yc organization-manager organization list-access-bindings bpf3crucp1v28b74p3rk
Результат:
+------------------------------------------+--------------+----------------------+ | ROLE ID | SUBJECT TYPE | SUBJECT ID | +------------------------------------------+--------------+----------------------+ | organization-manager.organizations.owner | userAccount | aje3r40rsemj2f5b5jkk | | organization-manager.admin | userAccount | aje6o61dvog2h6g9a33s | +------------------------------------------+--------------+----------------------+
-
Чтобы удалить привязку прав доступа, выполните команду:
yc <SERVICE-NAME> <RESOURCE> remove-access-binding <RESOURCE-NAME>|<RESOURCE-ID> \ --role <ROLE-ID> \ --subject <SUBJECT-TYPE>:<SUBJECT-ID>
<ROLE-ID>
— идентификатор роли, которую надо отозвать, напримерorganization-manager.admin
.<SUBJECT-TYPE>
— тип субъекта, у которого отзывается роль.<SUBJECT-ID>
— идентификатор субъекта.
Например, чтобы отозвать роль у пользователя с идентификатором
aje6o61dvog2h6g9a33s
:yc organization-manager organization remove-access-binding bpf3crucp1v28b74p3rk \ --role organization-manager.admin \ --subject userAccount:aje6o61dvog2h6g9a33s
Чтобы отозвать роль у субъекта на ресурс, удалите соответствующую привязку прав доступа:
-
Посмотрите, кому и какие роли назначены на ресурс с помощью метода
listAccessBindings
. Например, чтобы посмотреть роли в организации с идентификаторомbpf3crucp1v28b74p3rk
:export ORGANIZATION_ID=bpf3crucp1v28b74p3rk export IAM_TOKEN=CggaATEVAgA... curl -H "Authorization: Bearer ${IAM_TOKEN}" "https://organization-manager.api.cloud.yandex.net/organization-manager/v1/organizations/${ORGANIZATION_ID}:listAccessBindings"
Результат:
{ "accessBindings": [ { "subject": { "id": "aje6o61dvog2h6g9a33s", "type": "userAccount" }, "roleId": "organization-manager.admin" } ] }
-
Сформируйте тело запроса, например в файле
body.json
. В теле запроса укажите, какую привязку прав доступа необходимо удалить. Например, отзовите у пользователяaje6o61dvog2h6g9a33s
рольorganization-manager.admin
:Пример файла
body.json
:{ "accessBindingDeltas": [{ "action": "REMOVE", "accessBinding": { "roleId": "organization-manager.admin", "subject": { "id": "aje6o61dvog2h6g9a33s", "type": "userAccount" } } }] }
-
Отзовите роль, удалив указанную привязку прав доступа:
export ORGANIZATION_ID=bpf3crucp1v28b74p3rk
export IAM_TOKEN=CggaATEVAgA...
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${IAM_TOKEN}" \
-d '@body.json' \ "https://organization-manager.api.cloud.yandex.net/organization-manager/v1/organizations/${ORGANIZATION_ID}:updateAccessBindings"