Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Решения
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Yandex Identity and Access Management
  • Начало работы
    • Как управлять доступом к ресурсам
    • Как работать с сервисными аккаунтами
  • Пошаговые инструкции
    • Все инструкции
    • Пользователи
      • Добавление пользователя
      • Получение идентификатора или почты пользователя
      • Удаление пользователя
    • Сервисные аккаунты
      • Создание сервисного аккаунта
      • Изменение сервисного аккаунта
      • Назначение роли сервисному аккаунту
      • Настройка прав доступа к сервисному аккаунту
      • Создание статических ключей доступа
      • Получение идентификатора сервисного аккаунта
      • Удаление сервисного аккаунта
    • Федерации удостоверений
      • Аутентификация с помощью Active Directory
      • Аутентификация с помощью G-Suite
      • Аутентификация с помощью федерации удостоверений
      • Добавление пользователей
    • Роли
      • Назначение роли
      • Просмотр назначенных ролей
      • Отзыв роли
    • IAM-токены
      • Получение IAM-токена для аккаунта на Яндексе
      • Получение IAM-токена для сервисного аккаунта
      • Получение IAM-токена для федеративного аккаунта
    • Ключи
      • Создание API-ключа
      • Удаление API-ключа
      • Создание авторизованного ключа
  • Концепции
    • Обзор
    • Как устроено управление доступом
      • Обзор
      • Роли
      • Системные группы
      • Ресурсы, на которые можно назначать роли
    • Авторизация
      • Обзор
      • IAM-токен
      • OAuth-токен
      • API-ключ
      • Авторизованные ключи
      • AWS-совместимые ключи доступа
    • Сервисные аккаунты
    • SAML-совместимые федерации удостоверений
    • Квоты и лимиты
  • Безопасное использование Yandex.Cloud
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC
      • Обзор
      • ApiKeyService
      • IamTokenService
      • KeyService
      • RoleService
      • ServiceAccountService
      • UserAccountService
      • YandexPassportUserAccountService
      • AccessKeyService
      • CertificateService
      • FederationService
      • OperationService
    • REST
      • Обзор
      • ApiKey
        • Обзор
        • create
        • delete
        • get
        • list
        • listOperations
        • update
      • IamToken
        • Обзор
        • create
      • Key
        • Обзор
        • create
        • delete
        • get
        • list
        • listOperations
        • update
      • Role
        • Обзор
        • get
        • list
      • ServiceAccount
        • Обзор
        • create
        • delete
        • get
        • list
        • listAccessBindings
        • listOperations
        • setAccessBindings
        • update
        • updateAccessBindings
      • UserAccount
        • Обзор
        • get
      • YandexPassportUserAccount
        • Обзор
        • getByLogin
      • Operation
        • Обзор
        • get
      • Federation
        • Обзор
        • update
        • list
        • listUserAccounts
        • get
        • delete
        • addUserAccounts
        • create
        • listOperations
      • Certificate
        • Обзор
        • update
        • list
        • get
        • delete
        • create
        • listOperations
      • AccessKey
        • Обзор
        • update
        • list
        • get
        • delete
        • create
        • listOperations
  • Вопросы и ответы
    • Общие вопросы
    • Вход в систему и доступ к ресурсам
    • Все вопросы на одной странице
  1. Пошаговые инструкции
  2. Сервисные аккаунты
  3. Настройка прав доступа к сервисному аккаунту

Настройка прав доступа к сервисному аккаунту

  • Назначить роль на сервисный аккаунт
  • Примеры
    • Назначить несколько ролей
    • Доступ сервисного аккаунта к другому сервисному аккаунту
    • Доступ к ресурсу всем пользователям

Этот раздел про назначение роли на сервисный аккаунт как на ресурс. Чтобы выдать роль сервисному аккаунту на другой ресурс, воспользуйтесь инструкцией Назначение роли сервисному аккаунту.

Через консоль управления нельзя установить права доступа к сервисному аккаунту. Вы можете назначить роль на каталог, которому принадлежит сервисный аккаунт.

Назначить роль на сервисный аккаунт

CLI
API

По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name или --folder-id.

  1. Посмотрите описание команды для назначения роли на сервисный аккаунт как на ресурс:

    $ yc iam service-account add-access-binding --help
    
  2. Выберите сервисный аккаунт, например my-robot:

    $ yc iam service-account list
    +----------------------+----------+------------------+
    |          ID          |   NAME   |   DESCRIPTION    |
    +----------------------+----------+------------------+
    | ajebqtreob2dpblin8pe | test-sa  | test-description |
    | aje6o61dvog2h6g9a33s | my-robot |                  |
    +----------------------+----------+------------------+
    
  3. Выберите роль:

    $ yc iam role list
    +--------------------------------+-------------+
    |               ID               | DESCRIPTION |
    +--------------------------------+-------------+
    | admin                          |             |
    | compute.images.user            |             |
    | editor                         |             |
    | ...                            |             |
    +--------------------------------+-------------+
    
  4. Узнайте ID пользователя по логину или адресу электронной почты. Чтобы назначить роль не пользователю, а сервисному аккаунту или группе пользователей, воспользуйтесь примерами ниже.

    $ yc iam user-account get test-user
    id: gfei8n54hmfhuk5nogse
    yandex_passport_user_account:
        login: test-user
        default_email: test-user@yandex.ru
    
  5. Назначьте пользователю test-user роль editor на сервисный аккаунт my-robot. В субъекте укажите тип userAccount и ID пользователя:

    $ yc iam service-account add-access-binding my-robot \
        --role editor \
        --subject userAccount:gfei8n54hmfhuk5nogse
    

Воспользуйтесь методом updateAccessBindings для ресурса ServiceAccount. Вам понадобится ID сервисного аккаунта и ID пользователя, которому назначается роль на сервисный аккаунт.

  1. Узнайте ID сервисного аккаунта с помощью метода list:

    $ curl -H "Authorization: Bearer <IAM-TOKEN>" \
        https://iam.api.cloud.yandex.net/iam/v1/serviceAccounts?folderId=b1gvmob95yysaplct532
    
    {
     "serviceAccounts": [
      {
       "id": "aje6o61dvog2h6g9a33s",
       "folderId": "b1gvmob95yysaplct532",
       "createdAt": "2018-10-19T13:26:29Z",
       "name": "my-robot"
      }
      ...
     ]
    }
    
  2. Узнайте ID пользователя по логину с помощью метода getByLogin:

    $ curl -H "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"
     }
    }
    
  3. Назначьте пользователю роль editor на сервисный аккаунт my-robot. В свойстве action укажите ADD, а в свойстве subject - тип userAccount и ID пользователя:

    $ curl -X POST \
        -H 'Content-Type: application/json' \
        -H "Authorization: Bearer <IAM-TOKEN>" \
        -d '{
        "accessBindingDeltas": [{
            "action": "ADD",
            "accessBinding": {
                "roleId": "editor",
                "subject": {
                    "id": "gfei8n54hmfhuk5nogse",
                    "type": "userAccount"
        }}}]}' \
        https://iam.api.cloud.yandex.net/iam/v1/serviceAccounts/aje6o61dvog2h6g9a33s:updateAccessBindings
    

Примеры

  • Назначить несколько ролей
  • Доступ сервисного аккаунта к другому сервисному аккаунту
  • Доступ к ресурсу всем пользователям

Назначить несколько ролей

CLI
API

Команда add-access-binding позволяет добавить только одну роль. Вы можете назначить несколько ролей с помощью команды set-access-binding.

Внимание

Команда set-access-binding полностью перезаписывает права доступа к ресурсу! Все текущие роли на ресурс будут удалены.

  1. Убедитесь, что на ресурс не назначено ролей, которые вы не хотите потерять:
    $ yc iam service-account list-access-bindings my-robot
    
  2. Например, назначьте роль нескольким пользователям:
    $ yc iam service-account set-access-bindings my-robot \
        --access-binding role=editor,subject=userAccount:gfei8n54hmfhuk5nogse
        --access-binding role=viewer,subject=userAccount:helj89sfj80aj24nugsz
    

Назначьте одному пользователю роль editor, а другому viewer:

$ curl -X POST \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer <IAM-TOKEN>" \
    -d '{
    "accessBindingDeltas": [{
        "action": "ADD",
        "accessBinding": {
            "roleId": "editor",
            "subject": {
                "id": "gfei8n54hmfhuk5nogse",
                "type": "userAccount"
            }
        }
    },{
        "action": "ADD",
        "accessBinding": {
            "roleId": "viewer",
            "subject": {
                "id": "helj89sfj80aj24nugsz",
                "type": "userAccount"
    }}}]}' \
    https://iam.api.cloud.yandex.net/iam/v1/serviceAccounts/aje6o61dvog2h6g9a33s:updateAccessBindings

Вы также можете назначать роли с помощью метода setAccessBindings.

Внимание

Метод setAccessBindings полностью перезаписывает права доступа к ресурсу! Все текущие роли на ресурс будут удалены.

curl -X POST \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer <IAM-TOKEN>" \
    -d '{
    "accessBindings": [{
        "roleId": "editor",
        "subject": { "id": "ajei8n54hmfhuk5nog0g", "type": "userAccount" }
    },{
        "roleId": "viewer",
        "subject": { "id": "helj89sfj80aj24nugsz", "type": "userAccount" }
    }]}' \
    https://iam.api.cloud.yandex.net/iam/v1/serviceAccounts/aje6o61dvog2h6g9a33s:setAccessBindings

Доступ сервисного аккаунта к другому сервисному аккаунту

Разрешите сервисному аккаунту test-sa управлять сервисным аккаунтом my-robot:

CLI
API
  1. Узнайте ID сервисного аккаунта test-sa, которому вы хотите назначить роль. Чтобы узнать ID, получите список доступных сервисных аккаунтов:

    $ yc iam service-account list
    +----------------------+----------+------------------+
    |          ID          |   NAME   |   DESCRIPTION    |
    +----------------------+----------+------------------+
    | ajebqtreob2dpblin8pe | test-sa  | test-description |
    | aje6o61dvog2h6g9a33s | my-robot |                  |
    +----------------------+----------+------------------+
    
  2. Назначьте роль editor сервисному аккаунту test-sa, указав его ID. В типе субъекта укажите serviceAccount:

    $ yc iam service-account add-access-binding my-robot \
        --role editor \
        --subject serviceAccount:ajebqtreob2dpblin8pe
    
  1. Узнайте ID сервисного аккаунта test-sa, которому вы хотите назначить роль. Чтобы узнать ID, получите список доступных сервисных аккаунтов:

    $ curl -H "Authorization: Bearer <IAM-TOKEN>" \
        https://iam.api.cloud.yandex.net/iam/v1/serviceAccounts?folderId=b1gvmob95yysaplct532
    
    {
     "serviceAccounts": [
      {
       "id": "ajebqtreob2dpblin8pe",
       "folderId": "b1gvmob95yysaplct532",
       "createdAt": "2018-10-18T13:42:40Z",
       "name": "test-sa",
       "description": "test-description"
      },
      {
       "id": "aje6o61dvog2h6g9a33s",
       "folderId": "b1gvmob95yysaplct532",
       "createdAt": "2018-10-15T18:01:25Z",
       "name": "my-robot"
      }
     ]
    }
    
  2. Назначьте сервисному аккаунту test-sa роль editor на другой сервисный аккаунт my-robot. В свойстве subject укажите тип serviceAccount и ID test-sa. В URL запроса в качестве ресурса укажите ID my-robot:

$ curl -X POST \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer <IAM-TOKEN>" \
    -d '{
    "accessBindingDeltas": [{
        "action": "ADD",
        "accessBinding": {
            "roleId": "editor",
            "subject": {
                "id": "ajebqtreob2dpblin8pe",
                "type": "serviceAccount"
    }}}]}' \
    https://iam.api.cloud.yandex.net/iam/v1/serviceAccounts/aje6o61dvog2h6g9a33s:updateAccessBindings

Доступ к ресурсу всем пользователям

Вы можете предоставить публичный доступ к ресурсу. Для этого назначьте роль системной группе allAuthenticatedUsers или allUsers.

Системной группе можно назначить любые роли, кроме resource-manager.clouds.owner и resource-manager.clouds.member.

Внимание

Не назначайте системной группе роли editor и admin на каталог или облако. Это позволит любому, кто узнает идентификатор каталога, пользоваться ресурсами Yandex.Cloud за ваш счет.

Например, разрешите любому прошедшему аутентификацию пользователю просматривать информацию о сервисном аккаунте my-robot:

CLI
API

Назначьте роль viewer системной группе allAuthenticatedUsers. В типе субъекта укажите system:

$ yc iam service-account add-access-binding my-robot \
    --role viewer \
    --subject system:allAuthenticatedUsers

Назначьте роль viewer системной группе allAuthenticatedUsers. В свойстве subject укажите тип system:

$ curl -X POST \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer <IAM-TOKEN>" \
    -d '{
    "accessBindingDeltas": [{
        "action": "ADD",
        "accessBinding": {
            "roleId": "viewer",
            "subject": {
                "id": "allAuthenticatedUsers",
                "type": "system"
    }}}]}' \
    https://iam.api.cloud.yandex.net/iam/v1/serviceAccounts/aje6o61dvog2h6g9a33s:updateAccessBindings
В этой статье:
  • Назначить роль на сервисный аккаунт
  • Примеры
  • Назначить несколько ролей
  • Доступ сервисного аккаунта к другому сервисному аккаунту
  • Доступ к ресурсу всем пользователям
Language
Вакансии
Политика конфиденциальности
Условия использования
© 2021 ООО «Яндекс.Облако»