Postgresql

沒有登錄的角色是否應該擁有數據庫的連接權限?

  • March 9, 2021

我想在 PostgreSQL 中創建一個只讀角色,並使用它將它分配給多個應該具有隻讀訪問權限的新使用者。對我來說,將只讀權限授予目標數據庫上的角色也是有意義的。我擔心的是,使用“NOLOGIN”創建的角色是否應該具有“CONNECT ON DATABASE”權限。或者出於某種原因,僅將連接權限授予具有登錄名的個人使用者是否更好?

角色:

CREATE ROLE role_readonly WITH 
   NOLOGIN NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION VALID UNTIL 'infinity';

權限:

# should this be here?
GRANT CONNECT ON DATABASE db_name TO role_readonly;
#
GRANT USAGE ON SCHEMA public TO role_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO role_readonly;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO role_readonly;

CONNECT可以將數據庫授予NOLOGIN角色。效果是允許角色的所有成員連接到數據庫。這與角色是否可以登錄的問題無關。

請注意,預設情況下,每個人 ( PUBLIC) 都可以連接到數據庫。您必須擁有REVOKE該特權才能使上述特權有意義。

引用自:https://dba.stackexchange.com/questions/286725