Role
Postgres 從一個角色繼承而不是另一個角色
我對 postgres 有點陌生,但對角色有很好的理解。我所擁有的是從他們正常的“data_analyst”組繼承的使用者。該組用於管理所有具有基本權限的數據分析師使用者。但我有一些使用者將擁有提升的權限。我最初的想法是為提升的使用者創建一個新組,當他們需要提升的權限時,他們會執行
SET ROLE elevated_role
。他們希望必須明確呼叫這些權限。他們本質上是兩個角色的一部分,他們被授予和繼承的有限角色以及他們必須設置的特權角色 業務和使用者不希望他們的提升特權被繼承到他們的主要角色。但這是基於我對角色的理解的問題。如果使用者已被授予
inherit
,他們就不需要SET
他們的角色,因為他們已經繼承了它。我怎麼能設置這個?還有另一種我沒有想到的方法嗎?
我通過將兩個角色嵌套在一起解決了這個問題。
CREATE role elevated_role nologin noinherit; GRANT ALL PRIVILEGES ON ALL tables IN SCHEMA db to elevated_role; GRANT usage ON SCHEMA db to elevated_role; CREATE role normal_role nologin noinherit; GRANT usage ON SCHEMA db to normal_role; GRANT select on ALL tables in SCHEMA db to normal_role; GRANT elevated_role TO normal_role; CREATE new_user with password 'some_pass'; GRANT normal_role TO new_user;
這允許我通過在組中添加和刪除使用者來管理組中的使用者,但為他們提供單獨的角色,如果他們想要插入、刪除等,他們必須明確設置這些角色。