Короткий ответ
Единственного правильного решения здесь нет: разумная архитектура обычно строится вокруг одного или нескольких центральных secret-хранилищ (например, HashiCorp Vault как кросс-облачный уровень абстракции или нативные сервисы каждого облака с федерацией идентичности через OIDC), с динамической выдачей короткоживущих credentials там, где это возможно, и чёткой изоляцией по окружениям на уровне пространства имён/бэкенда, а не просто через naming convention.
Как это работает подробнее
в мультиоблачной среде можно либо завести единый центральный Vault-кластер, к которому все окружения обращаются через аутентификацию (Kubernetes auth method, AWS IAM auth), либо использовать нативные сервисы каждого провайдера (AWS Secrets Manager, Kubernetes Secrets + sealed-secrets) и синхронизировать между ними при необходимости. Независимо от выбора, динамические секреты (Vault database secrets engine, AWS STS) предпочтительнее статических, так как ограничивают время жизни credential и автоматизируют ротацию без вмешательства человека.
Сравнение
- Компромисс. единый Vault даёт консистентность и единый аудит, но добавляет единую точку отказа и требует отдельной команды для эксплуатации; нативные облачные сервисы проще в поддержке, но плохо работают кросс-облачно и плодят разные паттерны доступа для разных команд. Критерий выбора — зрелость платформенной команды, количество облаков/окружений и готовность инвестировать в эксплуатацию централизованного решения против скорости внедрения более простого, но разрозненного подхода; кандидату стоит явно проговорить эти риски и критерии, а не предлагать единственный «правильный» вариант.
Что использовать на практике
- Практика. окружения (dev/staging/prod) должны использовать физически или логически изолированные backend/namespace секретов, чтобы компрометация dev-окружения не давала доступа к prod-секретам; доступ аутентифицируется через идентичность рабочей нагрузки (service account/IAM role), а не через общий статический токен, раздаваемый вручную.
- Проверка. Ожидаемое поведение (для обоих вариантов): компрометация service account в dev-namespace/окружении не должна давать vault-токен или IAM-роль с правом чтения prod-секретов — это проверяется попыткой прочитать prod-путь токеном dev-окружения и получением явного отказа авторизации.
Подводные камни
- Ошибка. централизовать всё в одном Vault-кластере без изоляции namespace/policy между окружениями, из-за чего ошибка конфигурации в dev может задеть prod; выбрать мультиоблачный инструмент только из-за «универсальности», не оценив операционную нагрузку на его поддержку собственной командой (Vault требует экспертизы по unsealing, HA, backup).