管理 Amazon Redshift 聯合許可目錄中的存取控制 - Amazon Redshift

Amazon Redshift 自 2025 年 11 月 1 日起不再支援建立新的 Python UDF。如果您想要使用 Python UDF,請在該日期之前建立 UDF。現有 Python UDF 將繼續正常運作。如需詳細資訊,請參閱部落格文章

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

管理 Amazon Redshift 聯合許可目錄中的存取控制

使用 Amazon Redshift 聯合許可,使用者可以定義來自 中任何 Redshift 倉儲的粗略和精細存取控制AWS 帳戶。粗略精細的許可可管理對資料表、檢視和資料庫物件的存取,包括範圍許可,而精細精細的控制項則允許資料欄層級權限和安全政策的應用程式,例如資料列層級安全性 (RLS) 和動態資料遮罩 (DDM)。

授予/撤銷

使用聯合許可,您可以定義資料表層級存取的許可,例如從任何 Redshift 倉儲讀取、在 Redshift 聯合許可資料庫中的資料表和檢視中寫入資料。

GRANT SELECT ON "sales_db@finance-catalog".sales_schema.sales_table TO "IAMR:sales_analyst"; GRANT INSERT ON "sales_db@finance-catalog".sales_schema.sales_view TO "IAMR:sales_data_engineer"; REVOKE UPDATE ON "sales_db@finance-catalog".sales_schema.us_sales_view FROM "IAMR:us_sales_analyst"; REVOKE DELETE ON "sales_db@finance-catalog".sales_schema.us_sales_view FROM "IAMR:us_sales_analyst";

Amazon Redshift 聯合許可支援範圍許可,可讓您授予或撤銷資料庫或結構描述內類型之所有物件的許可。

GRANT SELECT FOR TABLES IN SCHEMA "sales_db@finance-catalog".sales_schema TO "IAMR:sales_manager"; REVOKE UPDATE FOR TABLES IN SCHEMA sales_schmea DATABASE "sales_db@finance-catalog" FROM "IAMR:sales_analyst";

您可以在資料庫上定義授予/撤銷存取許可。

GRANT CREATE ON DATABASE "sales_db@finance-catalog" TO "IAMR:sales_admin"; REVOKE TEMP ON DATABASE "sales_db@finance-catalog" FROM "IAMR:sales_analyst";

如需授予支援的 Amazon Redshift 聯合許可語法的詳細資訊,請參閱 您可以在 Amazon Redshift 聯合許可目錄中授予的許可

精細定義存取控制

您可以使用資料欄層級存取控制、資料列層級安全性 (RLS) 和動態資料遮罩 (DDM),在具有 Amazon Redshift 聯合許可的資料庫中定義對敏感資料的精細存取控制。資料欄層級存取控制允許在資料表和檢視上定義更精細的資料欄層級存取權限。在資料庫中具有 sys:secadmin角色的超級使用者和使用者或角色可以建立 RLS 和 DDM 政策,將這些政策連接到特定關係,並在關係上啟用 RLS。

資料欄層級存取控制:

您可以對資料表或檢視的個別資料欄授予或撤銷特定權限。

GRANT SELECT ON "sales_db@finance-catalog".sales_schema.sales_table(order_number, sales_date, purchase_amount, sale_amount) TO "IAMR:sales_revenue_analyst"; REVOKE UPDATE ON "sales_db@finance-catalog".sales_schema.us_sales_view(order_number, sales_date, purchase_amount, sale_amount) FROM "IAMR:sales_revenue_analyst";

資料列層級安全性 (RLS):

您可以開啟或關閉關係的資料列層級安全性。

ALTER TABLE "sales_db@finance-catalog".sales_schema.sales_table ROW LEVEL SECURITY ON;

您可以在資料庫上建立、修改、捨棄 RLS 政策。

-- Create an RLS policy CREATE RLS POLICY "sales_db@finance-catalog".policy_america WITH (region VARCHAR(10)) USING (region = 'USA'); -- Alter an RLS policy ALTER RLS POLICY "sales_db@finance-catalog".policy_america USING (region IN ('USA', 'CANADA', 'Mexico')); -- Drop an RLS policy DROP RLS POLICY "sales_db@finance-catalog".policy_america;

您可以在關係上連接或分離 RLS 政策。

-- Attach an RLS policy ATTACH RLS POLICY "sales_db@finance-catalog".policy_america ON "sales_db@finance-catalog".sales_schema.sales_table TO "IAMR:america_sales_analyst"; -- Detach an RLS policy DETACH RLS POLICY "sales_db@finance-catalog".policy_america ON "sales_db@finance-catalog".sales_schema.sales_view_america FROM "IAMR:global_sales_analyst";

動態資料遮罩 (DDM):

您可以在資料庫上建立、更改、捨棄遮罩政策。

-- Create a masking policy CREATE MASKING POLICY "sales_db@finance-catalog".hash_credit WITH (credit_card varchar(256)) USING (sha2(credit_card + 'testSalt', 256)); -- Alter an masking policy ALTER MASKING POLICY "sales_db@finance-catalog".hash_credit USING (sha2(credit_card + 'otherTestSalt', 256)); -- Drop an masking policy DROP MASKING POLICY "sales_db@finance-catalog".hash_credit;

您可以在關係上連接或分離遮罩政策。

-- Attach a masking policy ATTACH MASKING POLICY hash_credit ON "sales_db@finance-catalog".sales_schema.transaction_table (credit_card) TO "IAMR:sales_analyst" PRIORITY 30; -- Detach a masking policy DETACH MASKING POLICY hash_credit ON "sales_db@finance-catalog".sales_schema.transaction_view (credit_card) FROM "IAMR:transaction_analyst";

超級使用者或具有 sys:secadmin權限的使用者可以使用 顯示政策命令,在具有聯合許可的關係上檢視 RLS 和 DDM 政策及其附件。

注意
  • Amazon Redshift 聯合許可不支援 RLS 中的使用者定義函數 (UDF)、DDM 政策定義。

  • Amazon Redshift 聯合許可不支援 user_is_member_of、 role_is_member_of、user_is_member_of_role 等 Redshift SQL 函數。

您可以在 Amazon Redshift 聯合許可目錄中授予的許可

SQL 陳述式支援對具有不同精細程度資源的 Amazon Redshift 聯合許可的資料庫進行許可管理。語法支援本機資料表參考 (連線至包含 資源的資料庫時,或來源資料庫處於使用中時) 和完全合格的跨資料庫參考。

注意

  • username 可以參考 IAM 使用者、IAM 角色或 IdC (AWS IAM Identity Center) 使用者。

  • role_name 可以參考 IdC 群組。不支援 IAM 群組。

粗略分割許可

GRANT { SELECT | INSERT | UPDATE | DELETE | TRUNCATE} ON [ TABLE ] { table_name | database@catalog.schema_name.table_name } TO { username | ROLE role_name | PUBLIC } REVOKE { SELECT | INSERT | UPDATE | DELETE | TRUNCATE } ON [ TABLE ] { table_name | database@catalog.schema_name.table_name } FROM { username | ROLE role_name | PUBLIC }

資料欄層級權限

GRANT { { SELECT | UPDATE | DELETE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { table_name | database@catalog.schema_name.table_name } TO { username | ROLE role_name | PUBLIC } REVOKE { { SELECT | UPDATE | DELETE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { table_name | database@catalog.schema_name.table_name } FROM { username | ROLE role_name | PUBLIC }

範圍許可

GRANT { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] } FOR SCHEMAS IN DATABASE database@catalog 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 database@catalog ] | DATABASE database@catalog } TO { username [ WITH GRANT OPTION ] | ROLE role_name } [, ...] REVOKE [ GRANT OPTION ] { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] } FOR SCHEMAS IN DATABASE database@catalog FROM { username | ROLE role_name } [, ...] REVOKE [ GRANT OPTION ] { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [ PRIVILEGES ] } } FOR TABLES IN { SCHEMA schema_name [ DATABASE database@catalog ] | DATABASE database@catalog } FROM { username | ROLE role_name } [, ...]