Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Cloud Functions
  • Сопоставление с другими сервисами Yandex Cloud
    • Все инструкции
    • Получение IAM-токена сервисного аккаунта с помощью функции
    • Подключение к управляемым БД из функции
      • Добавить переменные окружения
      • Указать облачную сеть
      • Передать секреты Yandex Lockbox
      • Выделить память для директории /tmp
      • Посмотреть графики мониторинга
      • Миграция в зону ru-central1-d
      • Удалить версию функции
      • Удалить функцию
    • Просмотр операций с ресурсами сервиса
  • Инструменты
  • Правила тарификации
  • Управление доступом
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы
  1. Пошаговые инструкции
  2. Управление функцией
  3. Передать секреты Yandex Lockbox

Передать секреты Yandex Lockbox в функцию

Статья создана
Yandex Cloud
Улучшена
Обновлена 21 апреля 2025 г.

Примечание

Эта функциональность находится на стадии Preview.

Yandex Lockbox — сервис для хранения секретов. Передать секрет Yandex Lockbox в функцию можно в переменной окружения.

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

  • lockbox.payloadViewer на секрет (как назначить права доступа к секрету).
  • kms.keys.encrypterDecrypter на ключ шифрования, если секрет создан с использованием ключа Yandex Key Management Service (как назначить права доступа к ключу шифрования).

Секрет Yandex Lockbox, который передается в функцию, кешируется в Yandex Cloud Functions. После того как сервисный аккаунт потеряет доступ к секрету, функция может хранить его до 5 минут.

При передаче секретов создается новая версия функции. В существующую версию секреты передать нельзя.

Консоль управления
CLI
Terraform
API
  1. В консоли управления перейдите в каталог, в котором находится функция.

  2. Откройте сервис Cloud Functions.

  3. Выберите функцию, в которую хотите передать секрет Yandex Lockbox.

  4. Перейдите на вкладку Редактор.

  5. В блоке Параметры укажите:

    • В поле Сервисный аккаунт — сервисный аккаунт, у которого есть роль lockbox.payloadViewer.
    • В поле Секреты Lockbox:
      • Имя переменной окружения, в которой будет храниться секрет.
      • Идентификатор секрета.
      • Идентификатор версии секрета.
      • Ключ одной из пар ключ-значение в версии секрета.
  6. Нажмите Добавить.

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

  7. Нажмите кнопку Сохранить изменения. Будет создана новая версия функции с указанными секретами.

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

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Чтобы передать секрет Yandex Lockbox в функцию, выполните команду:

Важно

Если в прошлую версию функции уже были переданы секреты, они перезапишутся.

yc serverless function version create \
  --function-name=test \
  --runtime nodejs16 \
  --entrypoint index.main \
  --memory 128m \
  --execution-timeout 5s \
  --source-version-id vfdsdeqa1s2d3******** \
  --service-account-id bfbtfcp0o9i8******** \
  --secret environment-variable=KEY,id=fc3q4aq3w5e6********,version-id=fc3gvvz4x5c6********,key=secret-key

Где:

  • --function-name — имя функции.

  • --runtime — среда выполнения.

  • --entrypoint — точка входа, указывается в формате <имя_файла_с_функцией>.<имя_обработчика>.

  • --memory — объем RAM.

  • --execution-timeout — максимальное время выполнения функции до таймаута.

  • --source-version-id — идентификатор версии функции, код которой вы хотите скопировать.

  • --service-account-id — идентификатор сервисного аккаунта, у которого есть роль lockbox.payloadViewer.

  • --secret:

    • environment-variable — имя переменной окружения, в которой будет храниться секрет.
    • id — идентификатор секрета.
    • version-id — идентификатор версии секрета.
    • key — ключ одной из пар ключ-значение в версии секрета.

    В функцию можно передать несколько секретов. Для этого укажите параметр --secret необходимое количество раз.

Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.

  1. Откройте файл конфигурации Terraform и добавьте к описанию функции блок secrets:

    resource "yandex_function" "test-function" {
      name               = "test-function"
      description        = "Test function"
      user_hash          = "first-function"
      runtime            = "python37"
      entrypoint         = "main"
      memory             = "128"
      execution_timeout  = "10"
      service_account_id = "<идентификатор_сервисного_аккаунта>"
      tags               = ["my_tag"]
      secrets {
        id                   = "<идентификатор_секрета>"
        version_id           = "<идентификатор_версии_секрета>"
        key                  = "<ключ_секрета_1>"
        environment_variable = "<имя_переменной_окружения_1>"
      }
      secrets {
        id                   = "<идентификатор_секрета>"
        version_id           = "<идентификатор_версии_секрета>"
        key                  = "<ключ_секрета_2>"
        environment_variable = "<имя_переменной_окружения_2>"
      }
    
       content {
         zip_filename = "<путь_к_ZIP-архиву>"
       }
    }
    

    Где:

    • secrets — блок с настройками секрета. Содержит параметры:
      • id — идентификатор секрета. Обязательный параметр.
      • version_id — идентификатор версии секрета. Обязательный параметр.
      • key — ключ одной из пар ключ-значение в версии секрета, который будет храниться в переменной окружения. Обязательный параметр.
      • environment_variable — имя переменной окружения, в которой будет храниться секрет. Обязательный параметр.

    Более подробную информацию о параметрах ресурса yandex_function см. в документации провайдера.

  2. Примените изменения:

    1. В терминале перейдите в папку, где вы отредактировали конфигурационный файл.

    2. Проверьте корректность конфигурационного файла с помощью команды:

      terraform validate
      

      Если конфигурация является корректной, появится сообщение:

      Success! The configuration is valid.
      
    3. Выполните команду:

      terraform plan
      

      В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.

    4. Примените изменения конфигурации:

      terraform apply
      
    5. Подтвердите изменения: введите в терминале слово yes и нажмите Enter.

Проверить изменение функции и ее настройки можно в консоли управления.

Чтобы передать секрет Yandex Lockbox в функцию, воспользуйтесь методом REST API createVersion для ресурса Function или вызовом gRPC API FunctionsService/CreateVersion.

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

Предыдущая
Указать облачную сеть
Следующая
Выделить память для директории /tmp
Проект Яндекса
© 2025 ООО «Яндекс.Облако»