撤消超级用户的连接

时间:2013-01-31 12:07:19

标签: security postgresql roles privileges

有没有办法从服务器上定义为超级用户的角色撤销数据库的连接(或最好是所有)权限?在开发服务器上,我们有几个数据库 - 其中一个是共享的,但其余数据库只能由一个没有连接权限的开发人员拥有。目前,所有开发人员都是具有登录选项的超级用户。

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或为其他开发人员删除超级用户状态的情况下这样做?

1 个答案:

答案 0 :(得分:1)

不,您需要从这些开发人员中删除超级用户状态。

手册中的相关引言:

  

这些条款确定新角色是否是“超级用户”,谁可以   覆盖数据库中的所有访问限制