本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
GRANT
定義使用者或角色的存取權限。
許可包括存取選項,例如能夠讀取資料表和檢視中的資料、寫入資料、建立資料表及捨棄資料表。使用此命令可提供資料表、資料庫、結構描述、函數、程序、語言或資料欄的特定許可。若要撤銷資料庫物件的許可,請使用 REVOKE 命令。
權限也包括下列資料共用生產者存取選項:
-
授予取用者命名空間和帳戶的資料共用存取權。
-
透過在資料共用中新增或移除物件,授予變更資料共用的權限。
-
透過從資料共用中新增或移除取用者命名空間,授予資料共用的權限。
資料共用取用者存取選項如下:
-
授予使用者對從資料共用建立的資料庫,或指向此類資料庫的外部結構描述的完全存取權。
-
授予使用者從資料共用建立之資料庫的物件層級權限,就像您對本機資料庫物件一樣。若要授予此層級的許可,您必須在從資料共用建立資料庫時使用 WITHPERMISSIONS子句。如需詳細資訊,請參閱CREATE DATABASE。
如需資料共用權限的詳細資訊,請參閱 叢集內和叢集之間的資料共用。
您也可以授予角色來管理資料庫許可,並控制使用者可以對您的資料執行哪些動作。透過定義角色並將角色指派給使用者,您可以限制使用者可以採取的動作,例如將使用者限制為僅 CREATETABLE和 INSERT命令。如需 CREATEROLE命令的詳細資訊,請參閱 CREATE ROLE。Amazon Redshift 具有一些系統定義的角色,您也可以使用這些角色將特定許可授予使用者。如需詳細資訊,請參閱Amazon Redshift 系統定義角色。
您只能對使用 ON SCHEMA語法的資料庫使用者和使用者群組授予外部結構描述的 GRANT或 REVOKEUSAGE許可。EXTERNAL SCHEMA 搭配 使用 ON 時 AWS Lake Formation,您只能使用 GRANT和 AWS Identity and Access Management (IAM) 角色的REVOKE許可。如需許可的清單,請參閱語法。
對於儲存的程序,您可以授予的唯一許可是 EXECUTE。
您無法在交易區塊內執行 GRANT (在外部資源上) (BEGIN ... END)。如需交易的相關資訊,請參閱 可序列化隔離。
若要查看使用者被授予的資料庫許可,請使用 HAS_DATABASE_PRIVILEGE。若要查看使用者被授予的結構描述許可,請使用 HAS_SCHEMA_PRIVILEGE。若要查看使用者被授予的資料表許可,請使用 HAS_TABLE_PRIVILEGE。
語法
GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | REFERENCES | ALTER | TRUNCATE } [,...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | TEMPORARY | TEMP | ALTER } [,...] | ALL [ PRIVILEGES ] } ON DATABASE db_name [, ...] TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { { CREATE | USAGE | ALTER } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL FUNCTIONS IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON { PROCEDURE procedure_name ( [ [ argname ] argtype [, ...] ] ) [, ...] | ALL PROCEDURES IN SCHEMA schema_name [, ...] } TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT USAGE ON LANGUAGE language_name [, ...] TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
下列語法適用於 Amazon Redshift 資料表和檢視上的資料欄層級許可。
GRANT { { SELECT | UPDATE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { [ TABLE ] table_name [, ...] } TO { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
以下是授予具有指定角色之使用者和群組的ASSUMEROLE許可語法。若要開始使用 ASSUMEROLE 權限,請參閱 授予ASSUMEROLE許可的使用備註。
GRANT ASSUMEROLE ON { 'iam_role' [, ...] | default | ALL } TO { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...] FOR { ALL | COPY | UNLOAD | EXTERNAL FUNCTION | CREATE MODEL } [, ...]
以下是 Redshift Spectrum 與 Lake Formation 整合的語法。
GRANT { SELECT | ALL [ PRIVILEGES ] } ( column_list ) ON EXTERNAL TABLE schema_name.table_name TO { IAM_ROLE iam_role } [, ...] [ WITH GRANT OPTION ] GRANT { { SELECT | ALTER | DROP | DELETE | INSERT } [, ...] | ALL [ PRIVILEGES ] } ON EXTERNAL TABLE schema_name.table_name [, ...] TO { { IAM_ROLE iam_role } [, ...] | PUBLIC } [ WITH GRANT OPTION ] GRANT { { CREATE | ALTER | DROP } [, ...] | ALL [ PRIVILEGES ] } ON EXTERNAL SCHEMA schema_name [, ...] TO { IAM_ROLE iam_role } [, ...] [ WITH GRANT OPTION ]
生產者端資料共用權限
以下是使用 向使用者ALTER或角色GRANT授予或SHARE許可的語法。使用者可以使用 ALTER 許可來變更資料共用,或使用 SHARE許可將用量授予取用者。ALTER 和 SHARE是您可以在資料共用上授予使用者和角色的唯一許可。
GRANT { ALTER | SHARE } ON DATASHARE datashare_name TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP
group_name
| PUBLIC } [, ...]
以下是在 Amazon Redshift 上使用 GRANT 進行資料共用使用許可的語法。您可以使用 USAGE許可將資料共用的存取權授予取用者。您無法將此許可授予使用者或使用者群組。此許可也不支援 GRANT陳述式WITHGRANTOPTION的 。只有具有先前授予FOR資料共用SHARE許可的使用者或使用者群組,才能執行此類型的GRANT陳述式。
GRANT USAGE ON DATASHARE datashare_name TO NAMESPACE 'namespaceGUID' | ACCOUNT 'accountnumber' [ VIA DATA CATALOG ]
以下是如何將資料共用使用權授予 Lake Formation 帳戶的範例。
GRANT USAGE ON DATASHARE salesshare TO ACCOUNT '123456789012' VIA DATA CATALOG;
取用者端資料共用權限
以下是從GRANT資料共用建立之特定資料庫或結構描述的資料共用使用許可語法。
取用者存取從資料共用建立的資料庫所需的進一步許可,取決於用於從資料共用建立資料庫的CREATEDATABASE命令是否使用 WITHPERMISSIONS子句。如需CREATEDATABASE命令和WITHPERMISSIONS子句的詳細資訊,請參閱 CREATE DATABASE。
不使用 WITHPERMISSIONS子句建立的資料庫
當您USAGE在沒有子WITHPERMISSIONS句的情況下,在從資料共用建立的資料庫上授予 時,您不需要另外授予共用資料庫中物件的許可。在沒有子WITHPERMISSIONS句的情況下,在從資料共用建立的資料庫上授予使用權限的實體會自動存取資料庫中的所有物件。
使用 WITHPERMISSIONS子句建立的資料庫
當您在透過具有 WITHPERMISSIONS子句的資料共用建立共用資料庫的資料庫USAGE上授予 時,仍必須授予共用資料庫中資料庫物件的相關許可,才能存取它們,就像您授予本機資料庫物件的許可一樣。若要將權限授予從資料共用建立之資料庫中的物件,請使用三部分語法 database_name.schema_name.object_name
。若要將權限授予指向共用資料庫內共用結構描述的外部結構描述中的物件,請使用兩部分語法 schema_name.object_name
。
GRANT USAGE ON { DATABASE shared_database_name [, ...] | SCHEMA shared_schema} TO { username | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
範圍許可可讓您將許可授予資料庫或結構描述內類型的所有物件的使用者或角色。具有範圍許可的使用者和角色在資料庫或結構描述中的所有目前和未來物件上具有指定的許可。
您可以在 中檢視資料庫層級範圍許可的範圍SVV_DATABASE_PRIVILEGES。您可以在 中檢視結構描述層級範圍許可的範圍SVV_SCHEMA_PRIVILEGES。
以下是將限定範圍權限授予使用者或角色的語法。如需有關範圍許可的詳細資訊,請參閱 限定範圍權限。
GRANT { CREATE | USAGE | ALTER } [,...] | ALL [ PRIVILEGES ] } FOR SCHEMAS IN DATABASE db_name TO { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...] GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [PRIVILEGES] } } FOR TABLES IN {SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name } TO { username [ WITH GRANT OPTION ] | ROLE role_name} [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } FOR FUNCTIONS IN {SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name } TO { username [ WITH GRANT OPTION ] | ROLE role_name | } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } FOR PROCEDURES IN {SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name } TO { username [ WITH GRANT OPTION ] | ROLE role_name | } [, ...] GRANT USAGE FOR LANGUAGES IN {DATABASE db_name} TO { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...]
請注意,範圍許可不會區分函數的許可和程序的許可。例如,下列陳述式bob
會授予結構描述 中函數和程序的EXECUTE
許可Sales_schema
。
GRANT EXECUTE FOR FUNCTIONS IN SCHEMA Sales_schema TO bob;
以下是 Amazon Redshift 上的機器學習模型許可語法。
GRANT CREATE MODEL TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON MODEL model_name [, ...] TO { username [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]
以下是在 Amazon Redshift 上使用授予角色許可的語法。
GRANT { ROLE role_name } [, ...] TO { { user_name [ WITH ADMIN OPTION ] } | ROLE role_name }[, ...]
以下是在 Amazon Redshift 上對角色授予系統許可的語法。
GRANT { { CREATE USER | DROP USER | ALTER USER | CREATE SCHEMA | DROP SCHEMA | ALTER DEFAULT PRIVILEGES | ACCESS CATALOG | CREATE TABLE | DROP TABLE | ALTER TABLE | CREATE OR REPLACE FUNCTION | CREATE OR REPLACE EXTERNAL FUNCTION | DROP FUNCTION | CREATE OR REPLACE PROCEDURE | DROP PROCEDURE | CREATE OR REPLACE VIEW | DROP VIEW | CREATE MODEL | DROP MODEL | CREATE DATASHARE | ALTER DATASHARE | DROP DATASHARE | CREATE LIBRARY | DROP LIBRARY | CREATE ROLE | DROP ROLE | TRUNCATE TABLE VACUUM | ANALYZE | CANCEL }[, ...] } | { ALL [ PRIVILEGES ] } TO { ROLE role_name } [, ...]
以下是授予許可的語法,以解釋EXPLAIN計劃中查詢的資料列層級安全政策篩選條件。您可以使用 REVOKE陳述式撤銷權限。
GRANT EXPLAIN RLS TO ROLE rolename
以下是授予許可以略過查詢資料列層級安全性政策的語法。
GRANT IGNORE RLS TO ROLE rolename
以下是對指定資料列層級安全性政策授予許可的語法。
GRANT SELECT ON [ TABLE ] table_name [, ...] TO RLS POLICY policy_name [, ...]
參數
- SELECT
-
准許使用SELECT陳述式從資料表或檢視中選取資料。還需要 SELECT許可才能參考 UPDATE或 DELETE操作的現有資料欄值。
- INSERT
-
准許使用INSERT陳述式或COPY陳述式將資料載入資料表。
- UPDATE
-
准許使用UPDATE陳述式更新資料表欄。UPDATE 操作也需要 SELECT 許可,因為它們必須參考資料表資料欄來決定要更新的資料列,或計算資料欄的新值。
- DELETE
-
允許刪除資料表中的資料列。DELETE 操作也需要 SELECT 許可,因為它們必須參考資料表資料欄來決定要刪除的資料列。
- DROP
-
准許捨棄資料表。此許可適用於 Amazon Redshift 和 AWS Glue Data Catalog 已啟用 Lake Formation 的 。
- REFERENCES
-
授予建立外部索引鍵限制條件的許可。您需要在被動參考資料表與主動參考資料表上授予此許可;否則,使用者就無法建立限制條件。
- ALTER
-
根據資料庫物件而定,將下列許可授予使用者或使用者群組:
-
對於資料表, 會ALTER授予許可來變更資料表或檢視。如需詳細資訊,請參閱ALTER TABLE。
-
對於資料庫, 會ALTER授予修改資料庫的許可。如需詳細資訊,請參閱ALTER DATABASE。
-
對於結構描述, ALTER會授予許可來變更結構描述。如需詳細資訊,請參閱ALTER SCHEMA。
-
對於外部資料表, ALTER會授予許可,以變更已啟用 Lake Formation AWS Glue Data Catalog 的 中的資料表。此許可僅適用於使用 Lake Formation 時。
-
- TRUNCATE
-
允許截斷資料表 如果沒有此許可,只有資料表的擁有者或超級使用者可以截斷資料表。如需 TRUNCATE命令的詳細資訊,請參閱 TRUNCATE。
- ALL [ PRIVILEGES ]
-
一次將所有可用的許可授予指定的使用者或角色。PRIVILEGES 關鍵字為選用。
GRANT ALL ON SCHEMA不會授予外部結構描述的CREATE許可。
您可以授予ALL許可給已啟用 Lake Formation AWS Glue Data Catalog 的 中的資料表。在此情況下,個別許可 (例如 ALTER、 SELECT等) 會記錄在 Data Catalog 中。
注意
Amazon Redshift 不支援 RULE和 TRIGGER許可。如需詳細資訊,請前往 不支援的 PostgreSQL 功能。
- ASSUMEROLE
-
准許對具有指定角色的使用者、角色或群組執行 COPY UNLOAD EXTERNAL 、、 FUNCTION和 CREATEMODEL命令。執行指定的命令時,使用者、角色或群組會擔任該角色。若要開始使用ASSUMEROLE許可,請參閱 授予ASSUMEROLE許可的使用備註。
- ON TABLE 【 】 table_name
-
授予資料表或檢視的指定許可。TABLE 關鍵字為選用。您可在一個陳述式中列出多個資料表和檢視。
- ON ALL TABLES IN SCHEMA 結構描述_名稱
-
授予所參考結構描述中所有資料表和檢視的指定許可。
- ( column_name 【,...】 ) ON TABLE table_name
-
將指定的許可授予 Amazon Redshift 資料表或檢視的指定欄PUBLIC上的使用者、群組或 。
- ( column_list ) ON EXTERNAL TABLE schema_name.table_name
-
將指定的許可授予參考結構描述中 Lake Formation 資料表指定資料欄上的IAM角色。
- ON EXTERNAL TABLE schema_name.table_name
-
將指定的許可授予參考結構描述中指定 Lake Formation 資料表上的IAM角色。
- ON EXTERNAL SCHEMA 結構描述名稱
-
將指定的許可授予參考結構描述上的IAM角色。
- ON iam_role
-
將指定的許可授予IAM角色。
- TO username
-
指出接收許可的使用者。
- 至 IAM_ROLE iam_role
-
指示接收許可IAM的角色。
- WITH GRANT OPTION
-
指出接收許可的使用者可以接著將相同的許可授予他人。WITH GRANT OPTION 無法授予 群組或 PUBLIC。
- ROLE role_name
-
將許可授予角色。
- GROUP group_name
-
將許可授予使用者群組。可以使用逗號分隔清單來指定多個使用者群組。
- PUBLIC
-
對所有使用者授予指定的許可,包括之後建立的使用者。PUBLIC 代表一律包含所有使用者的群組。個別使用者的許可包含授予 的許可總和PUBLIC、授予使用者所屬任何群組的許可,以及個別授予使用者的任何許可。
授予 PUBLIC Lake Formation EXTERNALTABLE會導致將許可授予 Lake Formation 每個群組。
- CREATE
-
根據資料庫物件而定,將下列許可授予使用者或使用者群組:
-
對於資料庫, CREATE 允許使用者在資料庫中建立結構描述。
-
對於結構描述, CREATE 允許使用者在結構描述中建立物件。若要重新命名物件,使用者必須具有 CREATE許可,並擁有要重新命名的物件。
-
CREATE Amazon Redshift Spectrum 外部結構描述SCHEMA不支援 ON。若要授予外部結構描述中外部資料表的使用量,SCHEMA請將 USAGE ON 授予需要存取的使用者。只有外部結構描述的擁有者或超級使用者才可在外部結構描述中建立外部資料表。若要轉移外部結構描述的所有權,請使用 ALTER SCHEMA 來變更擁有者。
-
- TEMPORARY | TEMP
-
授予許可以在指定的資料庫中建立臨時資料表。若要執行 Amazon Redshift Spectrum 查詢,資料庫使用者必須具有在資料庫中建立臨時資料表的許可。
注意
根據預設,使用者會獲得許可,透過其在PUBLIC群組中的自動成員資格來建立臨時資料表。若要移除任何使用者建立暫存資料表的許可,請從 PUBLIC群組撤銷TEMP許可。然後將建立暫存資料表的許可明確授予特定使用者或使用者群組。
- ON DATABASE db_name
-
授予資料庫的指定許可。
- USAGE
-
授予特定結構描述的USAGE許可,讓使用者可存取該結構描述中的物件。必須針對本機 Amazon Redshift 結構描述單獨授予這些物件的特定動作 (例如,SELECT或資料表上的UPDATE許可)。根據預設,所有使用者都擁有 結構描述的 PUBLIC CREATE和 USAGE許可。
當您使用 ON SCHEMA語法USAGE授予外部結構描述時,您不需要單獨授予外部結構描述中物件的動作。對應的目錄許可會控制外部結構描述物件的精細許可。
- ON SCHEMA 結構描述名稱
-
授予結構描述的指定許可。
GRANT CREATE Amazon Redshift Spectrum 外部結構描述SCHEMA不支援 ON SCHEMA和 GRANT ALL ON 中的CREATE許可。若要授予外部結構描述中外部資料表的使用量,SCHEMA請將 USAGE ON 授予需要存取的使用者。只有外部結構描述的擁有者或超級使用者才可在外部結構描述中建立外部資料表。若要轉移外部結構描述的所有權,請使用 ALTER SCHEMA 來變更擁有者。
- EXECUTE ON ALL FUNCTIONS IN SCHEMA 結構描述名稱
-
授予所參考結構描述中所有函數的指定許可。
Amazon Redshift 不支援 GRANT或 pg_catalog 命名空間中定義的 pg_proc 內建項目的REVOKE陳述式。
- EXECUTE ON PROCEDURE procedure_name
-
授予特定預存程序的EXECUTE許可。由於預存程序名稱可以過載,因此您必須包含程序的引數清單。如需詳細資訊,請參閱命名預存程序。
- EXECUTE ON ALL PROCEDURES IN SCHEMA 結構描述名稱
-
授予所參考結構描述中所有預存程序的指定許可。
- USAGE ON LANGUAGE language_name
-
授予語言的USAGE許可。
執行 CREATE FUNCTION命令來建立使用者定義函數 (UDFs) 需要 USAGE ON LANGUAGE許可。如需詳細資訊,請參閱UDF 安全性和許可。
需要 USAGE ON LANGUAGE許可才能透過執行 CREATE PROCEDURE命令來建立預存程序。如需詳細資訊,請參閱預存程序的安全和權限 。
對於 Python UDFs,請使用
plpythonu
。對於 SQL UDFs,請使用sql
。若為預存程序,請使用plpgsql
。 - FOR { ALL | COPY | UNLOAD | EXTERNAL FUNCTION | CREATE MODEL } [, ...]
-
指定授予許可的SQL命令。您可以指定 ALL 授予 COPY、FUNCTION、 UNLOAD EXTERNAL 和 CREATEMODEL陳述式的許可。本條款僅適用於授予ASSUMEROLE許可。
- ALTER
ALTER 准許使用者從資料共用新增或移除物件,或設定 屬性 PUBLICACCESSIBLE。如需詳細資訊,請參閱ALTER DATASHARE。
- SHARE
授予使用者和使用者群組將資料取用者新增至資料共用的許可。需要此許可才能讓特定取用者 (帳戶或命名空間) 從其叢集存取資料共用。取用者可以是相同或不同的 AWS 帳戶,具有與全域唯一識別碼 () 指定的相同或不同的叢集命名空間GUID。
-
授予參考資料共用的指定許可。如需有關取用者存取控制精細度的資訊,請參閱 Amazon Redshift 中不同層級的資料共用。
- USAGE
當USAGE授予相同帳戶中的取用者帳戶或命名空間時,帳戶內的特定取用者帳戶或命名空間可以唯讀方式存取資料共用和資料共用的物件。
- 至 NAMESPACE '叢集命名空間 GUID'
表示相同帳戶中的命名空間,取用者可以在其中接收資料共用的指定許可。命名空間使用 128 位元英數字元 GUID。
- 結束 ACCOUNT 'accountnumber' 【 VIA DATA CATALOG 】
表示另一個帳戶的編號,其中的取用者可以接收資料共用的指定許可。指定DATA「VIACATALOG」表示您正在將資料共用的使用權限授予 Lake Formation 帳戶。省略此參數表示您將使用權授予擁有叢集的帳戶。
-
在指定資料共用中建立的指定資料庫上授予指定使用許可。
-
在指定資料共用中建立的指定結構描述上授予指定許可。
- FOR { SCHEMAS | TABLES | FUNCTIONS | PROCEDURES | LANGUAGES } IN
-
指定要被授予權限的資料庫物件。IN 後面的參數定義授予權限的範圍。
- CREATE MODEL
將CREATEMODEL許可授予特定使用者或使用者群組。
- ON MODEL model_name
授予特定模型的EXECUTE許可。
- ACCESS CATALOG
-
授予檢視角色可存取之物件之相關中繼資料的權限。
- { role } [, ...]
要授予另一個角色、使用者或 的角色PUBLIC。
PUBLIC 代表一律包含所有使用者的群組。個別使用者的許可包含授予 的許可總和PUBLIC、授予使用者所屬任何群組的許可,以及個別授予使用者的任何許可。
- 至 { user_name WITH ADMIN OPTION 【 】 } | 角色 }【, ...】
使用 WITH ADMIN OPTION、另一個角色或 將指定的角色授予指定的使用者PUBLIC。
WITH ADMIN OPTION 子句提供所有授予角色的管理選項給所有授予者。
- EXPLAIN RLS TO ROLE角色名稱
准許向角色解釋EXPLAIN計劃中查詢的資料列層級安全政策篩選條件。
- IGNORE RLS 結束ROLE角色名稱
授予許可,以略過對角色查詢資料列層級安全性政策。
使用須知
若要進一步了解 的用量備註GRANT,請參閱 使用須知。
範例
如需如何使用 的範例GRANT,請參閱 範例。