January 25, 2020

Приложения для безопасности

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

Независимо от того, являетесь ли вы разработчиком или сисадмином, вам необходимо четко понимать, что у вас есть правильный выбор инструментов для обеспечения безопасности вашей среды.

Для правильной работы приложениям необходим доступ к данным конфигурации.

И хотя большинство данных конфигурации не являются конфиденциальными, некоторые должны оставаться таковыми.

Эти данные известны как секреты.

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

Эти секреты включают в себя:

  • API ключи
  • Учетные данные базы данных
  • Ключи шифрования
  • Настройки чувствительной конфигурации (адрес электронной почты, имена пользователей, флаги отладки и т. д.)
  • Пароли

Однако заботиться об этих секретах на поздних этапах может оказаться трудной задачей.

Вот несколько советов для разработчиков и системных администраторов:


Исправления уязвимостей

Не забывайте отслеживать библиотеки, которые используются в приложении, и отмечать уязвимости, постоянно контроллируя их.

Использование шлюзов API в качестве буфера безопасности

Используйте возможности шлюза API ваших облачных провайдеров, чтобы включить еще один уровень безопасности в дополнение к остальным мерам.

Защищать и проверять данные

Обязательно используйте HTTPS для безопасного канала связи и проверяйте SSL-сертификаты для защиты удаленной идентификации.

Следуйте правилам безопасного программирования кода приложения

Не имея серверов для взлома, злоумышленники переключатся на прикладной уровень, поэтому будьте особенно внимательны, чтобы защитить свой код.

Управляйте секретами в безопасном хранилище

Конфиденциальная информация может быть легко пропущена, а устаревшие учетные данные могут быть использованы для атак «рэйнбоу», если вы не примете правильные решения использования секретного управления.

Не храните секреты в прикладной системе, переменных среды или в системе управления исходным кодом.

Из-за отсутствия большого количества готовых решений многие компании стремились создать свои собственные инструменты управления секретами.

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

1 Vault

HashiCorp Vault — это инструмент для безопасного хранения и доступа к секретам.

Он предоставляет унифицированный интерфейс, сохраняя при этом строгий контроль доступа и ведение полного журнала аудита.

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

Он предоставляет API, который позволяет доступ к секретам на основе политик.

Любой пользователь API будет проверен и сможет увидеть только те секреты, которые он имеет право просматривать.


Он может накапливать данные в различных бэкэндах, таких как Amazon DynamoDB, Consul и многих других.

Для служб аудита Vault поддерживает запись в локальный файл, на сервер Syslog или непосредственно в сокет.

Vault регистрирует информацию о клиенте, который выполнил действие, IP-адрес клиента, действие и в какое время оно было выполнено

Работает в основном с токенами.

Каждый токен присваивается политике, которая может ограничивать действия и пути.

Ключевые особенности Vault:

  • Он шифрует и дешифрует данные, не сохраняя их.
  • Vault может генерировать секреты по запросу для некоторых операций, таких как базы данных AWS или SQL.
  • Позволяет репликацию через несколько центров обработки данных.
  • Vault имеет встроенную защиту для секретного отзыва.
  • Служит секретным хранилищем с контролем доступа.

2 AWS Secrets Manager

Вы ждали AWS в этом списке. Не так ли?


У AWS есть решение любой проблемы.

AWS Secrets Manager позволяет вам быстро управлять и получать учетные данные базы данных, ключи API и другие пароли.

Используя Secrets Manager, вы можете защищать, анализировать и управлять секретами, необходимыми для доступа к возможностям в облаке AWS, сторонних службах и локально.

Secrets Manager позволяет вам управлять доступом к секретам, используя детализированные разрешения.

Ключевые функции AWS Secrets Manager:

  • Шифрует секреты , используя ключи шифрования.
  • Кроме того, расшифровывает секрет и затем передает безопасно по TLS
  • Предоставляет примеры кода, которые помогают вызывать API-интерфейсы Secrets Manager.
  • Он имеет клиентские библиотеки кэширования, чтобы улучшить доступность и сократить время использования ваших секретов.
  • Позволяет настроить конечные точки Amazon VPC (виртуальное частное облако) для сохранения трафика в сети AWS.

3 Keywhiz

Square Keywhiz помогает с секретами инфраструктуры, связками ключей GPG, учетными данными базы данных, включая сертификаты и ключи TLS, симметричные ключи, токены API и ключи SSH для внешних служб.

Keywhiz — это инструмент для обработки и обмена секретами.

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

Ключевые особенности Keywhiz:

  • Keywhiz Server предоставляет JSON API для сбора секретов и управления ими.
  • Он хранит все секреты только в памяти и никогда не записывает на диск
  • Пользовательский интерфейс сделан на AngularJS, чтобы пользователи могли использовать пользовательский интерфейс.

4 Confidant

Confidant — это инструмент управления секретами с открытым исходным кодом, который обеспечивает удобное хранение и безопасный доступ к секретам.

Confidant хранит секреты дополнительным способом в DynamoDB и генерирует уникальный ключ данных KMS для каждой модификации всего секрета с использованием симметричной криптографии с проверкой подлинности Fernet.


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

Некоторые его функции включают в себя:

  • Аутентификация KMS
  • Шифрование версионных секретов в состоянии покоя
  • Удобный веб-интерфейс для управления секретами
  • Генерируйте токены, которые можно применять для аутентификации между сервисами или для передачи зашифрованных сообщений между сервисами.

5 Strongbox

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

Strongbox — это удобный инструмент на стороне клиента.

Он поддерживает ресурсы AWS, а также безопасно их настраивает.


С помощью глубокого поиска вы можете быстро и эффективно проверить весь свой набор паролей и секретов.

У вас есть возможность хранить учетные данные локально или в облаке.

Если вы выбираете облако, то вы можете хранить в iCloud, Dropbox, OneDrive, Google Drive, WebDAV и т. д.

6 Azure Key Vault

Размещаете свои приложения на Azure?

Если да, то это хороший выбор.

Azure Key Vault позволяет пользователям управлять всеми секретами (ключами, сертификатами, строками подключения, паролями и т. д.)

Для своего облачного приложения в определенном месте. Он интегрирован из коробки с происхождением и целями секретов в Azure.

В дальнейшем он может использоваться приложениями вне Azure.

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


Azure может помочь обеспечить защиту данных и соответствие требованиям.

7 Docker secrets

Секреты Docker позволяют легко добавить секрет в кластер, и он распространяется только по взаимно аутентифицированным соединениям TLS.

Затем данные поступают на узел диспетчера в секретах Docker и автоматически сохраняются во внутреннем хранилище Raft, что обеспечивает шифрование данных.


Docker secret могут быть легко применены для управления данными и, следовательно, для их передачи в контейнеры, которые имеют к ним доступ. Это предотвращает утечку секретов, когда они израсходованы приложением.

8 Knox

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

Knox написан на Go, и клиенты общаются с сервером Knox с помощью REST API.

Knox использует временную временную базу данных для хранения ключей.

Он шифрует данные, хранящиеся в базе данных, используя AES-GCM с помощью главного ключа шифрования.

Он также доступен в виде образа Docker.

Заключение

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