Общее обсуждение: Драйвер CSI для Kubernetes и Azure Key Vault и хранение секретов в памяти

как указано в заголовке, у меня есть общий вопрос о безопасном извлечении секретов из Azure KeyVault.

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

Чтобы повысить безопасность своих приложений, я хотел бы использовать более безопасное хранилище, такое как Azure KeyVault, для хранения моих секретов, сертификатов и т.п.

В настоящее время я думаю о двух доступных версиях

  • с помощью драйвера CSI
  • запрос данных из KV с использованием вызова REST при запуске контейнера и сохранение данных только в памяти (мой любимый)

Почему-то я не доверяю подходу с использованием драйвера CSI по следующим причинам: если по какой-либо причине какой-либо злонамеренный пользователь сможет подключиться к моему контейнеру, он сможет прочитать значения из сгенерированного «файла». драйвером CSI.
Это должно быть довольно тривиально, если предположить, что один подключается к контейнеру. Несмотря на то, что в моем комплекте приложений установлен вредоносный пакет, возможно, эти данные можно будет прочитать...

С другой стороны, хранение секретов только в памяти кажется мне несколько более безопасным, так как злоумышленник должен иметь возможность прочитать память (надеюсь, есть что-то, что предотвратит такие действия), а также нужно знать точное место в памяти, где найти данные.

Любые советы, идеи или разъяснения высоко ценятся?

1 ответ

CSI вместе с KeyVault — это явное обновление безопасности решения, которое вы используете сейчас. Мы используем его все время с нашими клиентами. Это хорошо принятый подход, и я думаю, что теперь он также используется по умолчанию в K8 для секретов.

Если вы будете следовать рекомендациям по работе с контейнерами , все будет хорошо. Есть также хорошие шаги, такие как отсутствие оболочки внутри контейнера (скретч) и смещение безопасности влево на фазу сборки (сканирование кода, сканирование изображения, создание собственных образов).

Еще один хороший шаг — использовать средства защиты во время выполнения, такие как Falco.

Вы можете добавить еще один уровень безопасности, дополнительно ограничив доступ к API AKS для определенных IP-адресов или лучше использовать частный кластер. Это также идет рука об руку с KeyVault, сделайте его приватным и ограничьте доступ к нему.

Я думаю, что нет 100% безопасного решения, но все упомянутые мной вещи резко сокращают сценарий атаки.

Другие вопросы по тегам