Re[3]: Зашифровать данные
От: maxkar  
Дата: 20.01.20 18:38
Оценка: 3 (1)
Здравствуйте, e.thrash, Вы писали:

ET>Просто хотелось бы чтобы даже на том проки логин — пароль в открытом виде не хранился.


Такие технологии есть. Но нужно четко понимать, что не смотря на то, что "пароль не хранится в открытом виде" не означает, что "невозможно получить пароль в открытом виде". Как Pzz правильно отметил, для работы авторизации пароль нужен в открытом виде и где-то в открытом виде он все равно будет, пусть даже в памяти приложения.

Идея всех подобных решений более-менее стандартная — реализовать административно-технические средства, где у разработчика нет доступа "на чтение", а у приложения есть. Это может быть банальные "секреты" в Jenkins, передающиеся через переменные окружения в процессе сборки. Может быть какой-нибудь файл в облачном хранилище с разрешением на чтение только для application hosts. В более крупных организациях используют сервер шифрования (можно использовать AWS KMS или аналоги). API для шифрования доступно всем, API для расшифровки — только для deployment или application hosts. Приложение хранит зашифрованные пароли, при старте — обращается к серверу и расшифровывает ключи. Решений в подобном ключе — много. Например, HashiCorp Valut. "Из коробки" работает похожим образом spring cloud config (там и сервер, и интеграция с клиентской конфигурацией есть). Встроено в облачные среды (kubernetes secrets).

Но! Просто зашифровать пароли мало. Администраторы и прочие с доступом ко внутренней сети могут вызывать API расшифровки. Поэтому полезно делать аудит использования API (кто, когда, зачем) и разрабатывать процедуры контроля. Все такие решения так же не защищают от програмистов, отправляющих куда-нибудь расшифрованные секреты. Для гарантий от такого нужно настраивать сетевые правила (откуда можно получать и куда можно отправлять данные), проверять логи (да, пароли могут оказаться и там). При развитой паранойе можно на code review искать всякие side channel (вроде задержек/быстродействия API и т.п.), через которые может утечь пароль.

В целом прокси — очень простое и хорошее решение. Его можно быстро развернуть и настроить с помощью администраторов. А потом уже можно городить сложные системы управления секретами, параллельно с системами развертывания и управления приложениями (тот самый tech ops).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.