Security 从超级用户撤消连接
是否有任何方法可以从服务器上定义为超级用户的角色中撤消数据库上的连接(或最好是所有)权限?在dev服务器上,我们有几个数据库——其中一个是共享的,但其余的应该只由一个开发人员拥有,而不允许其他人连接。目前,所有开发人员都是具有登录选项的超级用户Security 从超级用户撤消连接,security,postgresql,roles,privileges,Security,Postgresql,Roles,Privileges,是否有任何方法可以从服务器上定义为超级用户的角色中撤消数据库上的连接(或最好是所有)权限?在dev服务器上,我们有几个数据库——其中一个是共享的,但其余的应该只由一个开发人员拥有,而不允许其他人连接。目前,所有开发人员都是具有登录选项的超级用户 CREATE ROLE dev_name LOGIN ENCRYPTED PASSWORD '...' SUPERUSER INHERIT CREATEDB CREATEROLE REPLICATION; 我尝试了很多方法: REVOKE CO
CREATE ROLE dev_name LOGIN
ENCRYPTED PASSWORD '...'
SUPERUSER INHERIT CREATEDB CREATEROLE REPLICATION;
我尝试了很多方法:
REVOKE CONNECT ON DATABASE test_db FROM dev_name;
revoke select on all tables in schema public from dev_name;
然后,当我检查时:
SELECT * FROM has_database_privilege('dev_name', 'test_db', 'connect');
结果仍然是真的
我尝试了解决方法,并将连接限制更改为另一个值,但超级用户仍然可以连接,即使在我第一次登录时:
CONNECTION LIMIT = 1;
因此,也许有机会做到这一点,而不影响pg_hba或删除其他开发人员的超级用户状态?否,您需要从这些开发人员中删除超级用户状态 手册中的相关引用:
- 作为超级用户意味着您不受访问控制
但是请注意,您不能免疫pg_hba.conf文件中的访问控制。但OP似乎在某种程度上滥用超级用户。