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 として保存されます。
-
[Save changes] (変更の保存) をクリックします。
許可されたプリンシパルを Amazon Redshift でプロビジョニングされたクラスターに追加する
-
Amazon Redshift コンソールの左側のナビゲーションペインで、[プロビジョニングされたクラスターダッシュボード] を選択します。
-
[クラスター] を選択してからクラスターを選択し、[リソースポリシー] タブに移動します。
-
[承認されたプリンシパルを追加] を選択します。
-
追加する承認されたプリンシパルごとに、ゼロ ETL 統合を作成するためにアクセス権限を付与する AWS ユーザーまたはロールの ARN、または AWS アカウント ID をクラスターに入力します。アカウント ID は ARN として保存されます。
-
[Save changes] (変更の保存) をクリックします。
承認された統合ソースを追加
ソースが 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"
}
]
}