Postgresql
向所有(動態)模式中的表授予權限
我們已經設置了一個 AWS Database Migration Service,它可以從多個來源遷移架構和表。
從源遷移的規則可以是模式上的萬用字元,這意味著模式可以在源中創建時任意“彈出”。
從我在 PostgreSQL 中看到的所有不同的權限授予來看,似乎都指定了一個特定的模式,或者循環遍歷每個現有的模式。
有沒有辦法為給定數據庫中的每個目前和未來模式授予某些特權?
理想情況下,這樣的事情會很棒:
ALTER DEFAULT PRIVILEGES FOR ROLE my_role IN SCHEMA "*" GRANT SELECT ON TABLES TO my_role;
我知道可以將 super_user 角色授予使用者以實現這一點,但這對於應該只有讀取權限的人來說似乎非常骯髒。
感謝幫助。
只需省略 IN SCHEMA 子句,它適用於所有模式,因此不需要模式的萬用字元功能。
ALTER DEFAULT PRIVILEGES FOR ROLE my_role GRANT SELECT ON TABLES TO my_role;
您真正的問題可能是 FOR ROLE 子句。以上內容有點無用,因為它僅適用於 my_role 創建的表(在任何模式中)。但是表的創建者自動擁有選擇權限,所以這沒有任何用處。您的 FOR ROLE 子句需要指定誰將創建表(如果省略它,則表示目前使用者)。如果您有多個這樣的創建角色,您別無選擇,只能為每個角色重複 ALTER DEFAULT PRIVILEGES。這是真正需要萬用字元功能的地方,但遺憾的是不存在。