Общее обсуждение: Драйвер 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% безопасного решения, но все упомянутые мной вещи резко сокращают сценарий атаки.