Amazon Redshift データウェアハウスの認可を設定する - Amazon Redshift

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 名前空間に許可されたプリンシパルを追加する

  1. Amazon Redshift コンソールの左側のナビゲーションペインで、[Redshift Serverless] を選択します。

  2. [名前空間の設定] を選択してから名前空間を選択して、[リソースポリシー] タブに移動します。

  3. [承認されたプリンシパルを追加] を選択します。

  4. 追加する承認されたプリンシパルごとに、ゼロ ETL 統合を作成するためにアクセス権限を付与する AWS ユーザーまたはロールの ARN、または AWS アカウント ID を名前空間に入力します。アカウント ID は ARN として保存されます。

  5. [変更を保存] をクリックします。

許可されたプリンシパルを Amazon Redshift でプロビジョニングされたクラスターに追加する

  1. Amazon Redshift コンソールの左側のナビゲーションペインで、[プロビジョニングされたクラスターダッシュボード] を選択します。

  2. [クラスター] を選択してからクラスターを選択し、[リソースポリシー] タブに移動します。

  3. [承認されたプリンシパルを追加] を選択します。

  4. 追加する承認されたプリンシパルごとに、ゼロ ETL 統合を作成するためにアクセス権限を付与する AWS ユーザーまたはロールの ARN、または AWS アカウント ID をクラスターに入力します。アカウント ID は ARN として保存されます。

  5. [変更を保存] をクリックします。

承認された統合ソースを追加

ソースが Amazon Redshift データウェアハウスを更新できるようにするには、ソースを承認された統合ソースとして名前空間に追加する必要があります。

承認済みの統合ソースを Amazon Redshift Serverless 名前空間に追加する

  1. Amazon Redshift コンソールで、[サーバーレスダッシュボード] に移動します。

  2. 名前空間の名前を選択します。

  3. [リソースポリシー] タブに移動します。

  4. [承認された統合ソースを追加] を選択します。

  5. ゼロ ETL 統合のソースの ARN を指定します。

注記

承認された統合ソースを削除すると、データが名前空間にレプリケートされなくなります。このアクションにより、そのソースからこの名前空間へのゼロ ETL 統合がすべて非アクティブ化されます。

Amazon Redshift でプロビジョニングされたクラスターに承認された統合ソースを追加

  1. Amazon Redshift コンソールで、[プロビジョニングされたクラスターダッシュボード] に移動します。

  2. プロビジョニングされたクラスターの名前を選択します。

  3. [リソースポリシー] タブに移動します。

  4. [承認された統合ソースを追加] を選択します。

  5. ゼロ 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" } ] }