Важность безопасности пароля в пространствах имен kubernetes? - PullRequest
0 голосов
/ 06 июля 2019

При настройке автоматического развертывания с Kubernetes (и Helm) я несколько раз сталкивался со следующим вопросом:

Насколько важна безопасность служебного пароля (например, mysql) внутриединое пространство имен?

Мои мысли: Это совсем не важно.Зачем?Все связанные модули содержат пароль в любом случае, а службы недоступны за пределами определенного пространства имен.Хотя кто-то получит доступ к модулю в этом конкретном пространстве имен, printenv даст ему все, что ему нужно.

Мой конкретный случай (Хелм): Если я настрою свой сервер mysql кактребование (require.yaml), мне не нужно использовать какие-либо секреты или прилагать усилия, чтобы поделиться паролем mysql, и могу предоставить пароль в values.yaml.

1 Ответ

2 голосов
/ 07 июля 2019

Хотя секреты Кубернетеса не , что секрет, они более секретны, чем значения Хелма. По сути, я бы предложил, чтобы этот вопрос был больше о том, насколько вы доверяете людям с паролем базы данных, чем какой-либо конкретный процесс. На ум приходят три подхода:

  1. Вы передаете пароль базы данных через значения Хелма. Хельм не особо контролируется доступом, поэтому любой, кто может helm install или helm rollback, может также helm get values и узнать пароль. Если вам все равно, есть ли у этих людей пароль (все развертывания выполняются через автоматизированную систему; все развертывания выполняются командой разработчиков, у которой все равно есть пароли; вы запускаете из 10 человек), тогда это работает.

  2. Пароль базы данных находится в секрете, защищенном RBAC. Вы можете использовать Kubernetes контроль доступа на основе ролей , чтобы обычные пользователи не могли напрямую читать содержимое Секреты. Какой-то администратор создает Secret, а Pod монтирует его или внедряет как переменную окружения. Теперь вам не нужен сам пароль, чтобы его можно было развернуть, и вы не можете просто извлечь его (но это не так много работы, чтобы выгрузить его, если вы можете запустить произвольный контейнер).

  3. Приложение получает пароль базы данных из какого-то внешнего источника во время запуска. Хашикорп Хранилище - это решение, с которым я работал здесь: Pod работает с Kubernetes служебная учетная запись, которая используется для получения токена из Vault, а затем используется для получения пароля базы данных. расширенная версия этого выдает одноразовые учетные данные, которые можно отследить до определенной учетной записи Pod и службы. Это самый сложный путь, но также и самый безопасный.

...