🔥 Vault: секреты, которые администратор прочитать не может
У HashiCorp Vault есть фундаментальная проблема, о которой редко говорят вслух: администратор может прочитать любой секрет, к которому имеет доступ хоть кто-то ещё. Да, есть аудит-логи. Но только если за ними следят, и только если их не выключили.
Казалось бы, решение простое — хранить конфигурацию доступов в Git, проводить ревью и применять через CI/CD. На практике это иллюзия безопасности:
➖ Администратор GitLab может изменить список апруверов
➖ Владелец репо может сделать force push без ревью
➖ Если CI-система имеет токен на изменение конфигурации Vault, достаточно найти этот токен — и вы внутри
Всегда есть один человек или один сервис, компрометация которого даёт полный доступ.
❗️Есть и правильное решение — Vault умеет управлять собой изнутри.
Вот как работает подход:
⚪️Конфигурация хранится в Git как Terraform-файлы
⚪️Коммиты подписываются несколькими PGP-ключами через Git Notes — это кворум
⚪️Vault-плагин периодически проверяет репозиторий и применяет конфигурацию только если подписей достаточно
⚪️Токен доступа к Vault хранится внутри самого Vault как «неизвлекаемый» секрет — никакой CI его прочитать не может
⚪️State Terraform хранится тоже внутри плагина — никакого внешнего S3 не нужно
В итоге: ни у CI, ни у «администратора» нет привилегированного доступа снаружи. Изменить конфигурацию можно только через коммит с кворумом валидных подписей.
👈 Плагин — open source
👈 Полная статья с примерами конфига и кода — на Хабре
@DevOpsKaz 😛
Post #1926
1.73K
