ХашКорп Хранилище, чтобы заполнить секреты kubernetes - PullRequest
0 голосов
/ 17 октября 2018

Недавно я узнал о HashiCorp Vault и его использовании в сочетании с Kubernetes.Я нашел два действительно замечательных сообщения в блоге о том, как вы можете использовать HashiCorp Vault для создания кредитов на лету, используя init-контейнер и общий том ( post1 , post2 ).Kubernetes также предоставляет хороший способ обработки учетных данных с помощью секретов Kubernetes, который также дает возможность считывать учетные данные через переменные среды.Таким образом, он обеспечивает хорошую абстракцию для секретного хранилища.

Мой вопрос: можно ли использовать HashiCorp Vault для заполнения секретов Kubernetes учетными данными и как этого достичь?

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

Как упомянул @Rico, разоблачая секреты как в Убежище, так и в Кубернетесе, в первую очередь побеждает цель использования Убежища.

В Vault данные зашифрованы (транзит / отдых), и вы можете обеспечить детальный контроль над доступом к каким данным.Предоставление данных в Vault объекту Kubernetes Secret, который в основном ограничен кодировкой base64, в значительной степени уничтожит величайшее преимущество Vault , которое заключается в защите вашей инфраструктуры и единственной сущности, отвечающей за управление вашими секретами.

Vault - потрясающий инструмент, но, на мой взгляд, он может стать более сложным для конфигураций не-dev, так как вам придется подключать подобные Consul, чтобы вы могли иметь постоянное внутреннее хранилище, поэтомуиспользование архитектурно-распределенного шаблона, такого как шаблон коляски , также может быть крайне излишним и вообще не рекомендуется.

  • Но с его помощью вы могли бы создать экземпляр хранилища, «живущий» в том же модуле Pod, что и ваш «основной» контейнер, что позволило бы использовать службу шифрования, предоставляемую Vault, но мы бы связали жизненный цикл Vault.к жизненному циклу стручка.
  • При таком подходе нам потребуется иметь экземпляр Vault на каждом модуле на случай, если мы планируем получить доступ к секретной информации, что только сделает систему чрезвычайно сложной.При таком подходе мы могли бы разделить секретную информацию, требуемую для каждого объекта, в нескольких экземплярах хранилища и, следовательно, распространять секретную информацию нашей инфраструктуры в нескольких местах, но мы продолжаем увеличивать сложность управления нашей инфраструктурой.

Так что я определенно понимаю, что попытка найти способ получить секретную информацию, необходимую для стручка рядом с ним, может показаться заманчивой, особенно простым способом, но это определенно нарушит цель, если ее просто оставить полностью незашифрованной.

При этом не нужно просто создавать контроллер Vault, который будет отвечать за взаимодействие с Vault и будет отвечать за запросы Vault для Wrapped Tokens, которые могут временно предоставить доступ к определеннымсекретная информация, после того как она была развернута контейнером init внутри Pod?Это из-за дополнительного времени, необходимого для запуска Pod, так как нам нужно выполнить некоторые ранние вызовы, чтобы получить Wrapped Token?Или это из-за дополнительной задержки выполнения дополнительных вызовов всякий раз, когда необходимо запросить секретные данные из Vault?

Всякий раз, когда я думаю об идее интеграции Kubernetes и Vault, я обычно склоняюсь к мысли оследующий прототип, созданный Келси Хайтауэр, объяснил здесь .

0 голосов
/ 17 октября 2018

Мой вопрос: можно ли использовать HashiCorp Vault для заполнения секретов Kubernetes учетными данными и как этого достичь?

Да и нет.

Нет: естьнет поддержки ни со стороны Kubernetes или Vault.Существует только поддержка использования Сервисной учетной записи для аутентификации в Vault.Более серьезный вопрос - почему вы хотите, чтобы Vault заполнял секреты в секретах Kubernetes, поскольку они уже «защищены» в Vault.

Да: вам придется создавать свою собственную автоматизацию.Как-то так для всех твоих секретов:

kubectl create secret generic mynicepass2 --from-literal=key1=`vault read <your-secret>`
...