Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»
Terraform в Yandex Cloud
  • Начало работы
  • Настройка аутентификации Terraform-провайдера Yandex Cloud
  • Библиотека решений

В этой статье:

  • Аутентификация от имени сервисного аккаунта с помощью IAM-токена
  • Аутентификация от имени сервисного аккаунта с помощью авторизованного ключа
  • Аутентификация от имени пользовательского аккаунта

Настройка аутентификации Terraform-провайдера Yandex Cloud

Статья создана
Yandex Cloud
Обновлена 26 мая 2026 г.
  • Аутентификация от имени сервисного аккаунта с помощью IAM-токена
  • Аутентификация от имени сервисного аккаунта с помощью авторизованного ключа
  • Аутентификация от имени пользовательского аккаунта

Для аутентификации и управления инфраструктурой Yandex Cloud вы можете использовать Terraform от имени:

  • сервисного аккаунта с помощью IAM-токена или авторизованного ключа;
  • пользовательского аккаунта:
    • аккаунта на Яндексе;
    • федеративного аккаунта;
    • локального пользователя.

Аутентификация от имени сервисного аккаунта с помощью IAM-токенаАутентификация от имени сервисного аккаунта с помощью IAM-токена

Процесс аутентификации строится на получении временного IAM-токена с помощью Yandex CLI и передаче его в Terraform. Это делает конфигурацию Terraform универсальной и безопасной, так как IAM-токен не сохраняется в файлах конфигурации, а в коде описана только логика создания ресурсов, без привязки к конкретному облаку или каталогу.

Использование сервисного аккаунта с помощью имперсонации является рекомендованным и наиболее безопасным способом аутентификации.

При создании IAM-токена используйте имперсонацию для созданного сервисного аккаунта, указав его идентификатор в параметре --impersonate-service-account-id. В результате Terraform будет от имени сервисного аккаунта управлять ресурсами в каталоге и использовать IAM-токен сервисного аккаунта.

Примечание

Для использования имперсонации пользователю должна быть назначена роль iam.serviceAccounts.tokenCreator на соответствующий сервисный аккаунт.

Для аутентификации от имени сервисного аккаунта:

  1. Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите.

  2. В Yandex Cloud CLI создайте новый профиль или активируйте созданный ранее.

  3. Аутентифицируйтесь от имени аккаунта на Яндексе, федеративного или локального пользователя.

  4. Если у вас еще нет сервисного аккаунта, создайте его.

  5. Назначьте сервисному аккаунту роли, необходимые для управления ресурсами Yandex Cloud.

  6. Запишите аутентификационные данные в переменные окружения, используя имперсонацию:

    • Bash

      export YC_TOKEN=$(yc iam create-token --impersonate-service-account-id <идентификатор_сервисного_аккаунта>)
      export YC_CLOUD_ID=$(yc config get cloud-id)
      export YC_FOLDER_ID=$(yc config get folder-id)
      
    • PowerShell

      $Env:YC_TOKEN=$(yc iam create-token --impersonate-service-account-id <идентификатор_сервисного_аккаунта>)
      $Env:YC_CLOUD_ID=$(yc config get cloud-id)
      $Env:YC_FOLDER_ID=$(yc config get folder-id)
      

    Где <идентификатор_сервисного_аккаунта> — идентификатор сервисного аккаунта.

В результате в переменных окружения сохранятся IAM-токен сервисного аккаунта, а также идентификатор облака и идентификатор каталога.

Примечание

При каждой операции аутентификация будет происходить с помощью этого IAM-токена, пока не истечет время его жизни (не более 12 часов). После этого снова потребуется пройти аутентификацию. Для автоматического перевыпуска IAM-токена можно использовать скрипт или другие способы автоматизации.

Чтобы продлить срок, в течение которого не нужно аутентифицироваться в браузере, используйте refresh-токены, позволяющие перевыпускать IAM-токены без перехода в браузер. Для этого разрешите использовать refresh-токены на уровне организации и инициализируйте DPoP-защиту в CLI.

Настройки провайдера в конфигурационном файле Terraform без указания чувствительных параметров указываются следующим образом:

provider "yandex" {
  # Параметры cloud_id, folder_id и token не указываются, так как
  # провайдер автоматически подхватит их из переменных окружения

  zone = "<зона_доступности>"
}

Где zone — зона доступности, в которой по умолчанию будут создаваться все облачные ресурсы.

С такой конфигурацией используйте Terraform без дополнительных флагов, так как провайдер автоматически подхватит их из переменных окружения.

Аутентификация от имени сервисного аккаунта с помощью авторизованного ключаАутентификация от имени сервисного аккаунта с помощью авторизованного ключа

Позволяет постоянно аутентифицироваться с помощью однажды созданного авторизованного ключа. Использование долгоживущего ключа менее безопасно, чем использование имперсонации и IAM-токена.

Для аутентификации от имени сервисного аккаунта с помощью авторизованного ключа:

  1. Если у вас еще нет сервисного аккаунта, создайте его.

  2. Назначьте сервисному аккаунту роли, необходимые для управления ресурсами Yandex Cloud.

  3. Создайте авторизованный ключ для сервисного аккаунта и сохраните его в файл key.json.

  4. Запишите чувствительные данные: путь к файлу авторизационного ключа, идентификатор облака и каталога — в переменные окружения:

    Bash
    PowerShell
    export YC_SERVICE_ACCOUNT_KEY_FILE="<путь_к_файлу_ключа>"
    export YC_CLOUD_ID="<идентификатор_облака>"
    export YC_FOLDER_ID="<идентификатор_каталога>"
    
    $Env:YC_SERVICE_ACCOUNT_KEY_FILE="<путь_к_файлу_ключа>"
    $Env:YC_CLOUD_ID="<идентификатор_облака>"
    $Env:YC_FOLDER_ID="<идентификатор_каталога>"
    

    Где:

    • YC_SERVICE_ACCOUNT_KEY_FILE — путь к файлу key.json с авторизированным ключом.
    • YC_CLOUD_ID — идентификатор облака.
    • YC_FOLDER_ID — идентификатор каталога.

    Примечание

    При запуске команд plan или apply можно передать значения напрямую в аргументах командной строки, не указывая их в конфигурации:

    terraform apply -var="cloud_id=<идентификатор_облака>" -var="folder_id=<идентификатор_каталога>"
    

Настройки провайдера в конфигурационном файле Terraform без указания чувствительных параметров указываются следующим образом:

provider "yandex" {
  # Параметры cloud_id, folder_id и token не указываются, так как
  # провайдер автоматически подхватит их из переменных окружения

  zone = "<зона_доступности>"
}

Где zone — зона доступности, в которой по умолчанию будут создаваться все облачные ресурсы.

С такой конфигурацией используйте Terraform без дополнительных флагов, так как провайдер автоматически подхватит их из переменных окружения.

Аутентификация от имени пользовательского аккаунтаАутентификация от имени пользовательского аккаунта

Процесс аутентификации строится на получении временного IAM-токена с помощью Yandex CLI и передаче его в Terraform. Это делает конфигурацию Terraform универсальной и безопасной, так как IAM-токен не сохраняется в файлах конфигурации, а в коде описана только логика создания ресурсов, без привязки к конкретному облаку или каталогу.

Важно

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

Для аутентификации от имени пользовательского аккаунта:

  1. Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите.

  2. В Yandex Cloud CLI создайте новый профиль или активируйте созданный ранее.

  3. Аутентифицируйтесь в зависимости от типа используемого аккаунта: аккаунта на Яндексе, федеративного или локального пользователя.

  4. Запишите чувствительные данные профиля: IAM-токен, идентификатор облака и каталога в переменные окружения:

    Bash
    PowerShell
    export YC_TOKEN=$(yc iam create-token)
    export YC_CLOUD_ID=$(yc config get cloud-id)
    export YC_FOLDER_ID=$(yc config get folder-id)
    
    $Env:YC_TOKEN=$(yc iam create-token)
    $Env:YC_CLOUD_ID=$(yc config get cloud-id)
    $Env:YC_FOLDER_ID=$(yc config get folder-id)
    

    Где:

    yc iam create-token — получение IAM-токена для текущей сессии.
    yc config get cloud-id — получение идентификатора облака из текущего профиля CLI.
    yc config get folder-id — получение идентификатора каталога из текущего профиля CLI.

    В результате в переменных окружения сохранятся IAM-токен, а также идентификатор облака и идентификатор каталога.

Примечание

При каждой операции аутентификация будет происходить с помощью этого IAM-токена, пока не истечет время его жизни (не более 12 часов). После этого снова потребуется пройти аутентификацию. Для автоматического перевыпуска IAM-токена можно использовать скрипт или другие способы автоматизации.

Чтобы продлить срок, в течение которого не нужно аутентифицироваться в браузере, используйте refresh-токены, позволяющие перевыпускать IAM-токены без перехода в браузер. Для этого разрешите использовать refresh-токены на уровне организации и инициализируйте DPoP-защиту в CLI.

Настройки провайдера в конфигурационном файле Terraform без указания чувствительных параметров указываются следующим образом:

provider "yandex" {
  # Параметры cloud_id, folder_id и token не указываются, так как
  # провайдер автоматически подхватит их из переменных окружения

  zone = "<зона_доступности>"
}

Где zone — зона доступности, в которой по умолчанию будут создаваться все облачные ресурсы.

С такой конфигурацией используйте Terraform без дополнительных флагов, так как провайдер автоматически подхватит их из переменных окружения.

Была ли статья полезна?

Предыдущая
Начало работы
Следующая
Обзор
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ООО «Яндекс.Облако»