

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# 管理 Amazon Redshift 聯合許可目錄上的存取控制
<a name="federated-permissions-managing-access"></a>

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

## 授予/撤銷
<a name="federated-permissions-managing-access-grant-revoke"></a>

使用聯合許可，您可以定義資料表層級存取的許可，例如從任何 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 聯合許可目錄中授予的許可](#federated-permissions-managing-access-grant-allowed)。

## 精細定義存取控制
<a name="federated-permissions-managing-access-fgac"></a>

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

### 資料欄層級存取控制：
<a name="federated-permissions-managing-access-column"></a>

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

```
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)：
<a name="federated-permissions-managing-access-row"></a>

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

```
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)：
<a name="federated-permissions-managing-access-ddm"></a>

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

```
-- 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`權限的使用者可以使用 [顯示政策](r_SHOW_POLICIES.md)命令，在具有聯合許可的關係上檢視 RLS 和 DDM 政策及其附件。

**注意**  
Amazon Redshift 聯合許可不支援 RLS 中的使用者定義函數 (UDF)、DDM 政策定義。
Amazon Redshift 聯合許可不支援 user\$1is\$1member\$1of、 role\$1is\$1member\$1of、user\$1is\$1member\$1of\$1role 等 Redshift SQL 函數。

### 您可以在 Amazon Redshift 聯合許可目錄中授予的許可
<a name="federated-permissions-managing-access-grant-allowed"></a>

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

**注意**
+ *username* 可以參考 IAM 使用者、IAM 角色或 IdC (AWS IAM Identity Center) 使用者。
+ *role\$1name* 可以參考 IdC 群組。不支援 IAM 群組。

#### 粗略分割許可
<a name="federated-permissions-managing-access-grant-allowed-coarse"></a>

```
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 }
```

#### 資料欄層級權限
<a name="federated-permissions-managing-access-grant-allowed-column"></a>

```
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 }
```

### 範圍許可
<a name="federated-permissions-managing-access-scoped"></a>

```
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 } [, ...]
```