

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の 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 フェデレーティッドアクセス許可を使用すると、ユーザーは AWS アカウント の任意の Redshift ウェアハウスから大まかなアクセスコントロールときめ細かなアクセスコントロールの両方を定義できます。大まかなアクセス許可は、範囲付きアクセス許可を含むテーブル、ビュー、データベースオブジェクトへのアクセスを管理します。一方、きめ細かなコントロールは、列レベルの権限と、行レベルセキュリティ (RLS) や動的データマスキング (DDM) などのセキュリティポリシーの適用が可能になります。

## GRANT、REVOKE
<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 フェデレーティッドアクセス許可でサポートされている grant 構文の詳細については、「[Amazon Redshift フェデレーティッドアクセス許可カタログで付与できるアクセス許可](#federated-permissions-managing-access-grant-allowed)」を参照してください。

## きめ細かなアクセスコントロール
<a name="federated-permissions-managing-access-fgac"></a>

Amazon Redshift フェデレーションアクセス許可を持つデータベースで、列レベルのアクセスコントロール、行レベルセキュリティ (RLS)、動的データマスキング (DDM) を使用して、機密データに対するきめ細かなアクセスコントロールを定義できます。列レベルのアクセスコントロールを使用すると、テーブルとビューに対してよりきめ細かな列レベルのアクセス権限を定義できます。データベースの `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` 権限を持つユーザーは、[SHOW POLICIES](r_SHOW_POLICIES.md) コマンドを使用して、RLS ポリシーと DDM ポリシー、およびフェデレーティッドアクセス許可を持つリレーションの添付ファイルを表示できます。

**注記**  
RLS のユーザー定義関数 (UDF)、DDM ポリシー定義は、Amazon Redshift フェデレーティッドアクセス許可ではサポートされていません。
Redshift SQL 関数 user\$1is\$1member\$1of、role\$1is\$1member\$1of、user\$1is\$1member\$1of\$1role は、Amazon Redshift フェデレーティッドアクセス許可ではサポートされていません。

### Amazon Redshift フェデレーティッドアクセス許可カタログで付与できるアクセス許可
<a name="federated-permissions-managing-access-grant-allowed"></a>

さまざまな詳細レベルのリソースに対する Amazon Redshift フェデレーションアクセス許可を持つデータベースに対するアクセス許可管理をサポートする SQL ステートメント。この構文は、ローカルテーブル参照 (リソースを含むデータベースに接続されている場合、またはソースデータベースが使用中の場合) と完全修飾クロスデータベース参照の両方をサポートします。

**注記**:
+ *username* は、IAM ユーザー、IAM ロール、IdC (AWS IAM アイデンティティセンター) ユーザーを参照できます。
+ *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 } [, ...]
```