範例 - Amazon Redshift

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

範例

以下範例會將 SALES 資料表的 SELECT 權限授予使用者 fred

grant select on table sales to fred;

以下範例會將 QA_TICKIT 結構描述中所有資料表的 SELECT 權限授予使用者 fred

grant select on all tables in schema qa_tickit to fred;

以下範例會將 QA_TICKIT 結構描述中的所有結構描述權限授予使用者群組 QA_USERS。結構描述權限為 CREATE 和 USAGE。USAGE 會授予使用者存取結構描述中物件的權限,但不會授予物件的 INSERT 或 SELECT 這類權限。分別授與每個物件的權限。

create group qa_users; grant all on schema qa_tickit to group qa_users;

以下範例會將 QA_TICKIT 結構描述中 SALES 資料表的所有權限授予群組 QA_USERS 中的所有使用者。

grant all on table qa_tickit.sales to group qa_users;

以下範例會將 QA_TICKIT 結構描述中 SALES 資料表的 DROP 權限授予組 QA_USERS 中的所有用户。

grant drop on table qa_tickit.sales to group qa_users;

以下一系列命令說明,結構描述的存取權不會授予結構描述中資料表的權限。

create user schema_user in group qa_users password 'Abcd1234'; create schema qa_tickit; create table qa_tickit.test (col1 int); grant all on schema qa_tickit to schema_user; set session authorization schema_user; select current_user; current_user -------------- schema_user (1 row) select count(*) from qa_tickit.test; ERROR: permission denied for relation test [SQL State=42501] set session authorization dw_user; grant select on table qa_tickit.test to schema_user; set session authorization schema_user; select count(*) from qa_tickit.test; count ------- 0 (1 row)

以下一系列命令說明,檢視的存取權不代表能夠存取其基礎資料表。雖然名為 VIEW_USER 的使用者具有 VIEW_DATE 的所有權限,但這位使用者仍無法從 DATE 資料表選取。

create user view_user password 'Abcd1234'; create view view_date as select * from date; grant all on view_date to view_user; set session authorization view_user; select current_user; current_user -------------- view_user (1 row) select count(*) from view_date; count ------- 365 (1 row) select count(*) from date; ERROR: permission denied for relation date

下列範例會將 cust_profile 資料表中 cust_namecust_phone 資料欄的 SELECT 權限授予使用者 user1

grant select(cust_name, cust_phone) on cust_profile to user1;

下列範例會將 cust_namecust_phone 資料欄的 SELECT 權限,以及 cust_profile 資料表中 cust_contact_preference 資料欄的 UPDATE 權限授予 sales_group 群組。

grant select(cust_name, cust_phone), update(cust_contact_preference) on cust_profile to group sales_group;

下列範例顯示 ALL 關鍵字的使用方式,以將資料表 cust_profile 中三個資料欄的 SELECT 和 UPDATE 權限授予 sales_admin 群組。

grant ALL(cust_name, cust_phone,cust_contact_preference) on cust_profile to group sales_admin;

以下範例會將 cust_profile_vw 檢視中 cust_name 資料欄的 SELECT 權限授予 user2 使用者。

grant select(cust_name) on cust_profile_vw to user2;

授予數據碼 USE 權限的示例

以下示例顯示了對特定數據庫或從數據保護創建的模式的 GRANT 數據共享使用權限。此 USAGE 權限不授予非從指定數據保護創建的數據庫的使用權限。您只能對使用者和使用者羣組執行資料保護的 ALTER 或 REVOKE 許可。

下列範例會授予 USAGE 權限salesshare資料保存到指定的命名空間。

GRANT USAGE ON DATASHARE salesshare TO NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';

下列範例會授予 USAGE 權限sales_db給鮑勃

GRANT USAGE ON DATABASE sales_db TO Bob;

以下示例授予使用權限sales_schema添加到Analyst_group

GRANT USAGE ON SCHEMA sales_schema TO GROUP Analyst_group;

授予服務器權限的示例

以下是授予 ASSUMEROLE 權限的示例。

以下示例顯示了超級用户在羣集上運行一次的 REVOKE 語句,以便為用户和組啟用 ASUMEROLE 權限。然後,超級用户將 ASMEROLE 權限授予用户和組以執行相應命令。有關為用户和組啟用 ASMEROLE 權限的信息,請參閲授予 ASSUMEROLE 權限的使用説明

revoke assumerole on all from public for all;

下列範例會將 ASMEROLE 權限授予用户reg_user1IAM 角色Redshift-S3-Read以執行複製操作。

grant assumerole on 'arn:aws:iam::123456789012:role/Redshift-S3-Read' to reg_user1 for copy;

下列範例會將 ASMEROLE 權限授予用户reg_user1用於 IAM 角色鏈RoleARoleB以執行卸載操作。

grant assumerole on 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB' to reg_user1 for unload;

下列範例介紹使用 IAM 角色鏈的 UNLOAD 命令RoleARoleB

unload ('select * from venue limit 10') to 's3://companyb/redshift/venue_pipe_' iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';

下列範例會將 ASMEROLE 權限授予使用者reg_user1IAM 角色Redshift-Exfunc創建外部函數。

grant assumerole on 'arn:aws:iam::123456789012:role/Redshift-Exfunc' to reg_user1 for external function;

下列範例會將 ASMEROLE 權限授予使用者reg_user1IAM 角色Redshift-model以建立機器學習模型。

grant assumerole on 'arn:aws:iam::123456789012:role/Redshift-ML' to reg_user1 for create model;

授予角色權限的示例

以下示例將示例角色 1 授予用户 1。

CREATE ROLE sample_role1; GRANT ROLE sample_role1 TO user1;

以下示例將示例角色 1 授予具有管理員選項的用户 1,為用户 1 設置當前會話,並且用户 1 將示例角色 1 授予用户 2。

GRANT ROLE sample_role1 TO user1 WITH ADMIN OPTION; SET SESSION AUTHORIZATION user1; GRANT ROLE sample_role1 TO user2;

以下示例將示例角色 1 授予示例角色 2。

GRANT ROLE sample_role1 TO ROLE sample_role2;

以下示例將示例角色 2 授予示例角色 3 和示例角色 4。然後,它會嘗試將示例角色 3 授予示例角色 1。

GRANT ROLE sample_role2 TO ROLE sample_role3; GRANT ROLE sample_role3 TO ROLE sample_role2; ERROR: cannot grant this role, a circular dependency was detected between these roles

以下示例將創建用户系統權限授予示例角色 1。

GRANT CREATE USER TO ROLE sample_role1;

下列範例會授予系統定義的角色sys:dba添加至使用者 1。

GRANT ROLE sys:dba TO user1;

以下示例嘗試將循環依賴關係中的 Sample_ro3 授予 Sample_ro2。

CREATE ROLE sample_role3; GRANT ROLE sample_role2 TO ROLE sample_role3; GRANT ROLE sample_role3 TO ROLE sample_role2; -- fail ERROR: cannot grant this role, a circular dependency was detected between these roles