ALTER DEFAULT PRIVILEGES - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

ALTER DEFAULT PRIVILEGES

定義要套用至指定使用者 future 建立之物件的預設存取權限集。根據預設,使用者只能變更自己擁有的預設存取許可。只有超級使用者可以為其他使用者指定預設權限。

您可將預設權限套用至角色、使用者或使用者群組。您可以為目前資料庫中建立的所有物件或僅在指定結構描述中建立的物件設定全域預設權限。

預設權限僅適用於新物件。執行 ALTER 預設權限不會變更現有物件的權限。若要授與資料庫或結構描述中任何使用者建立的所有目前和 future 物件的權限,請參閱 Scoped 權限。

若要檢視有關資料庫使用者預設權限的資訊,請查詢 PG_DEFAULT_ACL 系統目錄資料表。

如需權限的相關資訊,請參閱 GRANT

所需權限

以下是 ALTER DEFAULT PRIVILEGES 所需的權限:

  • 超級使用者

  • 具有 ALTER DEFAULT PRIVILEGES 權限的使用者

  • 變更自身預設存取權限的使用者

  • 為其有權存取的結構描述設定權限的使用者

語法

ALTER DEFAULT PRIVILEGES [ FOR USER target_user [, ...] ] [ IN SCHEMA schema_name [, ...] ] grant_or_revoke_clause where grant_or_revoke_clause is one of: GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | REFERENCES | TRUNCATE } [,...] | ALL [ PRIVILEGES ] } ON TABLES TO { user_name [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTIONS TO { user_name [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON PROCEDURES TO { user_name [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRUNCATE } [,...] | ALL [ PRIVILEGES ] } ON TABLES FROM user_name [, ...] [ RESTRICT ] REVOKE { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRUNCATE } [,...] | ALL [ PRIVILEGES ] } ON TABLES FROM { ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ] REVOKE [ GRANT OPTION FOR ] { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTIONS FROM user_name [, ...] [ RESTRICT ] REVOKE { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTIONS FROM { ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ] REVOKE [ GRANT OPTION FOR ] { EXECUTE | ALL [ PRIVILEGES ] } ON PROCEDURES FROM user_name [, ...] [ RESTRICT ] REVOKE { EXECUTE | ALL [ PRIVILEGES ] } ON PROCEDURES FROM { ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ]

參數

FOR USER target_user

選用。為其定義預設權限的使用者名稱。只有超級使用者能夠指定其他使用者的預設權限。預設值是目前使用者。

IN SCHEMA schema_name

選用。如果出現 IN SCHEMA 子句,指定的預設權限就會套用至所指定 schema_name 中建立的新物件。在此情況下,做為 ALTER DEFAULT PRIVILEGES 目標的使用者或使用者群組必須具備所指定結構描述的 CREATE 權限。結構描述專屬的預設權限會新增至現有的全域預設權限。根據預設,預設權限會全域套用至整個資料庫。

GRANT

授與指定使用者所建立之所有新表格和檢視表、函數或預存程序之指定使用者或群組的權限集。您可以使用 GRANT 子句設定與使用 GRANT 命令時相同的權限和選項。

WITH GRANT OPTION

指出接收權限的使用者可以接著將相同的權限授予他人的子句。您無法將 WITH GRANT OPTION 授予群組或 PUBLIC。

TO user_name | ROLE role_name | GROUP group_name

使用者、角色或使用者群組的名稱,將對其套用指定的預設權限。

REVOKE

對於指定使用者所建立的所有新資料表、函數或預存程序,要撤銷指定使用者或群組的權限集。您可以使用 REVOKE 子句設定與使用 REVOKE 命令時相同的權限和選項。

GRANT OPTION FOR

這個子句只會撤銷對其他使用者授予指定權限的選項,而不會撤銷權限本身。您無法撤銷群組或 PUBLIC 的 GRANT OPTION。

FROM user_name | ROLE role_name | GROUP group_name

使用者、角色或使用者群組的名稱,預設將撤銷其指定權限。

RESTRICT

RESTRICT 選項只會撤銷使用者直接授予的權限。此為預設值。

範例

假設您要允許使用者群組中的任何使用者檢視report_readers使用者建立的所有資料表和檢視表report_admin。在此情況下,請以超級使用者身分執行下列命令。

alter default privileges for user report_admin grant select on tables to group report_readers;

在下列範例中,第一個命令會授與您建立的所有新資料表和檢視的 SELECT 權限。

alter default privileges grant select on tables to public;

下列範例會對 sales_admin 使用者群組授予您在 sales 結構描述中建立的所有新資料表和檢視的 INSERT 權限。

alter default privileges in schema sales grant insert on tables to group sales_admin;

以下範例會反轉前述範例中的 ALTER DEFAULT PRIVILEGES 命令。

alter default privileges in schema sales revoke insert on tables from group sales_admin;

根據預設,PUBLIC 使用者群組具有所有新的使用者定義功能的執行許可。若要撤銷新功能的 public 執行許可,然後僅將執行許可授予 dev_test 使用者群組,請執行下列命令。

alter default privileges revoke execute on functions from public; alter default privileges grant execute on functions to group dev_test;