ALTER DEFAULT PRIVILEGES - Amazon Redshift

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

ALTER DEFAULT PRIVILEGES

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

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

預設許可僅適用於新的物件。執行ALTERDEFAULTPRIVILEGES不會變更現有物件的許可。若要授予資料庫或結構描述中任何使用者建立的所有目前和未來物件的許可,請參閱 範圍許可

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

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

所需權限

以下是 ALTER DEFAULT 的必要權限PRIVILEGES:

  • 超級使用者

  • 具有 ALTERDEFAULTPRIVILEGES權限的使用者

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

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

語法

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 中建立的新物件。在此情況下, 目標的使用者或使用者群組ALTERDEFAULTPRIVILEGES必須具有指定結構描述CREATE的權限。結構描述專屬的預設權限會新增至現有的全域預設權限。根據預設,預設權限會全域套用至整個資料庫。

GRANT

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

WITH GRANT OPTION

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

TO user_name | ROLE role_name | GROUP group_name

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

REVOKE

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

GRANT OPTION FOR

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

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結構描述中建立的所有新資料表和檢視INSERT的權限授予sales_admin使用者群組。

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;