Django + AWS Secret Manager Поворот пароля - PullRequest
1 голос
/ 27 марта 2020

У меня есть приложение Django, которое извлекает секрет БД из AWS Secret Manager. Он содержит все параметры БД, такие как имя пользователя, пароль, хост, порт и т. Д. c. Когда я запускаю приложение Django на EC2, оно успешно извлекает секрет из Secret Manager и устанавливает соединение с БД.

Теперь проблема в том, что у меня установлена ​​политика ротации паролей на 30 дней. Чтобы проверить поток, в настоящее время я установил его на 1 день. Каждый раз, когда пароль вращается, мое приложение Django теряет связь с БД. Итак, я должен вручную перезапустить приложение, чтобы приложение могло получить новые учетные данные БД из Secret Manager.

Есть ли способ, при котором секретная выборка может происходить автоматически и без перезапуска сервера вручную? Один из возможных способов - запустить AWS CodeDeploy или аналогичную службу, которая автоматически перезапустит сервер. Однако, если я воспользуюсь этим подходом, у меня будет некоторое время простоя

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

Ответы [ 2 ]

1 голос
/ 27 марта 2020

Если старые учетные данные БД становятся недействительными сразу во время ротации, то, вероятно, будет довольно сложно сделать это без некоторого простоя. Один из вариантов - заставить ваше приложение перехватить учетную ошибку и (попытаться) получить новый секрет в этот момент из диспетчера секретов, создав новое соединение с БД. Другим другим вариантом является наличие двух действительных пар «пользователь / пароль», оставляя старое действительным при создании нового. Я не уверен, что автоматическое c вращение дает вам такую ​​возможность Затем вы можете перезапустить свое приложение, как вам нравится. Чтобы сделать это даже без кратковременного простоя, вероятно, требуется балансировщик нагрузки и несколько запущенных экземпляров вашего приложения, чтобы вы могли пополнить его новыми кредитами, прежде чем прекратить работу старого.

0 голосов
/ 28 марта 2020

Ранее на был дан ответ о том, как использовать новый секрет, созданный поворотом ключа .

Если вы используете многопользовательское вращение («Использовать секрет, который я ранее хранил в AWS «Диспетчер секретов» в консоли) вы можете использовать Диспетчер секретов python библиотека кэширования для кэширования и периодического обновления sh секрета.

Если вы используете одного пользователя Опция поворота: вам нужно написать оболочку подключения (аналогично JDB C wrapper ), которая обновляет sh учетные данные, когда вы получаете ошибку при установлении нового соединения.

...