Amazon Redshift データウェアハウスの認可を設定する
統合ソースから Amazon Redshift データウェアハウスにデータをレプリケートするには、まず次の 2 つのエンティティを追加する必要があります。
-
認可されたプリンシパル — データウェアハウスにゼロ ETL 統合を作成できるユーザーまたはロールを特定します。
-
承認された統合ソース – データウェアハウスを更新できるソースクラスターを識別します。
承認されたプリンシパルと承認された統合ソースは、Amazon Redshift コンソールの [リソースポリシー] タブから、または Amazon Redshift PutResourcePolicy
API オペレーションを使用して設定できます。
承認されたプリンシパルを追加
Redshift Serverless ワークグループまたはプロビジョニングされたクラスターへのゼロ ETL 統合を作成するには、関連する名前空間またはプロビジョニングされたクラスターへのアクセスを許可します。
次の両方の条件に該当する場合は、このステップをスキップできます。
-
Redshift Serverless ワークグループまたはプロビジョンされたクラスターを所有する AWS アカウント は、ソースデータベースも所有しています。
-
そのプリンシパルは、この Redshift Serverless 名前空間またはプロビジョニングされたクラスターにゼロ ETL 統合を作成するアクセス許可を持つ ID ベースの IAM ポリシーに関連付けられています。
Amazon Redshift Serverless 名前空間に許可されたプリンシパルを追加する
-
Amazon Redshift コンソールの左側のナビゲーションペインで、[Redshift Serverless] を選択します。
-
[名前空間の設定] を選択してから名前空間を選択して、[リソースポリシー] タブに移動します。
-
[承認されたプリンシパルを追加] を選択します。
-
追加する承認されたプリンシパルごとに、ゼロ ETL 統合を作成するためにアクセス権限を付与する AWS ユーザーまたはロールの ARN、または AWS アカウント ID を名前空間に入力します。アカウント ID は ARN として保存されます。
-
[変更を保存] をクリックします。
許可されたプリンシパルを Amazon Redshift でプロビジョニングされたクラスターに追加する
-
Amazon Redshift コンソールの左側のナビゲーションペインで、[プロビジョニングされたクラスターダッシュボード] を選択します。
-
[クラスター] を選択してからクラスターを選択し、[リソースポリシー] タブに移動します。
-
[承認されたプリンシパルを追加] を選択します。
-
追加する承認されたプリンシパルごとに、ゼロ ETL 統合を作成するためにアクセス権限を付与する AWS ユーザーまたはロールの ARN、または AWS アカウント ID をクラスターに入力します。アカウント ID は ARN として保存されます。
-
[変更を保存] をクリックします。
承認された統合ソースを追加
ソースが Amazon Redshift データウェアハウスを更新できるようにするには、ソースを承認された統合ソースとして名前空間に追加する必要があります。
承認済みの統合ソースを Amazon Redshift Serverless 名前空間に追加する
-
Amazon Redshift コンソールで、[サーバーレスダッシュボード] に移動します。
-
名前空間の名前を選択します。
-
[リソースポリシー] タブに移動します。
-
[承認された統合ソースを追加] を選択します。
-
ゼロ ETL 統合のソースの ARN を指定します。
注記
承認された統合ソースを削除すると、データが名前空間にレプリケートされなくなります。このアクションにより、そのソースからこの名前空間へのゼロ ETL 統合がすべて非アクティブ化されます。
Amazon Redshift でプロビジョニングされたクラスターに承認された統合ソースを追加
-
Amazon Redshift コンソールで、[プロビジョニングされたクラスターダッシュボード] に移動します。
-
プロビジョニングされたクラスターの名前を選択します。
-
[リソースポリシー] タブに移動します。
-
[承認された統合ソースを追加] を選択します。
-
ゼロ ETL 統合のデータソースであるソースの ARN を指定します。
注記
承認された統合ソースを削除すると、データがプロビジョニングされたクラスターにレプリケートされなくなります。このアクションにより、そのソースからこの Amazon Redshift でプロビジョンされたクラスターへのゼロ ETL 統合がすべて非アクティブ化されます。
Amazon Redshift API を使用して承認を設定する
Amazon Redshift API オペレーションを使用して、ゼロ ETL 統合で機能するリソースポリシーを設定できます。
名前空間へのインバウンド統合を作成できるソースを制御するには、リソースポリシーを作成して、このポリシーを名前空間にアタッチします。リソースポリシーを使用して、統合にアクセスできるソースを指定できます。リソースポリシーはターゲットデータウェアハウスの名前空間にアタッチされ、ソースがライブデータをソースから Amazon Redshift にレプリケートするインバウンド統合を作成できるようにします。
リソースポリシーのサンプルは、次のとおりです。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "redshift:AuthorizeInboundIntegration", "Condition": { "StringEquals": { "aws:SourceArn": "
source_arn
" } } }, { "Effect": "Allow", "Principal": { "AWS": "source_principal
" }, "Action": "redshift:CreateInboundIntegration" } ] }
統合のリソースポリシーの設定に適用できる Amazon Redshift API オペレーションの概要は次のとおりです。
-
リソースポリシーを永続化するには、PutResourcePolicy API オペレーションを使用します。別のリソースポリシーを指定すると、そのリソース上の以前のリソースポリシーが置き換えられます。上記のリソースポリシーのサンプルを使用して、次のとおりのアクションのアクセス許可を付与します。
-
CreateInboundIntegration
– ソースプリンシパルが、ソースからターゲットデータウェアハウスにレプリケートされるデータのインバウンド統合を作成することを許可します。 -
AuthorizeInboundIntegration
– Amazon Redshift が、ターゲットデータウェアハウスがソース ARN からレプリケートされたデータを受信できるかどうかを継続的に検証することを許可します。
-
-
既存のリソースポリシーを表示するには、GetResourcePolicy API オペレーションを使用します。
-
リソースからリソースポリシーを削除するには、DeleteResourcePolicy API オペレーションを使用します。
リソースポリシーの更新には、put-resource-policy AWS CLI コマンドも使用できます。例えば、DynamoDB ソースの Amazon Redshift 名前空間 ARN にリソースポリシーを適用するには、次のような AWS CLI コマンドを実行します。
aws redshift put-resource-policy \ --policy file://rs-rp.json \ --resource-arn "arn:aws:redshift-serverless:us-east-1:123456789012:namespace/cc4ffe56-ad2c-4fd1-a5a2-f29124a56433"
ここでは rs-rp.json
に以下が含まれます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "redshift:AuthorizeInboundIntegration", "Resource": "arn:aws:redshift-serverless:us-east-1:123456789012:namespace/cc4ffe56-ad2c-4fd1-a5a2-f29124a56433", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:dynamodb:us-east-1:123456789012:table/test_ddb" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "redshift:CreateInboundIntegration", "Resource": "arn:aws:redshift-serverless:us-east-1:123456789012:namespace/cc4ffe56-ad2c-4fd1-a5a2-f29124a56433" } ] }