Role

Postgres 從一個角色繼承而不是另一個角色

  • June 8, 2016

我對 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;

這允許我通過在組中添加和刪除使用者來管理組中的使用者,但為他們提供單獨的角色,如果他們想要插入、刪除等,他們必須明確設置這些角色。

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