[Документация Yandex Cloud](../../../index.md) > [Yandex Container Registry](../../index.md) > [Пошаговые инструкции](../index.md) > Работа с ролями > Назначить роль

# Назначить роль на ресурс

Чтобы предоставить доступ к [ресурсу](../../../iam/concepts/access-control/resources-with-access-control.md), назначьте субъекту [роль](../../../iam/concepts/access-control/roles.md) на сам ресурс или на ресурс, от которого наследуются права доступа, например на [каталог](../../../resource-manager/concepts/resources-hierarchy.md#folder) или [облако](../../../resource-manager/concepts/resources-hierarchy.md#cloud). Актуальный список ресурсов, на которые можно назначать роли, доступен в разделе [На какие ресурсы можно назначить роль](../../security/index.md#resources).

{% list tabs group=instructions %}

- Консоль управления {#console}

  1. В [консоли управления](https://kz.console.yandex.cloud) выберите каталог, в котором нужно назначить роль на ресурс.
  1. Перейдите в сервис **Container Registry**.
  1. Выберите [реестр](../../concepts/registry.md) или [репозиторий](../../concepts/repository.md) в нем.
  1. Перейдите на вкладку **Права доступа**.
  1. Нажмите кнопку **Назначить роли**.
  1. В открывшемся окне выберите группу, пользователя или [сервисный аккаунт](../../../iam/concepts/users/service-accounts.md).
  1. Нажмите кнопку ![image](../../../_assets/console-icons/plus.svg) **Добавить роль** и выберите роль из списка.
  1. Нажмите кнопку **Сохранить**.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Выполните команду, чтобы назначить роль на ресурс:

  * пользователю:

    ```bash
    yc container <ресурс> add-access-binding <имя_или_идентификатор_ресурса> \
      --role <роль> \
      --user-account-id <идентификатор_пользователя>
    ```

  * [сервисному аккаунту](../../../iam/concepts/users/service-accounts.md):

    ```bash
    yc container <ресурс> add-access-binding <имя_или_идентификатор_ресурса> \
      --role <роль> \
      --service-account-id <идентификатор_сервисного_аккаунта>
    ```

  * всем авторизованным пользователям ([публичная группа](../../../iam/concepts/access-control/public-group.md) `All authenticated users`):

    ```bash
    yc container <ресурс> add-access-binding <имя_или_идентификатор_ресурса> \
      --role <роль> \
      --all-authenticated-users
    ```

    Где:
    * `<ресурс>` — тип ресурса `registry` (реестр) или `repository` (репозиторий);
    * `<имя_или_идентификатор_ресурса>` — имя или идентификатор ресурса, на который назначается роль;
    * `<роль>` — [роль](../../security/index.md#service-roles), которую необходимо назначить.
  
  **Пример**

  В примере ниже пользователю назначается роль `container-registry.admin` на реестр `my-first-registry`.

  ```bash
  yc container registry add-access-binding my-first-registry \
    --role container-registry.admin \
    --user-account-id ajeugsk5ubk6********
  ```

  Результат:

  ```text
  done (4s)
  ```

- Terraform {#tf}

  Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../../terraform/authentication.md) соответствующим способом.

  1. Опишите в конфигурационном файле:
     * Параметры ресурса `yandex_container_registry_iam_binding`, чтобы назначить роль на [реестр](../../concepts/registry.md):

       ```
       resource "yandex_container_registry_iam_binding" "имя_реестра" {
         registry_id = "<идентификатор_реестра>"
         role        = "<роль>"
       
         members = [
           "userAccount:<идентификатор_пользователя>",
         ]
       }
       ```

       Где:
       * `registry_id` — идентификатор реестра, на который назначается роль. Чтобы узнать идентификатор реестра, [получите список реестров в каталоге](../registry/registry-list.md#registry-list).
       * `role` — [роль](../../security/index.md#service-roles), которую необходимо назначить.
       * `members` — идентификатор пользователя, группы или сервисного аккаунта, которому назначается роль.
     
     * Параметры ресурса `yandex_container_repository_iam_binding`, чтобы назначить роль на [репозиторий](../../concepts/repository.md):

       ```
       resource "yandex_container_repository_iam_binding" "имя_репозитория" {
         repository_id = "<идентификатор_репозитория>"
         role          = "<роль>"
       
         members = [
           "serviceAccount:<идентификатор_сервисного_аккаунта>",
         ]
       }
       ```

       Где:
       * `repository_id` — идентификатор репозитория, на который назначается роль. Чтобы узнать идентификатор репозитория, [получите список репозиториев в каталоге](../repository/repository-list.md#repository-list).
       * `role` — роль, которую необходимо назначить.
       * `members` — идентификатор пользователя, группы или сервисного аккаунта, которому назначается роль.

     Подробнее о параметрах ресурса `yandex_container_repository_iam_binding` в [документации провайдера](../../../terraform/resources/container_repository_iam_binding.md).
  
  1. 1. В терминале перейдите в директорию с конфигурационным файлом.
     1. Проверьте корректность конфигурации с помощью команды:
     
        ```bash
        terraform validate
        ```
     
        Если конфигурация является корректной, появится сообщение:
     
        ```bash
        Success! The configuration is valid.
        ```
     
     1. Выполните команду:
     
        ```bash
        terraform plan
        ```
     
        В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
     1. Примените изменения конфигурации:
     
        ```bash
        terraform apply
        ```
     
     1. Подтвердите изменения: введите в терминале слово `yes` и нажмите **Enter**.

  Проверить назначение роли можно в [консоли управления](https://kz.console.yandex.cloud) или с помощью команды [CLI](../../../cli/quickstart.md):

     * Для реестра:

       ```bash
       yc container registry list-access-bindings <имя_или_идентификатор_реестра>
       ```

     * Для репозитория:

       ```bash
       yc container repository list-access-bindings <имя_или_идентификатор_репозитория>
       ```

- API {#api}

  Воспользуйтесь методом REST API [updateAccessBindings](../../api-ref/Registry/updateAccessBindings.md) для ресурса [Registry](../../api-ref/Registry/index.md) или вызовом gRPC API [RegistryService/UpdateAccessBindings](../../api-ref/grpc/Registry/updateAccessBindings.md).

  Воспользуйтесь методом REST API [updateAccessBindings](../../api-ref/Repository/updateAccessBindings.md) для ресурса [Repository](../../api-ref/Repository/index.md) или вызовом gRPC API [RepositoryService/UpdateAccessBindings](../../api-ref/grpc/Repository/updateAccessBindings.md).

{% endlist %}