При работе с контейнерами, Kubernetes, облаком и секретами есть над чем подумать.
Вы должны применять и связывать лучшие практики управления идентификацией и доступом в дополнение к выбору и использованию различных инструментов.
Независимо от того, являетесь ли вы разработчиком или сисадмином, вам необходимо четко понимать, что у вас есть правильный выбор инструментов для обеспечения безопасности вашей среды.
Для правильной работы приложениям необходим доступ к данным конфигурации.
И хотя большинство данных конфигурации не являются конфиденциальными, некоторые должны оставаться таковыми.
Эти данные известны как секреты.
Что ж, если вы создаете надежное приложение, есть вероятность, что ваши функции требуют доступа к секретам или любым другим типам конфиденциальной информации, которую вы храните.
Эти секреты включают в себя:
- API ключи
- Учетные данные базы данных
- Ключи шифрования
- Настройки чувствительной конфигурации (адрес электронной почты, имена пользователей, флаги отладки и т. д.)
- Пароли
- Исправления уязвимостей
- Использование шлюзов API в качестве буфера безопасности
- Защищать и проверять данные
- Следуйте правилам безопасного программирования кода приложения
- Управляйте секретами в безопасном хранилище
- 1 Vault
- 2 AWS Secrets Manager
- 3 Keywhiz
- 4 Confidant
- 5 Strongbox
- 6 Azure Key Vault
- 7 Docker secrets
- 8 Knox
- Заключение
Исправления уязвимостей
Не забывайте отслеживать библиотеки, которые используются в приложении, и отмечать уязвимости, постоянно контроллируя их.
Использование шлюзов API в качестве буфера безопасности
Используйте возможности шлюза API ваших облачных провайдеров, чтобы включить еще один уровень безопасности в дополнение к остальным мерам.
Защищать и проверять данные
Обязательно используйте HTTPS для безопасного канала связи и проверяйте SSL-сертификаты для защиты удаленной идентификации.
Следуйте правилам безопасного программирования кода приложения
Не имея серверов для взлома, злоумышленники переключатся на прикладной уровень, поэтому будьте особенно внимательны, чтобы защитить свой код.
Управляйте секретами в безопасном хранилище
Конфиденциальная информация может быть легко пропущена, а устаревшие учетные данные могут быть использованы для атак «рэйнбоу», если вы не примете правильные решения использования секретного управления.
Не храните секреты в прикладной системе, переменных среды или в системе управления исходным кодом.
Из-за отсутствия большого количества готовых решений многие компании стремились создать свои собственные инструменты управления секретами.
Вот некоторые из них, которые вы можете использовать для своих потребностей.
1 Vault
- 🔒 Учебник по Vault. Часть 1
- 🔒 Учебник по Vault. Часть 2
- 🔒 Учебник по Vault. Часть 3
- 🔒 Учебник по Vault. Часть 4
- 🔒 Учебник по Vault. Часть 5
- 🔒 Учебник по Vault. Часть 6
- 🔒 Как читать секреты Vault из контейнеров Docker
Vault регистрирует информацию о клиенте, который выполнил действие, IP-адрес клиента, действие и в какое время оно было выполнено
Работает в основном с токенами.
- Он шифрует и дешифрует данные, не сохраняя их.
- Vault может генерировать секреты по запросу для некоторых операций, таких как базы данных AWS или SQL.
- Позволяет репликацию через несколько центров обработки данных.
- Vault имеет встроенную защиту для секретного отзыва.
- Служит секретным хранилищем с контролем доступа.
2 AWS Secrets Manager
У AWS есть решение любой проблемы.
AWS Secrets Manager позволяет вам быстро управлять и получать учетные данные базы данных, ключи API и другие пароли.
- Шифрует секреты , используя ключи шифрования.
- Кроме того, расшифровывает секрет и затем передает безопасно по TLS
- Предоставляет примеры кода, которые помогают вызывать API-интерфейсы Secrets Manager.
- Он имеет клиентские библиотеки кэширования, чтобы улучшить доступность и сократить время использования ваших секретов.
- Позволяет настроить конечные точки Amazon VPC (виртуальное частное облако) для сохранения трафика в сети AWS.
3 Keywhiz
Keywhiz – это инструмент для обработки и обмена секретами.
Автоматизация в Keywhiz позволяет нам беспрепятственно распространять и устанавливать основные секреты для наших служб, что требует согласованной и безопасной среды.
- Keywhiz Server предоставляет JSON API для сбора секретов и управления ими.
- Он хранит все секреты только в памяти и никогда не записывает на диск
- Пользовательский интерфейс сделан на AngularJS, чтобы пользователи могли использовать пользовательский интерфейс.
4 Confidant
- Аутентификация KMS
- Шифрование версионных секретов в состоянии покоя
- Удобный веб-интерфейс для управления секретами
- Генерируйте токены, которые можно применять для аутентификации между сервисами или для передачи зашифрованных сообщений между сервисами.
5 Strongbox
6 Azure Key Vault
Размещаете свои приложения на Azure?
Если да, то это хороший выбор.
Azure Key Vault позволяет пользователям управлять всеми секретами (ключами, сертификатами, строками подключения, паролями и т. д.)
Для своего облачного приложения в определенном месте. Он интегрирован из коробки с происхождением и целями секретов в Azure.
В дальнейшем он может использоваться приложениями вне Azure.
Вы также можете повысить производительность, сократив задержку облачных приложений, храня криптографические ключи в облаке, а не локально.
7 Docker secrets
Секреты Docker позволяют легко добавить секрет в кластер, и он распространяется только по взаимно аутентифицированным соединениям TLS.
Затем данные поступают на узел диспетчера в секретах Docker и автоматически сохраняются во внутреннем хранилище Raft, что обеспечивает шифрование данных.
8 Knox
Knox, разработанный социальной сетью Pinterest для решения своей проблемы с ручным управлением ключами и ведением контрольного журнала.
Knox написан на Go, и клиенты общаются с сервером Knox с помощью REST API.
Knox использует временную временную базу данных для хранения ключей.
Он шифрует данные, хранящиеся в базе данных, используя AES-GCM с помощью главного ключа шифрования.
Он также доступен в виде образа Docker.
Заключение
Я надеюсь, что вышеизложенное дает вам представление о некоторых из лучших программ для управления учетными данными приложений.