Перейти к содержанию

SOPS и интеграция с Terraform

Что такое SOPS?

SOPS (Secrets Operations) — это инструмент для безопасного управления секретами. В отличие от полного шифрования файлов, SOPS позволяет шифровать только конкретные значения в файлах конфигурации (YAML, JSON, ENV, INI), оставляя ключи и структуру файла доступными для чтения.

Репозиторий: https://github.com/getsops/sops

Принцип работы

  1. Шифрование полей: SOPS шифрует только значения переменных, используя ключи из внешних систем управления ключами (KMS) или локальные ключи (например, Age, PGP или Cloud KMS).
  2. Разграничение прав: Разные пользователи могут иметь доступ к разным ключам шифрования, что позволяет гибко распределять права на чтение секретов.
  3. Версионность: Поскольку только значения шифруются, файлы остаются валидными для систем контроля версий (Git). Вы можете видеть историю изменений структуры файла, но не можете увидеть сами секреты без ключа дешифровки.

Репозиторий Age: https://github.com/age-sec-org/age

Интеграция с Terraform

В данном проекте SOPS используется для защиты чувствительных данных (паролей, API-ключей, сертификатов), которые необходимо передавать в Terraform.

Процесс работы:

  1. Хранение секретов: Секреты хранятся в файлах (например, secrets.yaml) в папке terraform/secrets/. Эти файлы зашифрованы с помощью SOPS.
  2. Дешифровка: Перед выполнением команд terraform plan или terraform apply секреты дешифруются. Это может происходить несколькими способами:
  3. Предварительная дешифровка: Использование команды sops -d secrets.yaml > decrypted.tfvars перед запуском Terraform.
  4. Переменные окружения: Использование SOPS для чтения значений напрямую в переменные окружения, которые Terraform подхватывает автоматически.
  5. Безопасность в CI/CD: В пайплайнах (например, GitLab CI) доступ к ключам дешифровки предоставляется только соответствующим агентам, что гарантирует, что только разрешенные системы могут развертывать инфраструктуру.

Преимущества:

  • Безопасность: Секреты не хранятся в открытом виде в репозитории.
  • Прозрачность: Инфраструктурные параметры (имена ресурсов, регионы) остаются видимыми, что облегчает аудит.
  • Масштабируемость: Легко интегрируется с облачными KMS для управления ключами в больших командах.