Назад | Перейти на главную страницу

Учетная запись PostgreSQL по умолчанию без пароля

У меня база данных PostgreSQL и наш внутренний инструмент уязвимостей жалуются на Default Unpassworded Account. Проблема в том, что я не могу понять, для какой учетной записи был разблокирован пароль. Я создал несколько учетных записей, но у всех есть пароли. postgres учетная запись тоже имеет пароль.

Когда я выполняю: psql template1 -c '\du' Я получил следующий результат:

                              List of roles
  Role name   |                   Attributes                   | Member of
--------------+------------------------------------------------+-----------
 account1     | Superuser, Create role, Create DB              | {}
 account2     |                                                | {}
 postgres     | Superuser, Create role, Create DB, Replication | {}
 account3     | Password valid until infinity                  | {}
 account4     | Password valid until infinity                  | {}

Любые советы, как решить эту проблему? Спасибо.

Хорошо, похоже, я нашел решение благодаря этой теме SO: https://stackoverflow.com/questions/23641823/check-if-a-role-in-postgresql-has-a-password-set

Когда я выпустил select * from pg_shadow;

  usename    | usesysid | usecreatedb | usesuper | usecatupd | userepl |               passwd                | valuntil | useconfig
--------------+----------+-------------+----------+-----------+---------+-------------------------------------+----------+-----------
 postgres     |    16384 | f           | f        | f         | f       |                                     | infinity |
 account1     |    17513 | f           | f        | f         | f       |                                     | infinity |
 account2     |    17679 | f           | f        | f         | f       | 11111111111111111111111111111111111 |          |
 account3     |       10 | t           | t        | t         | t       | 11111111111111111111111111111111111 |          |
 account4     |    16385 | t           | t        | t         | f       | 11111111111111111111111111111111111 |          |
(5 rows)

Итак, роли postgres и account1 действительно не было паролей.

Обновленные пароли для этих учетных записей: ALTER ROLE postgres WITH PASSWORD 'mysuperstrongpasswordhere';

И похоже, сейчас все ок.