postgresql中的所有用户默认拥有所有权限

问题描述 投票:0回答:1

我发现我的所有用户都默认拥有所有权限。我检查了一些已经存在的帐户(通过DBeaver),它们可以连接到服务器中的任何数据库并进行任何操作;甚至新创建的帐户也拥有相同的权限,而这些帐户根本没有被授予任何权限。也许有人知道是否有办法解决它?

最令人惊讶的是,甚至“REVOKE ALL ON DATABASE example_database FROM example_user;” 没有帮助!此外,当我尝试通过 psql 中的 \du 检查用户的权限时,我看到我的超级用户(postgres)的“超级用户,创建角色,创建数据库,复制,绕过 RLS”,但该表不包含有关权限的信息其他用户

如有任何帮助,我将不胜感激。

postgresql psql privileges
1个回答
0
投票

不,并非所有用户都拥有所有权限。

  • 数据库的默认权限是

    CONNECT
    TEMP
    PUBLIC
    (= 每个人),您可以使用

    进行更改
    REVOKE ALL ON DATABASE xy FROM PUBLIC;
    
  • 在 v15 之前的 PostgreSQL 版本中,模式

    public
    具有授予
    CREATE
    PUBLIC
    权限,这不是一个好的设置(如文档所述)。改变它与

    REVOKE CREATE ON SCHEMA public FROM PUBLIC;
    

您无法直接获取用户的所有权限列表。最好的技巧是尝试放弃这个角色:

BEGIN;  -- so that you can undo it
DROP ROLE quaxi;
ROLLBACK;

如果该角色具有任何权限,您将在错误消息中列出这些权限。

© www.soinside.com 2019 - 2024. All rights reserved.