Postgresql
執行時使用者對架構中所有對象(包括未來對象)的權限
在 PostgreSQL 10 中 - 當使用“所有者使用者”(擁有架構和所有表的登錄角色,應用程序在執行時不使用)和“執行時”使用者時,我可以
GRANT
選擇/更新/刪除架構中所有現有表的權限對執行時使用者:GRANT SELECT ON ALL TABLES IN SCHEMA owner TO runtime;
但這僅適用於現有對象,不適用於以後可能創建的新表。
有沒有辦法通過繼承角色或架構權限或類似的方式來避免授予所有新對象?
是的。關鍵詞是
DEFAULT PRIVILEGES
。ALTER DEFAULT PRIVILEGES FOR ROLE owner_user IN SCHEMA owner GRANT SELECT ON TABLES TO runtime;
將指定角色在未來創建的所有指定對象的指定權限授予其他指定角色。
我明確指定了target_role (
owner_user
) 以避免歧義。否則,引用手冊:如果
FOR ROLE
省略,則假定目前角色。有關的:
如果您有任何
serial
列,請不要忘記訪問序列。第一個連結的答案有說明。