我有一个 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 | {}
有什么建议可以解决这个问题吗?谢谢。
答案1
好的,看起来我已经找到了解决方案,感谢这个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';
现在看起来一切都好。