Контекст
Итак, в настоящее время я создаю сценарий установки / запуска, который устанавливает безопасный docker контейнер с PostgreSql базой данных на клиентском компьютере.
Чтобы сделать его действительно безопасным , мой план состоит в том, чтобы сценарий:
- Автоматически создавал случайное имя пользователя и пароль
- Выполнял
docker run
(конечно, с -d postgres
) и со случайно сгенерированным именем пользователя и паролем - Автоматически создать еще один набор случайных имени пользователя и пароля
- Создать нового пользователя с новым именем пользователя и паролем
Grant
вновь созданный пользователь с соответствующими разрешениями - Вернуть учетные данные (имя пользователя и пароль) вновь созданного пользователя и не хранить (другими словами забыть) учетные данные суперпользователя (имя пользователя и пароль)
Вопросы
Какие ограничения на имя пользователя и пароль Postgresql? Из этого источника кажется, что максимальная длина имени пользователя составляет 64 байта (то есть 64 символа), а из этого источника кажется, что максимальная длина пароля составляет 100 байтов (то есть 100 символов). Насколько точна информация (источники довольно старые, возможно, я неправильно ее понял)? Кроме того, разрешены только буквенно-цифровые символы? Поддерживает ли он Base64, MD5 или SHA?
Я заметил, что могу получить доступ к Postgres bash без ввода пароля суперпользователя. При дальнейшем исследовании выяснилось, что это связано с тем, что при создании базы данных Postgres локальный доступ считается доверенным, поскольку он автоматически настраивается в pg_hba.conf
. Что такое команда , чтобы не доверять всем соединениям, включая локальное, и для любого действия суперпользователя должен быть предоставлен пароль суперпользователя?
Любые предложения по повышению безопасности и более того, это не предполагает самостоятельного размещения базы данных вместо того, чтобы клиент размещал ее на своем компьютере? (Я понимаю, что это широкий / не относящийся к категории c вопрос, поэтому не стесняйтесь игнорировать этот вопрос)