Настройте облако
При регистрации в Yandex Cloud для пользователя будет создано облако — отдельное рабочее пространство, для которого этот пользователь будет назначен владельцем. В облаке будет создан каталог default
и сеть default
.
Владелец может создавать в этом облаке новые каталоги и ресурсы, а также управлять правами доступа к ним.
Создайте каталог
-
В консоли управления
в списке слева выберите нужное облако. -
Справа сверху нажмите кнопку Создать каталог.
-
Введите имя каталога. Требования к имени:
- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
(Опционально) Введите описание каталога.
-
Выберите опцию Создать сеть по умолчанию. Будет создана сеть с подсетями в каждой зоне доступности. Также в этой сети будет создана группа безопасности по умолчанию, внутри которой весь сетевой трафик разрешен.
-
Нажмите кнопку Создать.
-
Посмотрите описание команды создания каталога:
yc resource-manager folder create --help
-
Создайте новый каталог:
-
с именем и без описания:
yc resource-manager folder create \ --name new-folder
Требования к имени каталога:
- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
с именем и описанием:
yc resource-manager folder create \ --name new-folder \ --description "my first folder with description"
-
Измените каталог
Через консоль управления можно изменить только имя каталога. Чтобы изменить его описание, используйте CLI или API.
- Выберите каталог на стартовой странице
консоли управления. На этой странице отображаются каталоги для выбранного облака. Если необходимо, переключитесь на другое облако. - Нажмите значок
напротив каталога и выберите Редактировать. - Введите новое имя каталога.
- Нажмите кнопку Сохранить.
-
Посмотрите описание команды изменения каталога:
yc resource-manager folder update --help
-
Если вы знаете идентификатор или имя каталога, переходите к следующему шагу. Если нет, то узнайте это одним из способов:
-
Получите список каталогов:
$ yc resource-manager folder list +----------------------+--------------------+--------+--------+-------------+ | ID | NAME | LABELS | STATUS | DESCRIPTION | +----------------------+--------------------+--------+--------+-------------+ | b1gppulhhm2aaufq9eug | yet-another-folder | | ACTIVE | | | b1gvmob95yysaplct532 | default | | ACTIVE | | +----------------------+--------------------+--------+--------+-------------+
-
Если вы знаете идентификатор ресурса, который принадлежит нужному каталогу, получите идентификатор каталога из информации об этом ресурсе:
yc <SERVICE-NAME> <RESOURCE> get <RESOURCE-ID>
где:
<SERVICE-NAME>
— имя сервиса, напримерcompute
.<RESOURCE>
— категория ресурса, напримерinstance
.<RESOURCE-ID>
— идентификатор ресурса.
Например, виртуальная машина
fhmp74bfis2aim728p2a
принадлежит каталогуb1gpvjd9ir42nsng55ck
:yc compute instance get fhmp74bfis2ais728p2a id: fhmp74bfis2ais728p2a folder_id: b1gpvjd9ia42nsng55ck ...
-
-
Измените параметры каталога, например имя и описание. Вы можете указать изменяемый каталог по имени или идентификатору.
yc resource-manager folder update default \ --new-name myfolder \ --description "this is my default-folder"
Команда переименует каталог
default
вmyfolder
и обновит его описание.Требования к имени каталога:
- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
Назначьте роли на каталог
- В консоли управления
в списке слева выберите нужное облако. - Перейдите на вкладку Права доступа
. - Нажмите значок
напротив нужного пользователя и выберите Изменить роли. - В открывшемся окне нажмите
Добавить роль и выберите необходимую роль из списка. - Нажмите Сохранить.
-
Посмотрите описание команды для назначения роли на каталог:
yc resource-manager folder add-access-binding --help
-
Выберите каталог, например
my-folder
:yc resource-manager folder list +----------------------+-----------+--------+--------+ | ID | NAME | LABELS | STATUS | +----------------------+-----------+--------+--------+ | b1gd129pp9ha0vnvf5g7 | my-folder | | ACTIVE | +----------------------+-----------+--------+--------+
-
Выберите роль:
yc iam role list +--------------------------------+-------------+ | ID | DESCRIPTION | +--------------------------------+-------------+ | admin | | | compute.images.user | | | editor | | | ... | | +--------------------------------+-------------+
-
Узнайте ID пользователя по логину или адресу электронной почты. Чтобы назначить роль не пользователю, а сервисному аккаунту или группе пользователей, воспользуйтесь примерами ниже.
yc iam user-account get test-user id: gfei8n54hmfhuk5nogse yandex_passport_user_account: login: test-user default_email: test-user@yandex.ru
-
Назначьте пользователю
test-user
рольeditor
на каталогmy-folder
. В субъекте укажите типuserAccount
и ID пользователя:yc resource-manager folder add-access-binding my-folder \ --role editor \ --subject userAccount:gfei8n54hmfhuk5nogse
Воспользуйтесь методом updateAccessBindings для ресурса Folder. Вам понадобится ID каталога и ID пользователя, которому назначается роль на каталог.
-
Узнайте ID каталога с помощью метода list:
curl \ --header "Authorization: Bearer <IAM-TOKEN>" \ https://resource-manager.api.cloud.yandex.net/resource-manager/v1/folders?cloudId=b1gg8sgd16g7qca5onqs { "folders": [ { "id": "b1g66mft1vopnevbn57j", "cloudId": "b1gd129pp9ha0vnvf5g7", "createdAt": "2018-10-17T12:44:31Z", "name": "my-folder", "status": "ACTIVE" } ] }
-
Узнайте ID пользователя по логину с помощью метода getByLogin:
curl \ --header "Authorization: Bearer <IAM-TOKEN>" \ https://iam.api.cloud.yandex.net/iam/v1/yandexPassportUserAccounts:byLogin?login=test-user { "id": "gfei8n54hmfhuk5nogse", "yandexPassportUserAccount": { "login": "test-user", "defaultEmail": "test-user@yandex.ru" } }
-
Назначьте пользователю роль
editor
на каталогmy-folder
. В свойствеaction
укажитеADD
, а в свойствеsubject
- типuserAccount
и ID пользователя:curl \ --request POST \ --header 'Content-Type: application/json' \ --header "Authorization: Bearer <IAM-TOKEN>" \ --data '{ "accessBindingDeltas": [{ "action": "ADD", "accessBinding": { "roleId": "editor", "subject": { "id": "gfei8n54hmfhuk5nogse", "type": "userAccount" }}}]}' \ https://resource-manager.api.cloud.yandex.net/resource-manager/v1/folders/b1gd129pp9ha0vnvf5g7:updateAccessBindings
Назначьте несколько ролей
Назначьте пользователю несколько ролей по инструкции выше.
Команда add-access-binding
позволяет добавить только одну роль. Вы можете назначить несколько ролей с помощью команды set-access-binding
.
Внимание
Команда set-access-binding
полностью перезаписывает права доступа к ресурсу! Все текущие роли на ресурс будут удалены.
-
Убедитесь, что на ресурс не назначено ролей, которые вы не хотите потерять:
yc resource-manager folder list-access-binding my-folder
-
Например, назначьте роль нескольким пользователям:
yc resource-manager folder set-access-bindings my-folder \ --access-binding role=editor,subject=userAccount:gfei8n54hmfhuk5nogse --access-binding role=viewer,subject=userAccount:helj89sfj80aj24nugsz
Назначьте одному пользователю роль editor
, а другому viewer
:
curl \
--request POST \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer <IAM-TOKEN>" \
--data '{
"accessBindingDeltas": [{
"action": "ADD",
"accessBinding": {
"roleId": "editor",
"subject": {
"id": "gfei8n54hmfhuk5nogse",
"type": "userAccount"
}
}
},{
"action": "ADD",
"accessBinding": {
"roleId": "viewer",
"subject": {
"id": "helj89sfj80aj24nugsz",
"type": "userAccount"
}}}]}' \
https://resource-manager.api.cloud.yandex.net/resource-manager/v1/folders/b1gd129pp9ha0vnvf5g7:updateAccessBindings
Вы также можете назначать роли с помощью метода setAccessBindings.
Внимание
Метод setAccessBindings
полностью перезаписывает права доступа к ресурсу! Все текущие роли на ресурс будут удалены.
curl \
--request POST \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer <IAM-TOKEN>" \
--data '{
"accessBindings": [{
"roleId": "editor",
"subject": { "id": "ajei8n54hmfhuk5nog0g", "type": "userAccount" }
},{
"roleId": "viewer",
"subject": { "id": "helj89sfj80aj24nugsz", "type": "userAccount" }
}]}' \
https://resource-manager.api.cloud.yandex.net/resource-manager/v1/folders/b1gd129pp9ha0vnvf5g7:setAccessBindings
Дайте доступ к каталогу для сервисного аккаунта
Вы можете назначить роль не только на каталог, но и на его дочерние ресурсы. Они перечислены в разделе Список ресурсов, на которые можно назначать роли.
Разрешите сервисному аккаунту управлять каталогом и ресурсами в нем:
- В консоли управления
выберите каталог. - Перейдите на вкладку Права доступа.
- Нажмите кнопку Настроить доступ.
- В открывшемся окне выберите раздел Сервисные аккаунты.
- Выберите сервисный аккаунт из списка или воспользуйтесь поиском.
- Нажмите кнопку
Добавить роль и выберите роль в каталоге. - Нажмите кнопку Сохранить.
-
Выберите роль, которую хотите назначить сервисному аккаунту. Описание ролей можно найти в документации 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********
Чтобы назначить сервисному аккаунту роль на облако или каталог, воспользуйтесь методом 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 \ --header "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 \ --request POST \ --header "Content-Type: application/json" \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --data '@body.json' \ "https://resource-manager.api.cloud.yandex.net/resource-manager/v1/folders/${FOLDER_ID}:updateAccessBindings"