Управление доступом в Yandex Cloud Organization
Управление доступом в Yandex Cloud построено на политике Role Based Access Control
Каждая роль состоит из набора разрешений, описывающих допустимые операции с ресурсом. Пользователь может назначить роли только с теми разрешениями, которые имеются у него самого. Например, чтобы назначить роль владельца организации, пользователь должен сам обладать этой ролью, а роли администратора для этого недостаточно.
Если у ресурса есть дочерние ресурсы, то все разрешения от родительского ресурса будут унаследованы дочерними ресурсами. Например, если вы назначите пользователю роль администратора организации, в которой находится облако, то все разрешения этой роли будут действовать для облака и всех вложенных ресурсов этого облака.
Подробнее об управлении доступом в Yandex Cloud читайте в документации Yandex Identity and Access Management в разделе Как устроено управление доступом в Yandex Cloud.
На какие ресурсы можно назначить роль
Как и в других сервисах, роль можно назначить на облако, каталог или сервисный аккаунт. Роли, назначенные на облако или каталог, действуют и на вложенные ресурсы.
Через YC CLI или API Yandex Cloud роль можно назначить на отдельные ресурсы сервиса:
Какие роли действуют в сервисе
Сервисные роли
organization-manager.viewer
Роль organization-manager.viewer
дает возможность просматривать настройки организации, но не редактировать их.
organization-manager.admin
Роль organization-manager.admin
дает возможность редактировать настройки организации, создавать федерации удостоверений, добавлять и удалять пользователей, назначать других администраторов.
organization-manager.organizations.owner
Роль organization-manager.organizations.owner
дает возможность назначать владельцев организации, а также пользоваться всеми полномочиями администратора.
organization-manager.federations.viewer
Роль organization-manager.federations.viewer
предоставляет доступ к информации об организациях и федерациях.
Пользователь с этой ролью может просматривать настройки организации, получать список организаций и федераций, а также список сопоставлений групп.
organization-manager.federations.admin
Роль organization-manager.federations.admin
предоставляет полный доступ к управлению федерациями, а также к информации об организациях.
Пользователь с этой ролью может создавать, изменять и удалять федерации, сертификаты и пользователей в них, просматривать настройки организации, получать список организаций и федераций, а также список сопоставлений групп.
Включает разрешения, предоставляемые ролью organization-manager.federations.viewer
.
organization-manager.osLogins.viewer
Роль organization-manager.osLogins.viewer
позволяет просматривать профили и ключи пользователей организации.
organization-manager.osLogins.admin
Роль organization-manager.osLogins.admin
позволяет редактировать профили, ключи и создавать сертификаты для пользователей организации.
organization-manager.groups.memberAdmin
Роль organization-manager.groups.memberAdmin
дает возможность просматривать информацию о группе, добавлять и удалять участников.
Примитивные роли
auditor
Позволяет просматривать конфигурацию и метаданные сервиса без возможности доступа к данным.
viewer
Позволяет просматривать информацию о ресурсах.
editor
Позволяет управлять ресурсами, например создавать, изменять и удалять их.
admin
Позволяет управлять ресурсами и доступом к ним.
Подробнее о примитивных ролях см. в справочнике ролей Yandex Cloud.
Назначить пользователя администратором организации
Чтобы дать пользователю права на управление организацией, назначьте ему одну из ролей:
organization-manager.admin
;organization-manager.organizations.owner
.
Назначить роль пользователю
Назначать роли в Yandex Cloud Organization могут администраторы и владельцы организации. Вы можете назначать пользователям не только роли для управления организацией, но и роли для доступа к ресурсам облаков, подключенных к вашей организации.
О том, какие роли доступны в Yandex Cloud и какие разрешения в них входят, читайте в документации Yandex Identity and Access Management в справочнике ролей Yandex Cloud.
-
Войдите в аккаунт
администратора или владельца организации. -
Перейдите в сервис Yandex Cloud Organization
. -
На панели слева выберите раздел Права доступа
. -
Если у нужного пользователя уже есть хотя бы одна роль, выберите его из списка или воспользуйтесь строкой поиска вверху страницы. В строке пользователя нажмите значок
и выберите Назначить роли.Если нужного пользователя нет в списке, в правом верхнем углу страницы нажмите кнопку Назначить роли. В открывшемся окне нажмите кнопку Выбрать пользователя и выберите пользователя из списка или воспользуйтесь строкой поиска.
-
Нажмите Добавить роль и введите название роли или выберите роль в списке.
Описание доступных ролей можно найти в документации Yandex Identity and Access Management в справочнике ролей Yandex Cloud.
-
Нажмите Сохранить.
-
Выберите роль, которую хотите назначить. Описание ролей можно найти в документации Yandex Identity and Access Management в справочнике ролей Yandex Cloud.
-
Назначьте роль с помощью команды:
yc <имя_сервиса> <ресурс> add-access-binding <имя_или_идентификатор_ресурса> \ --role <идентификатор_роли> \ --subject <тип_субъекта>:<идентификатор_субъекта>
<имя_сервиса>
— имя сервиса, на чей ресурс назначается роль, напримерorganization-manager
.<ресурс>
— категория ресурса. Для организации всегда имеет значениеorganization
.<имя_или_идентификатор_ресурса>
— имя или идентификатор ресурса. Для организации в качестве имени используйте техническое название.--role
— идентификатор роли, напримерorganization-manager.admin
.--subject
— тип и идентификатор субъекта, которому назначается роль.
Например, назначьте роль администратора для организации с идентификатором
bpf3crucp1v2********
:yc organization-manager organization add-access-binding bpf3crucp1v2******** \ --role organization-manager.admin \ --subject userAccount:aje6o61dvog2********
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Опишите в конфигурационном файле параметры назначаемых ролей:
organization_id
— идентификатор организации.role
— роль, которую хотите назначить. Описание ролей можно найти в документации Yandex Identity and Access Management в справочнике ролей Yandex Cloud. Для каждой роли можно использовать только один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 = "<идентификатор_организации>" role = "editor" members = [ "federatedUser:<идентификатор_пользователя>", ] }
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера
. -
Проверьте корректность конфигурационных файлов.
- В командной строке перейдите в папку, где вы создали конфигурационный файл.
- Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список назначенных ролей. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Назначьте роли.
Если в конфигурации нет ошибок, выполните команду:
terraform apply
После этого в указанной организации будут назначены роли.
Воспользуйтесь методом updateAccessBindings
для соответствующего ресурса.
-
Выберите роль, которую хотите назначить. Описание ролей можно найти в документации Yandex Identity and Access Management в справочнике ролей Yandex Cloud.
-
Сформируйте тело запроса, например, в файле
body.json
. В свойствеaction
укажитеADD
, а в свойствеsubject
— типuserAccount
и идентификатор пользователя:Пример файла
body.json
:{ "accessBindingDeltas": [{ "action": "ADD", "accessBinding": { "roleId": "organization-manager.admin", "subject": { "id": "gfei8n54hmfh********", "type": "userAccount" } } }] }
-
Назначьте роль. Например, для организации с идентификатором
bpf3crucp1v2********
:export ORGANIZATION_ID=bpf3crucp1v2******** export IAM_TOKEN=CggaAT******** 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:
Аналогичным образом можно назначить роль на организацию сервисному аккаунту.
Отозвать роль у пользователя
Если вы хотите запретить пользователю доступ к ресурсу, отзовите у него соответствующие роли на этот ресурс и на ресурсы, от которых наследуются права доступа. Подробнее об управлении доступом в Yandex Cloud читайте в документации Yandex Identity and Access Management.
Отозвать роль может пользователь с ролью администратора organization-manager.admin
или владельца organization-manager.organizations.owner
организации. О том, как назначить пользователю роль, читайте в разделе Роли.
-
Войдите в аккаунт
администратора или владельца организации. -
Перейдите в сервис Yandex Cloud Organization
. -
На панели слева выберите раздел
Права доступа . -
Выберите пользователя из списка или воспользуйтесь строкой поиска вверху страницы.
-
В правом столбце нажмите значок
и выберите Назначить роли. -
Нажмите значок
рядом с ролью, чтобы удалить ее. -
Нажмите кнопку Сохранить.
Чтобы отозвать роль у субъекта, удалите соответствующую привязку прав доступа для соответствующего ресурса:
-
Посмотрите, кому и какие роли назначены на ресурс:
yc <имя_сервиса> <ресурс> list-access-bindings <имя_или_идентификатор_ресурса>
<имя_сервиса>
— имя сервиса, которому принадлежит ресурс, напримерorganization-manager
.<ресурс>
— категория ресурса. Для организации всегда имеет значениеorganization
.<имя_или_идентификатор_ресурса>
— имя или идентификатор ресурса. Для организации в качестве имени используйте техническое название.
Например, посмотрите, кому и какие роли назначены в организации с идентификатором
bpf3crucp1v2********
:yc organization-manager organization list-access-bindings bpf3crucp1v2********
Результат:
+------------------------------------------+--------------+----------------------+ | ROLE ID | SUBJECT TYPE | SUBJECT ID | +------------------------------------------+--------------+----------------------+ | organization-manager.organizations.owner | userAccount | aje3r40rsemj******** | | organization-manager.admin | userAccount | aje6o61dvog2******** | +------------------------------------------+--------------+----------------------+
-
Чтобы удалить привязку прав доступа, выполните команду:
yc <имя_сервиса> <ресурс> remove-access-binding <имя_или_идентификатор_ресурса> \ --role <идентификатор_роли> \ --subject <тип_субъекта>:<идентификатор_субъекта>
--role
— идентификатор роли, которую надо отозвать, напримерorganization-manager.admin
.--subject
— тип и идентификатор субъекта, у которого отзывается роль.
Например, чтобы отозвать роль у пользователя с идентификатором
aje6o61dvog2********
:yc organization-manager organization remove-access-binding bpf3crucp1v2******** \ --role organization-manager.admin \ --subject userAccount:aje6o61dvog2********
Чтобы отозвать роль у субъекта на ресурс, удалите соответствующую привязку прав доступа:
-
Посмотрите, кому и какие роли назначены на ресурс с помощью метода
listAccessBindings
. Например, чтобы посмотреть роли в организации с идентификаторомbpf3crucp1v2********
:export ORGANIZATION_ID=bpf3crucp1v2******** export IAM_TOKEN=CggaAT******** curl -H "Authorization: Bearer ${IAM_TOKEN}" "https://organization-manager.api.cloud.yandex.net/organization-manager/v1/organizations/${ORGANIZATION_ID}:listAccessBindings"
Результат:
{ "accessBindings": [ { "subject": { "id": "aje6o61dvog2********", "type": "userAccount" }, "roleId": "organization-manager.admin" } ] }
-
Сформируйте тело запроса, например в файле
body.json
. В теле запроса укажите, какую привязку прав доступа необходимо удалить. Например, отзовите у пользователяaje6o61dvog2********
рольorganization-manager.admin
:Пример файла
body.json
:{ "accessBindingDeltas": [{ "action": "REMOVE", "accessBinding": { "roleId": "organization-manager.admin", "subject": { "id": "aje6o61dvog2********", "type": "userAccount" } } }] }
-
Отзовите роль, удалив указанную привязку прав доступа:
export ORGANIZATION_ID=bpf3crucp1v2******** export IAM_TOKEN=CggaAT******** 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 Cloud Organization группе можно назначить роль на организацию, облако, каталог, другую группу или сервисный аккаунт.
Назначить роль на облако или каталог
- Войдите в аккаунт
администратора или владельца организации. - Перейдите в сервис Yandex Cloud Organization
. - На панели слева выберите раздел
Права доступа . - Справа сверху нажмите кнопку Назначить роли.
- Перейдите на вкладку Группы и выберите группу, или воспользуйтесь поиском по названию группы.
- Нажмите Добавить роль и выберите роль в облаке или каталоге. Вы можете назначить больше одной роли.
- Нажмите Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
-
Выберите роль из справочника ролей Yandex Cloud.
-
Назначьте роль с помощью команды:
yc <имя_сервиса> <ресурс> add-access-binding <имя_или_идентификатор_ресурса> \ --role <идентификатор_роли> \ --subject group:<идентификатор_группы>
Где:
<имя_сервиса>
— имя сервиса, для доступа к ресурсу которого назначается роль, например,resource-manager
.<ресурс>
— категория ресурса, например,cloud
.<имя_или_идентификатор_ресурса>
— имя или идентификатор ресурса. Вы можете указать имя или идентификатор ресурса.--role
— идентификатор роли, например,resource-manager.clouds.owner
.--subject group
— идентификатор группы, которой назначается роль.
Например, назначьте роль
resource-manager.viewer
на облакоmycloud
:yc resource-manager cloud add-access-binding mycloud \ --role resource-manager.viewer \ --subject group:aje6o61dvog2********
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Добавьте в конфигурационный файл параметры ресурса, укажите нужную роль и группу:
resource "yandex_resourcemanager_cloud_iam_member" "admin" { cloud_id = "<идентификатор_облака>" role = "<идентификатор_роли>" member = "group:<идентификатор_группы>" }
Где:
cloud_id
— идентификатор облака. Вы также можете назначить роль внутри отдельного каталога. Для этого вместоcloud_id
укажитеfolder_id
и нужный идентификатор каталога в параметрах ресурса.role
— назначаемая роль. Обязательный параметр.member
— группа, которой назначается роль. Указывается в видеgroup:<идентификатор_группы>
. Обязательный параметр.
Более подробную информацию о параметрах ресурса
yandex_resourcemanager_cloud_iam_member
см. в документации провайдера . -
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить создание ресурса можно в консоли управления
или с помощью команды CLI: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
- типgroup
и идентификатор группы:body.json:
{ "accessBindingDeltas": [{ "action": "ADD", "accessBinding": { "roleId": "editor", "subject": { "id": "<идентификатор_группы>", "type": "group" } } }] }
-
Назначьте роль сервисному аккаунту. Например, на каталог с идентификатором
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 Organization
. - На панели слева выберите раздел
Права доступа . - Справа сверху нажмите кнопку Назначить роли.
- Перейдите на вкладку Группы и выберите группу, или воспользуйтесь поиском по названию группы.
- Нажмите кнопку Добавить роль и выберите роль в организации. Вы можете назначить больше одной роли.
- Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
-
yc organization-manager organization add-access-binding \ --subject=group:<идентификатор_группы> \ --role=<идентификатор_роли> \ <идентификатор_организации>
-
Проверьте, что запрошенные права были выданы:
yc organization-manager organization list-access-bindings <идентификатор_организации>
Ответ содержит список всех ролей, выданных пользователям и группам в организации:
+------------------------------------------+--------------+----------------------+ | ROLE ID | SUBJECT TYPE | SUBJECT ID | +------------------------------------------+--------------+----------------------+ | organization-manager.admin | userAccount | ajev1p2345lj******** | | organization-manager.organizations.owner | userAccount | ajev1p2345lj******** | | editor | group | ajev1p2345lj******** | | viewer | group | ajev1p2345lj******** | +------------------------------------------+--------------+----------------------+
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Добавьте в конфигурационный файл параметры ресурса, укажите нужную роль и группу:
resource "yandex_organizationmanager_organization_iam_member" "users-editors" { organization_id = "<идентификатор_облака>" role = "<идентификатор_роли>" member = "group:<идентификатор_группы>" }
Где:
organization_id
— идентификатор облака. Обязательный параметр.role
— назначаемая роль. Обязательный параметр.member
— группа, которой назначается роль. Указывается в видеgroup:<идентификатор_группы>
. Обязательный параметр.
Более подробную информацию о параметрах ресурса
yandex_organizationmanager_organization_iam_member
см. в документации провайдера . -
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить создание ресурса можно в консоли управления
или с помощью команды CLI:yc resource-manager folder list-access-bindings <имя_или_идентификатор_папки>
-