IT заметки по программированию
IT заметки по программированию
IT заметки по программированию
IT заметки по программированию

Как настроить получение секретов Vault из Gitlab?

Для настройки автоматического получения секретов из HashiCorp Vault в GitLab CI/CD, необходимо настроить GitLab для взаимодействия с Vault. Эта интеграция позволяет вашим CI/CD пайплайнам безопасно получать секреты и использовать их в процессах сборки и развертывания.

Вот пошаговое руководство по настройке:


1. Настройка доступа к Vault

Для начала убедитесь, что в HashiCorp Vault настроены политики и роли, которые позволяют GitLab CI получать доступ к нужным секретам.

Создание политики в Vault

Создайте политику, которая позволит доступ только к определенным секретам. Например, создадим политику, которая позволяет GitLab CI получать секреты по пути secret/data/gitlab/*.

Создайте файл политики, например gitlab-policy.hcl:

Загрузите политику в Vault:

Создание роли AppRole для GitLab

Теперь создадим AppRole для GitLab, которая позволит GitLab аутентифицироваться в Vault и получать токены доступа.

  1. Включите AppRole аутентификацию (если она еще не включена):
     
  2. Создайте роль с привязанной политикой:
     
  3. Получите role_id и secret_id, необходимые для аутентификации:
    Сохраните оба значения (role_id и secret_id), они потребуются для настройки в GitLab CI/CD.

2. Настройка переменных в GitLab

Для интеграции GitLab с Vault используйте role_id и secret_id в переменных CI/CD. Настройка этих переменных доступна в разделе настроек проекта GitLab (Settings > CI / CD > Variables).

  1. Добавьте следующие переменные GitLab:
    • VAULT_ADDR — URL-адрес вашего HashiCorp Vault, например https://vault.example.com
    • VAULT_ROLE_IDrole_id, полученный на предыдущем шаге
    • VAULT_SECRET_IDsecret_id, полученный на предыдущем шаге
    • VAULT_PATH — путь к секретам, например secret/data/gitlab/mysecret
  2. Отметьте эти переменные как protected (если они будут использоваться только для защищенных веток) и masked (для скрытия их значений в логах).

3. Создание GitLab CI/CD конфигурации

Настройте ваш .gitlab-ci.yml файл, чтобы использовать HashiCorp Vault для получения секретов. Пример пайплайна, который использует VAULT_ADDR, VAULT_ROLE_ID, и VAULT_SECRET_ID для аутентификации и получения секрета:

Пояснение по конфигурации:

  • Получение токена Vault: Используем запрос curl с role_id и secret_id, чтобы получить токен аутентификации (VAULT_TOKEN) для дальнейших запросов.
  • Запрос к секрету: С помощью VAULT_TOKEN выполняем запрос для чтения секрета по пути VAULT_PATH.
  • Использование секретов: Секрет сохраняется в переменной MY_SECRET, которую можно использовать в последующих шагах пайплайна.

Дополнительные рекомендации:

  • Ограничьте доступ: Политики Vault и роли должны предоставлять доступ только к тем секретам, которые действительно нужны GitLab CI.
  • Безопасность переменных: Убедитесь, что role_id и secret_id заданы как защищенные и скрытые переменные в GitLab.
  • Тестирование: Перед запуском в продакшн-окружении протестируйте пайплайн с минимальными привилегиями.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *