[Документация Yandex Cloud](../../../index.md) > [Интерфейс командной строки](../../index.md) > [Пошаговые инструкции](../index.md) > Аутентификация > Аутентификация от имени сервисного аккаунта

# Аутентификация от имени сервисного аккаунта

{% note info %}

Выполняя действия от имени сервисного аккаунта, убедитесь, что ему [назначены](../../../iam/operations/sa/assign-role-for-sa.md) необходимые [роли](../../../iam/concepts/access-control/roles.md).

{% endnote %}

{% note warning %}

Создание сервисных аккаунтов и их [ключей](../../../iam/concepts/users/service-accounts.md#sa-key) может быть запрещено [политиками авторизации](../../../iam/concepts/access-control/access-policies.md) на уровне [каталога](../../../resource-manager/concepts/resources-hierarchy.md#folder), [облака](../../../resource-manager/concepts/resources-hierarchy.md#cloud) или [организации](../../../organization/concepts/organization.md).

{% endnote %}

Узнайте как аутентифицироваться в Yandex Cloud CLI:

* [От имени сервисного аккаунта с помощью имперсонации](#use-impersonation). Использование [имперсонации](../../../iam/concepts/access-control/impersonation.md) является рекомендованным и наиболее безопасным способом аутентифицироваться в Yandex Cloud CLI.
* [От имени сервисного аккаунта с помощью авторизованного ключа](#auth-as-sa). Использование [авторизованного ключа](../../../iam/concepts/authorization/key.md) позволяет постоянно аутентифицироваться в Yandex Cloud CLI с помощью однажды созданного авторизованного ключа. Использование долгоживущего ключа менее безопасно, чем использование имперсонации.
* [От имени сервисного аккаунта изнутри виртуальной машины](#vm-auth-as-sa). Использование привязанного к [виртуальной машине](../../../compute/concepts/vm.md) Yandex Compute Cloud [сервисного аккаунта](../../../iam/concepts/users/service-accounts.md) является рекомендованным способом аутентификации в Yandex Cloud CLI при работе на ВМ.

[Сервисный аккаунт](../../../iam/concepts/users/service-accounts.md) отличается от [аккаунта пользователя Яндекса](../../../iam/concepts/users/accounts.md#passport), [федеративного пользователя](../../../iam/concepts/federations.md) и [локального пользователя](../../../iam/concepts/users/accounts.md#local). Сервисный аккаунт нельзя использовать для входа в [консоль управления](https://console.yandex.cloud), но можно использовать для управления ресурсами в Yandex Cloud.

## Перед началом работы {#before-begin}

1. Аутентифицируйтесь в CLI как [пользователь Яндекса](user.md), как [федеративный пользователь](federated-user.md) или как [локальный пользователь](local-user.md).
1. Если у вас еще нет сервисного аккаунта, [создайте его](../../../iam/operations/sa/create.md) и [настройте права доступа для него](../../../iam/operations/sa/assign-role-for-sa.md).

## Выполняйте действия от имени сервисного аккаунта с помощью имперсонации {#use-impersonation}

{% note info %}

Для использования имперсонации пользователю должна быть назначена [роль](../../../iam/security/index.md#iam-serviceAccounts-tokenCreator) `iam.serviceAccounts.tokenCreator` на соответствующий сервисный аккаунт.

{% endnote %}

Чтобы выполнить действие от имени сервисного аккаунта:

1. Получите список сервисных аккаунтов, которые существуют в вашем облаке:
   
   ```bash
   yc iam service-account --folder-id <идентификатор_каталога> list
   ```
   
   Результат:
   ```text
   +----------------------+------------+--------+---------------------+-----------------------+
   |          ID          |    NAME    | LABELS |     CREATED AT      | LAST AUTHENTICATED AT |
   +----------------------+------------+--------+---------------------+-----------------------+
   | ajeg2b2et02f******** | my-robot   |        | 2024-09-08 18:59:45 | 2025-08-21 06:40:00   |
   | ajegtlf2q28a******** | default-sa |        | 2023-06-27 16:18:18 | 2025-08-21 06:30:00   |
   +----------------------+------------+--------+---------------------+-----------------------+
   ```
1. При выполнении команд Yandex Cloud CLI используйте [имперсонацию](../../../iam/concepts/access-control/impersonation.md) сервисного аккаунта, указывая его идентификатор в параметре `--impersonate-service-account-id`.

    Например, чтобы создать в каталоге по умолчанию [бакет](../../../storage/concepts/bucket.md) `my-sample-bucket` от имени сервисного аккаунта, выполните команду:

    ```bash
    yc storage bucket create \
      --name my-sample-bucket \
      --impersonate-service-account-id <идентификатор_сервисного_аккаунта>
    ```

Для некоторых команд требуется указание уникального идентификатора облака и каталога. Вы можете запускать такие команды с параметрами `--cloud-id` и `--folder-id`.

## Аутентифицируйтесь от имени сервисного аккаунта с помощью авторизованного ключа {#auth-as-sa}

Чтобы аутентифицироваться от имени сервисного аккаунта:

1. Получите список сервисных аккаунтов, которые существуют в вашем облаке:
   
   ```bash
   yc iam service-account --folder-id <идентификатор_каталога> list
   ```
   
   Результат:
   ```text
   +----------------------+------------+--------+---------------------+-----------------------+
   |          ID          |    NAME    | LABELS |     CREATED AT      | LAST AUTHENTICATED AT |
   +----------------------+------------+--------+---------------------+-----------------------+
   | ajeg2b2et02f******** | my-robot   |        | 2024-09-08 18:59:45 | 2025-08-21 06:40:00   |
   | ajegtlf2q28a******** | default-sa |        | 2023-06-27 16:18:18 | 2025-08-21 06:30:00   |
   +----------------------+------------+--------+---------------------+-----------------------+
   ```
1. Создайте авторизованный ключ для сервисного аккаунта и сохраните его в файл `key.json`:

    ```bash
    yc iam key create \
      --service-account-name default-sa \
      --output key.json \
      --folder-id <идентификатор_каталога>
    ```
    
    Результат:
    ```text
    id: aje83v701b1u********
    service_account_id: aje3932acd0c********
    created_at: "2019-08-26T12:31:25Z"
    key_algorithm: RSA_2048
    ```

1. Добавьте авторизованный ключ сервисного аккаунта в профиль CLI.

    1. Создайте новый профиль CLI:

        ```bash
        yc config profile create sa-profile
        ```
    1. Добавьте авторизованный ключ:

        ```bash
        yc config set service-account-key key.json
        ```

1. Убедитесь, что параметры для сервисного аккаунта добавлены верно:

    ```bash
    yc config list
    ```
    
    Результат:

    ```text
    service-account-key:
      id: aje83v701b1u********
      service_account_id: aje3932acd0c********
      created_at: "2019-08-26T12:31:25Z"
      key_algorithm: RSA_2048
      public_key: |
        -----BEGIN PUBLIC KEY-----
        MIIBIjANBg...
        -----END PUBLIC KEY-----
      private_key: |
        -----BEGIN PRIVATE KEY-----
        MIIEvwIBAD...
        -----END PRIVATE KEY-----
    ```

1. Настройте профиль для запуска команд.

    Для некоторых команд требуется указание уникального идентификатора облака и каталога. Вы можете указать информацию о них в профиле или запускать такие команды с соответствующим флагом.
    
    1. Укажите облако в профиле:
    
        ```bash
        yc config set cloud-id <идентификатор_облака>
        ```
    
        Или [запускайте команды](../../concepts/index.md#manage-properties) с параметром `--cloud-id`.
    1. Укажите каталог в профиле:
    
        ```bash
        yc config set folder-id <идентификатор_каталога>
        ```
    
        Или [запускайте команды](../../concepts/index.md#manage-properties) с параметром `--folder-id`.
    
    Все операции в этом профиле будут выполняться от имени привязанного сервисного аккаунта. Вы можете [изменить параметры профиля](../profile/manage-properties.md) или [сменить его](../profile/profile-activate.md).

## Аутентифицируйтесь от имени сервисного аккаунта изнутри виртуальной машины {#vm-auth-as-sa}

Для сервисного аккаунта процесс аутентификации изнутри виртуальной машины упрощен:
1. [Привяжите сервисный аккаунт](../../../compute/operations/vm-connect/auth-inside-vm.md#link-sa-with-instance) к виртуальной машине.
1. Аутентифицируйтесь изнутри виртуальной машины:
      1. [Подключитесь](../../../compute/operations/vm-connect/ssh.md) к виртуальной машине по [SSH](../../../glossary/ssh-keygen.md).
   1. Создайте новый профиль:

      ```
      yc config profile create my-robot-profile
      ```

1. Настройте профиль для запуска команд.

    Для некоторых команд требуется указание уникального идентификатора облака и каталога. Вы можете указать информацию о них в профиле или запускать такие команды с соответствующим флагом.
    
    1. Укажите облако в профиле:
    
        ```bash
        yc config set cloud-id <идентификатор_облака>
        ```
    
        Или [запускайте команды](../../concepts/index.md#manage-properties) с параметром `--cloud-id`.
    1. Укажите каталог в профиле:
    
        ```bash
        yc config set folder-id <идентификатор_каталога>
        ```
    
        Или [запускайте команды](../../concepts/index.md#manage-properties) с параметром `--folder-id`.
    
    Все операции в этом профиле будут выполняться от имени привязанного сервисного аккаунта. Вы можете [изменить параметры профиля](../profile/manage-properties.md) или [сменить его](../profile/profile-activate.md).


Подробная информация про работу с Yandex Cloud из ВМ в разделе [Работа с Yandex Cloud изнутри виртуальной машины](../../../compute/operations/vm-connect/auth-inside-vm.md).


#### Полезные ссылки {#see-also}

- [Управление конфигурацией CLI](../../concepts/index.md#manage-properties).
- [Создание профиля](../profile/profile-create.md).
- [Активация профиля](../profile/profile-activate.md).
- [Управление параметрами профиля](../profile/manage-properties.md).
- [Работа с Yandex Cloud изнутри виртуальной машины](../../../compute/operations/vm-connect/auth-inside-vm.md).