Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»
Yandex Identity and Access Management
KZ
    • Все руководства
    • Разграничение прав доступа для групп пользователей
    • Сервисный аккаунт с профилем OS Login для управления ВМ с помощью Ansible
      • GitHub
      • GitLab
      • Пользовательская инсталляция Kubernetes
      • Managed Service for Kubernetes
      • Настройка CI/CD между Cloud Functions и GitHub
    • Загрузка объектов в бакет Object Storage с помощью эфемерного ключа доступа
  • Безопасное использование Yandex Cloud
  • Управление доступом
  • Правила тарификации
  • Справочник ролей
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

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

  • Создайте проект GitLab
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте федерацию сервисных аккаунтов
  • Создайте пользовательский секрет
  • Создайте сервисный аккаунт
  • Привяжите сервисный аккаунт к федерации
  • Настройте сценарий GitLab CI/CD
  • Удалите созданные ресурсы
  • Полезные ссылки
  1. Практические руководства
  2. Интеграции федераций удостоверений сервисных аккаунтов
  3. GitLab

Получение значения секрета Yandex Lockbox на стороне GitLab

Статья создана
Yandex Cloud
Обновлена 18 июня 2026 г.
Открыть в Markdown
  • Создайте проект GitLab
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
    • Создайте федерацию сервисных аккаунтов
    • Создайте пользовательский секрет
    • Создайте сервисный аккаунт
    • Привяжите сервисный аккаунт к федерации
  • Настройте сценарий GitLab CI/CD
  • Удалите созданные ресурсы
  • Полезные ссылки

Федерации сервисных аккаунтов (Workload Identity Federation) позволяют настроить связь между внешними системами и Yandex Cloud по протоколу OpenID Connect (OIDC). За счет этого внешние системы могут выполнять действия с ресурсами Yandex Cloud от имени сервисных аккаунтов IAM без использования авторизованных ключей. Это более безопасный способ, минимизирующий риск утечки учетных данных и возможность несанкционированного доступа.

В этом руководстве для примера показано, как получить значение секрета Yandex Lockbox со стороны GitLab от имени сервисного аккаунта в Yandex Cloud. Аналогично можно выполнить любое действие через Yandex Cloud CLI, API или Terraform.

Чтобы получить значение секрета Yandex Lockbox от имени аккаунта на GitLab:

  1. Создайте проект GitLab.
  2. Подготовьте облако к работе.
  3. Настройте сценарий GitLab CI/CD.

Если созданные ресурсы вам больше не нужны, удалите их.

Создайте проект GitLabСоздайте проект GitLab

Создайте новый проект GitLab или используйте существующий, в котором у вас есть права на просмотр и выполнение GitLab CI/CD пайплайнов.

Подготовьте облако к работеПодготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

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

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки инфраструктуры входит плата за хранение секрета и запросы к нему (тарифы Yandex Lockbox).

Создайте федерацию сервисных аккаунтовСоздайте федерацию сервисных аккаунтов

Консоль управления
  1. В консоли управления выберите каталог, в котором вы хотите создать федерацию сервисных аккаунтов.
  2. Перейдите в сервис Identity and Access Management.
  3. На панели слева выберите Федерации сервисных аккаунтов.
  4. Нажмите Создать федерацию.
  5. В поле Значение Issuer (iss) введите URL OIDC-провайдера https://gitlab.com.
  6. В поле Допустимые значения Audience (aud) введите получателя токена https://gitlab.com/<название_группы>/<название_проекта_gitlab>.
  7. В поле Адрес JWKS введите URL списка публичных ключей https://gitlab.com/oauth/discovery/keys.
  8. В поле Имя введите имя федерации, например test-iam-federation.
  9. Нажмите кнопку Создать.

Примечание

Если вы используете пользовательскую инсталляцию GitLab, замените https://gitlab.com на адрес вашей инсталляции во всех упоминаемых значениях.

Создайте пользовательский секретСоздайте пользовательский секрет

Консоль управления
  1. В консоли управления выберите каталог, в котором будет создан секрет.
  2. Перейдите в сервис Lockbox.
  3. Нажмите кнопку Создать секрет.
  4. В поле Имя введите имя секрета MY_SECRET.
  5. Выберите Тип секрета Пользовательский.
  6. В поле Ключ введите неконфиденциальный идентификатор, например secret.
  7. В поле Значение введите конфиденциальные данные для хранения.
  8. Нажмите кнопку Создать.

Создайте сервисный аккаунтСоздайте сервисный аккаунт

  1. Создайте сервисный аккаунт:

    Консоль управления
    1. В консоли управления выберите каталог, в котором хотите создать сервисный аккаунт.
    2. Перейдите в сервис Identity and Access Management.
    3. Нажмите кнопку Создать сервисный аккаунт.
    4. Введите имя сервисного аккаунта, например sa-lockbox.
    5. Нажмите кнопку Создать.
  2. Назначьте сервисному аккаунту роль lockbox.payloadViewer на каталог:

    Консоль управления
    1. На стартовой странице консоли управления выберите каталог.
    2. Перейдите на вкладку Права доступа.
    3. Найдите аккаунт sa-lockbox в списке и нажмите значок .
    4. Нажмите кнопку Изменить роли.
    5. В открывшемся диалоге нажмите кнопку Добавить роль и выберите роль lockbox.payloadViewer.

Привяжите сервисный аккаунт к федерацииПривяжите сервисный аккаунт к федерации

Консоль управления
  1. В консоли управления выберите каталог, в котором был создан сервисный аккаунт.
  2. Перейдите в сервис Identity and Access Management.
  3. В списке выберите сервисный аккаунт sa-lockbox.
  4. На верхней панели нажмите Привязать к федерации.
  5. В поле Федерация сервисных аккаунтов выберите ранее созданную федерацию.
  6. В поле Значение Subject (sub) укажите идентификатор внешнего аккаунта project_path:<название_группы>/<название_проекта_gitlab>:ref_type:branch:ref:<название_ветки_репозитория>.
  7. Нажмите кнопку Привязать.

Настройте сценарий GitLab CI/CDНастройте сценарий GitLab CI/CD

  1. Склонируйте ваш репозиторий, если это еще не сделано:

    git clone <URL_репозитория>
    
  2. В локальной копии вашего репозитория создайте файл .gitlab-ci.yml в корневой директории.

  3. Вставьте в файл .gitlab-ci.yml следующий код, который получит значение секрета Yandex Lockbox:

    stages:
    - check_token
    
    check_token:
      stage: check_token
      image: 
        name: ubuntu
      id_tokens:
        GITLAB_OIDC_TOKEN:
          aud: https://gitlab.com/<название_группы>/<название_проекта_gitlab>
      script:
       - apt update && apt install curl jq -y
       # Обменять токен задания рабочего процесса на IAM-токен сервисного аккаунта в Yandex Cloud
       - SA_ID="<идентификатор_сервисного_аккаунта>"      
       - >-
        IAM_TOKEN="$(curl -s
        -H "Content-Type: application/x-www-form-urlencoded" 
        -d "grant_type=urn:ietf:params:oauth:grant-type:token-exchange&requested_token_type=urn:ietf:params:oauth:token-type:access_token&audience=${SA_ID}&subject_token=${GITLAB_OIDC_TOKEN}&subject_token_type=urn:ietf:params:oauth:token-type:id_token" 
        -X POST https://kz.auth.yandex.cloud/oauth/token | jq -r '.access_token')"
       # Запросить значение секрета через API, используя IAM-токен в Yandex Cloud
       - SECRET_ID="<идентификатор_секрета>"
       - >-
        SECRET_DATA=$(curl -sH "Authorization: Bearer ${IAM_TOKEN}" https://payload.lockbox.api.cloud.yandex.net/lockbox/v1/secrets/$SECRET_ID/payload)
       - echo ${SECRET_DATA}
      tags:
        - app-test
    

    Где:

    • aud — получатель токена, указанный при создании федерации сервисных аккаунтов;
    • SA_ID — идентификатор сервисного аккаунта;
    • SECRET_ID — идентификатор пользовательского секрета.
  4. Сохраните файл и отправьте изменения в удаленный репозиторий:

    git add . && git commit -m "Added .gitlab-ci.yml" && git push
    

    После отправки кода в репозиторий начнется выполнение рабочего процесса.

  5. В меню слева в GitLab перейдите в раздел Build → Pipelines.

  6. Убедитесь, что сборка принимает статус Passed. Он означает, что сборка прошла успешно.

  7. В меню слева в GitLab перейдите в раздел Build → Jobs.

  8. Нажмите на последнее выполненное задание, чтобы посмотреть результат выполнения сценария в логе:

    { "entries": [ { "key": "secret", "textValue": "67cH2£?pO********" } ], "versionId": "e6q8isknpcp7********" }
    

Удалите созданные ресурсыУдалите созданные ресурсы

Некоторые ресурсы платные. Удалите ресурсы, которые вы больше не будете использовать, чтобы не платить за них:

  • секрет Yandex Lockbox;
  • сервисный аккаунт.

Полезные ссылкиПолезные ссылки

  • Безопасное хранение паролей для GitLab CI в виде секретов Yandex Lockbox;
  • Получение значения секрета Yandex Lockbox на стороне GitHub.

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

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