Amazon Redshift 將不再支援在 2026 年 6 月 30 日之後使用 Python UDFs。我們將開始分階段強制執行。如需 Python 生命週期結束和遷移選項的詳細資訊,請參閱 2025 年 6 月 30 日發佈的部落格文章
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
管理 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";
您可以授予 DEBUG 許可,允許選取的實體查看資料庫未編輯的安全記錄,該資料庫在具有聯合許可的 Amazon Redshift 倉儲中使用精細存取控制。您可以將 DEBUG 授予全域身分、IdC 群組或消費者帳戶的管理員。如需詳細資訊,請參閱授予 DEBUG 許可的用量備註。
GRANT DEBUG ON DATABASE "sales_db@finance-catalog" TO "IAM:sales_auditor"; GRANT DEBUG ON DATABASE "sales_db@finance-catalog" TO "IAMR:audit_role"; GRANT DEBUG ON DATABASE "sales_db@finance-catalog" TO ROLE "myidc:audit_team"; GRANT DEBUG ON DATABASE "sales_db@finance-catalog" TO ADMINS OF ACCOUNT '123456789012'; REVOKE DEBUG ON DATABASE "sales_db@finance-catalog" FROM "IAM:sales_auditor";
如需授予支援的 Amazon Redshift 聯合許可語法的詳細資訊,請參閱 您可以在 Amazon Redshift 聯合許可目錄中授予的許可。
精細定義存取控制
您可以在具有 Amazon Redshift 聯合許可的資料庫中,使用資料欄層級存取控制、資料列層級安全性 (RLS) 和動態資料遮罩 (DDM) 來定義對敏感資料的精細存取控制。資料欄層級存取控制允許在資料表和檢視上定義更精細的資料欄層級存取權限。資料庫上具有 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 }
安全記錄 DEBUG 許可
DEBUG 許可會控制資料庫上未修訂安全記錄的可見性,該資料庫在具有聯合許可的 Amazon Redshift 倉儲中使用精細存取控制。您可以將其授予全域身分 (由提供者字首名稱指定的 IAM 使用者、IAM 角色或 IdC 使用者)、IdC 群組 (以 ROLE 指定) 或取用者帳戶的管理員。對於帳戶承授者,您只能指定擁有生產者的相同帳戶。如需用量備註和限制,請參閱 授予 DEBUG 許可的用量備註。
GRANT DEBUG ON DATABASEdatabase@catalogTO {prefix:name| ROLEidc_prefix:group_name| ADMINS OF ACCOUNT 'account_id' } REVOKE DEBUG ON DATABASEdatabase@catalogFROM {prefix:name| ROLEidc_prefix:group_name| ADMINS OF ACCOUNT 'account_id' }
範圍許可
GRANT { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] } FOR SCHEMAS IN DATABASEdatabase@catalogTO {username[ WITH GRANT OPTION ] | ROLErole_name} [, ...] GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [ PRIVILEGES ] } } FOR TABLES IN { SCHEMAschema_name[DATABASEdatabase@catalog] | DATABASEdatabase@catalog} TO {username[ WITH GRANT OPTION ] | ROLErole_name} [, ...] REVOKE [ GRANT OPTION ] { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] } FOR SCHEMAS IN DATABASEdatabase@catalogFROM {username| ROLErole_name} [, ...] REVOKE [ GRANT OPTION ] { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [ PRIVILEGES ] } } FOR TABLES IN { SCHEMAschema_name[ DATABASEdatabase@catalog] | DATABASEdatabase@catalog} FROM {username| ROLErole_name} [, ...]