

 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="writes-consumer-existing"></a>

Amazon Redshift では、既存のデータ共有を管理して、Amazon Redshift クラスター内のデータへのアクセスを制御できます。以降のセクションでは、Amazon Redshift 環境でのデータ共有の管理について詳しく案内します。

**Topics**
+ [Amazon Redshift でデータ共有に対するアクセス許可を管理する](writes-managing-permissions.md)
+ [Amazon Redshift で別の AWS アカウントのデータコンシューマーからのデータ共有の関連付けを解除する](writes-disassociating-datashare.md)
+ [Amazon Redshift で別の AWS アカウントからのデータ共有を拒否する](writes-declining-datashare.md)

# Amazon Redshift でデータ共有に対するアクセス許可を管理する
<a name="writes-managing-permissions"></a>

プロデューサー管理者には、共有しているデータセットの管理権限があります。新しいオブジェクトをデータ共有に追加したり、データ共有から削除したりできます。複数のコンシューマークラスター、AWSアカウント、または AWS リージョンに対して、データ共有へのアクセス権をまとめて付与または取り消すこともできます。許可が失効すると、コンシューマークラスターは直ちに共有オブジェクトへのアクセス権を失い、それらのオブジェクトは、SVV\$1DATASHARES の INBUND データ共有の一覧に表示されなくなります。

次の例では、データ共有 `salesshare` を作成し、スキーマ `public` を追加して、テーブル `public.tickit_sales_redshift` を `salesshare` に追加します。指定したクラスター名前空間に対して、`salesshare` の使用許可も付与されます。

```
CREATE DATASHARE salesshare;
            
ALTER DATASHARE salesshare ADD SCHEMA public;

ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift; 

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

CREATE DATASHARE の場合、スーパーユーザーとデータベース所有者はデータ共有を作成できます。詳細については、「[CREATE DATASHARE](r_CREATE_DATASHARE.md)」を参照してください。ALTER DATASHARE の場合、追加または削除するデータ共有オブジェクトに対して必要な許可を持つデータ共有の所有者は、データ共有を変更できます。詳細については、[ALTER DATASHARE](r_ALTER_DATASHARE.md)を参照してください。

プロデューサー管理者として、データ共有を削除すると、コンシューマークラスターに一覧表示されなくなります。削除されたデータ共有からコンシューマークラスター上に作成されたデータベースとスキーマリファレンスは、オブジェクトなしで引き続き存在します。コンシューマー管理者は、これらのデータベースを手動で削除する必要があります。

コンシューマー側では、コンシューマー管理者が、データ共有からデータベースを作成することで、共有データにアクセスする必要があるユーザーとロールを決定できます。データベースの作成時に選択したオプションに応じて、データベースへのアクセスを次のように制御できます。データ共有からデータセットを作成する方法の詳細については、「[CREATE DATABASE](r_CREATE_DATABASE.md)」を参照してください。

データ共有の設定とコンシューマーからのデータの読み取りの詳細については、「[AWS アカウント内のデータへの読み取りアクセスの共有](https://docs.aws.amazon.com/redshift/latest/dg/within-account.html)」を参照してください。

**WITH PERMISSIONS 句を使用せずにデータベースを作成する**  
管理者は、データベースレベルまたはスキーマレベルでアクセスを制御できます。スキーマレベルでアクセスを制御するには、管理者はデータ共有から作成された Amazon Redshift データベースから外部スキーマを作成する必要があります。

以下の例では、データベースレベルおよびスキーマレベルで、共有されたテーブルにアクセスする許可を付与します。

```
GRANT USAGE ON DATABASE sales_db TO Bob;

CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE sales_db SCHEMA 'public';

GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;
```

アクセスをさらに制限するために、共有オブジェクトの上にビューを作成し、必要なデータのみを公開することができます。その後、これらのビューを使用して、ユーザーとロールへのアクセスを許可できます。

ユーザーがデータベースまたはスキーマへのアクセスを許可されると、そのデータベースまたはスキーマ内のすべての共有オブジェクトにアクセスできるようになります。

**WITH PERMISSIONS 句を使用してデータベースを作成する**  
データベースまたはスキーマの使用権限を付与すると、管理者は、ローカルのデータベースまたはスキーマでアクセス許可を付与するのと同じアクセス許可付与プロセスを使用してアクセス制御を追加できます。個別のオブジェクトのアクセス許可がないと、ユーザーは、USAGE アクセス許可を付与された後でも、データ共有データベースまたはスキーマ内のオブジェクトにアクセスできません。

以下の例では、データベースレベルで、共有されたテーブルにアクセスする許可を付与します。

```
GRANT USAGE ON DATABASE sales_db TO Bob;
GRANT USAGE FOR SCHEMAS IN DATABASE sales_db TO Bob;
GRANT SELECT ON sales_db.public.tickit_sales_redshift TO Bob;
```

データベースまたはスキーマへのアクセス許可が付与された後でも、アクセスを認めるデータベースまたはスキーマ内のすべてのオブジェクトについての関連アクセス許可をユーザーに付与する必要があります。

## WITH PERMISSIONS を使用した詳細な共有設定
<a name="share-datashare-writes"></a>

WITH PERMISSIONS を使用してきめ細かく共有を設定すると、クラスターまたは Serverless ワークグループがデータ共有に対してクエリを実行できるようになります。このプロセスでは、データ共有がアカウント内の別のクラスターまたは Amazon Redshift Serverless 名前空間から共有されているか、別のアカウントから共有され、使用している名前空間に関連付けられていることを前提としています。

1. コンシューマーデータベースの管理者は、データ共有からデータベースを作成できます。

   ```
   CREATE DATABASE my_ds_db [WITH PERMISSIONS] FROM DATASHARE my_datashare OF NAMESPACE 'abc123def';
   ```

   WITH PERMISSIONS を使用してデータベースを作成する場合は、データ共有オブジェクトに対するきめ細かなアクセス許可をさまざまなユーザーやロールに付与できます。これを行わないと、データ共有データベースの USAGE アクセス許可を付与されたすべてのユーザーとロールに、データ共有データベース内のすべてのオブジェクトに対するすべてのアクセス許可が付与されます。

1. 以下では、Redshift データベースユーザーまたはロールにアクセス許可を付与する方法を示しています。これらのステートメントにローカルデータベースを接続できません。GRANT ステートメントの実行前にデータ共有データベースで USE コマンドを実行すると、これらのステートメントは実行できません。

   ```
   GRANT USAGE ON DATABASE my_ds_db TO ROLE data_eng;
   GRANT CREATE, USAGE ON SCHEMA my_ds_db.my_shared_schema TO ROLE data_eng;
   GRANT ALL ON ALL TABLES IN SCHEMA my_ds_db.my_shared_schema TO ROLE data_eng;
    
   GRANT USAGE ON DATABASE my_ds_db TO bi_user;
   GRANT USAGE ON SCHEMA my_ds_db.my_shared_schema TO bi_user;
   GRANT SELECT ON my_ds_db.my_shared_schema.table1 TO bi_user;
   ```

# Amazon Redshift で別の AWS アカウントのデータコンシューマーからのデータ共有の関連付けを解除する
<a name="writes-disassociating-datashare"></a>

Amazon Redshift では、他の AWS アカウントによって共有されているデータ共有との関連付けを解除できます。データ共有とは、1 つ以上の Redshift データベースからのデータをカプセル化する、共有可能なデータベースオブジェクトです。以下のセクションでは、Redshift 環境内でデータ共有の関連付けを解除するプロセスを説明します。

------
#### [ Console ]

コンシューマー管理者は、コンソールでデータコンシューマーとデータ共有の関連付けを解除できます。

1. AWS マネジメントコンソール にサインインして、[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/) で Amazon Redshift コンソールを開きます。

1. ナビゲーションメニューで **[Datashares]** (データ共有) を選択します。データ共有リストページが表示されます。

1. [**From other accounts (その他のアカウント)**] を選択します。

1. [**Datashares from other accounts (他のアカウントからのデータ共有)**] セクションでデータ共有を選択して、データコンシューマーから関連付けを削除します。

1. [**Data consumers (データコンシューマー)**] セクションで、関連付けを削除する 1 つ以上のデータコンシューマーを選択します。次に、[**Remove association (関連付けの削除)**] を選択します。

1. [Remove association (関連付けの削除)] ページが表示されたら、[**Remove association (関連付けの削除)**] を選択します。

関連付けが削除されると、データコンシューマーはデータ共有にアクセスできなくなります。データコンシューマーの関連付けはいつでも変更できます。

------
#### [ SQL ]

**注記**  
このセクションの手順は、プロデューサー管理者が共有データベースオブジェクトに対して特定のアクションを許可した後、およびデータ共有が別のアカウントと共有されている場合は、プロデューサーのセキュリティ管理者がアクセスを承認した後で実行されます。

コンシューマーのセキュリティ管理者は、次のコマンドを使用してデータ共有の関連付けを解除できます。

```
disassociate-data-share-consumer
--data-share-arn <value>
```

コマンドの詳細については、「[disassociate-data-share-consumer](https://docs.aws.amazon.com/cli/latest/reference/redshift/disassociate-data-share-consumer.html)」を参照してください。

------

# Amazon Redshift で別の AWS アカウントからのデータ共有を拒否する
<a name="writes-declining-datashare"></a>

Amazon Redshift では、他の AWS アカウントと共有されているデータ共有を拒否することができ、組織の垣根を越えてシームレスかつ安全にデータを共有できます。データ共有は、1 つ以上の Amazon Redshift データベースからのデータをカプセル化する共有可能なデータベースオブジェクトです。

コンシューマー管理者は、状態が使用可能またはアクティブであるデータ共有を拒否できます。データ共有を拒否した場合、コンシューマークラスターのユーザーはデータ共有へのアクセス権を失います。`DescribeDataSharesForConsumer` API 操作を呼び出しても、Amazon Redshift は拒否されたデータ共有を返しません。プロデューサーの管理者が `DescribeDataSharesForProducer` API オペレーションを実行すると、データ共有が拒否されたことがわかります。データ共有が拒否された場合、プロデューサー管理者はコンシューマークラスターに対してデータ共有を再び承認でき、コンシューマー管理者は AWS アカウントをデータ共有に関連付けるか拒否するかを選択できます。

AWS アカウントにデータ共有との関連付けがあり、Lake Formation が管理するデータ共有との関連付けが保留中の場合、Lake Formation が管理するデータ共有の関連付けを拒否すると、元のデータ共有も拒否されます。特定の関連付けを拒否するには、プロデューサー管理者は、指定したデータ共有の承認を解除できます。このアクションは他のデータ共有には影響しません。

データ共有を拒否するには、AWS コンソール、API 操作 `RejectDataShare`、または AWS CLI で `reject-datashare` を使用します。

------
#### [ Console ]

AWS コンソールを使用してデータ共有を拒否するには、次の手順を実行します。

1. AWS マネジメントコンソール にサインインして、[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/) で Amazon Redshift コンソールを開きます。

1. ナビゲーションメニューで **[データ共有]** を選択します。

1. [**From other accounts (その他のアカウント)**] を選択します。

1. [**Datashares from other accounts (他のアカウントからのデータ共有)**] セクションで、拒否するデータ共有を選択します。**[Decline datashare]** (データ共有の拒否) ページが表示されたら、**[Decline]** (拒否) をクリックします。

データ共有を拒否した後は、変更を元に戻すことはできません。Amazon Redshift は、リストからデータ共有を削除します。データ共有を再び表示するには、プロデューサー管理者がデータ共有を再び承認する必要があります。

------
#### [ CLI ]

データ共有を拒否するには、管理者は次のコマンドを使用します。

```
reject-data-share
--data-share-arn <value>
```

コマンドの詳細については、「[reject-data-share](https://docs.aws.amazon.com/cli/latest/reference/redshift/reject-data-share.html)」を参照してください。

------