Зачем отдельно управлять секретами
Пароли, API-ключи, сертификаты не должны лежать в коде, в логах или в открытом виде в конфигах. Нужно централизованное хранилище, контроль доступа и безопасная доставка в приложение и пайплайны.Варианты хранения
HashiCorp Vault
HashiCorp Vault
Хранение секретов, динамические credentials для БД/облака, политики доступа. Интеграция с K8s (CSI driver, sidecar).
Облачные сервисы
Облачные сервисы
AWS Secrets Manager, GCP Secret Manager, Azure Key Vault — интеграция с IAM и приложениями в том же облаке.
Kubernetes Secret
Kubernetes Secret
Базовый вариант: объекты Secret в кластере; не шифруются по умолчанию at rest — нужны политики RBAC и опционально encryption at rest / external secrets.
CI/CD
CI/CD
Секреты в переменных пайплайна (GitHub Secrets, GitLab CI variables) — только для нужд сборки/деплоя, не подставлять в образы как константы.
Практики
- Не коммитить секреты; использовать .gitignore и pre-commit хуки (detect-secrets, gitleaks).
- В приложении — получать секреты при старте из хранилища или из окружения (injected из K8s/VM).
- Ротация ключей и паролей по политике; минимальный срок жизни для временных credentials.
Что добавить сюда
- Выбранное хранилище и схема доставки в свои приложения
- Примеры настройки Vault или облачного Secret Manager
- Ссылки на документацию и best practices