ユーザーに代わって Amazon Redshift が他の AWS のサービスにアクセスすることを許可する - Amazon Redshift

ユーザーに代わって Amazon Redshift が他の AWS のサービスにアクセスすることを許可する

一部の Amazon Redshift 機能では、ユーザーに代わって Amazon Redshift が他の AWS のサービスにアクセスする必要があります。たとえば、COPYUNLOAD コマンドでは、Amazon S3 バケットを使用してデータを Amazon Redshift クラスターにロードまたはアンロードできます。CREATE EXTERNAL FUNCTION コマンドは、スカラーの Lambda ユーザー定義関数 (UDF) を使用して AWS Lambda 関数を呼び出すことができます。Amazon Redshift Spectrum では、Amazon Athena または AWS Glue のデータカタログを使用できます。Amazon Redshift クラスターがユーザーに代わってタスクを実行するには、クラスターにセキュリティ認証情報を指定します。セキュリティ認証情報を指定する望ましい方法は、AWS Identity and Access Management (IAM) ロールを指定することです。COPY と UNLOAD では、一時的な認証情報を指定できます。

AWS Management Consoleの外部で AWS を操作するには、ユーザーはプログラムによるアクセスが必要です。プログラマチックアクセス権を付与する方法は、AWS にアクセスしているユーザーのタイプによって異なります。

ユーザーにプログラマチックアクセス権を付与するには、以下のいずれかのオプションを選択します。

プログラマチックアクセス権を必要とするユーザー 目的 方法

ワークフォースアイデンティティ

(IAM アイデンティティセンターで管理されているユーザー)

一時的な認証情報を使用して、AWS CLI、AWS SDK、または AWS API へのプログラマチックリクエストに署名します。

使用するインターフェイス用の手引きに従ってください。

IAM 一時的な認証情報を使用して、AWS CLI、AWS SDK、または AWS API へのプログラムによるリクエストに署名します。 IAM ユーザーガイド」の「AWS リソースでの一時的な認証情報の使用」の指示に従ってください。
IAM

(非推奨)

長期的な認証情報を使用して、AWS CLI、AWS SDK、AWS API へのプログラムによるリクエストに署名します。

使用するインターフェイス用の手順に従ってください。

次に、他の AWS サービスにアクセスするための適切なアクセス許可を持つ IAM ロールを作成する方法を説明します。Amazon Redshift コマンドの実行時に、ロールをクラスターに関連付けてから、そのロールの Amazon リソースネーム (ARN) を指定する必要があります。詳細については、「IAM ロールを使用して COPY、UNLOAD、CREATE EXTERNAL FUNCTION、CREATE EXTERNAL SCHEMA オペレーションを承認する」を参照してください。

さらに、スーパーユーザーは、COPY および UNLOAD 操作のロールへのアクセスを提供するために、特定のユーザーおよびグループに AssumEROLE 権限を付与できます。詳細については、 Amazon Redshift データベースデベロッパーガイドから GRANT を参照してください。

Amazon Redshift クラスターが AWS サービスにアクセスすることを許可する IAM ロールの作成

アクセス許可を付与した IAM ロールの作成

ユーザーに代わって Amazon Redshift クラスターが他の AWS サービスと通信することを許可する IAM ロールを作成するには、次の手順を実行します。このセクションで使用する値は例であり、必要に応じて値を選択できます。

Amazon Redshift が AWS サービスにアクセスすることを許可する IAM ロールを作成するには
  1. IAM コンソールを開きます。

  2. ナビゲーションペインで [ロール] を選択します。

  3. ロールの作成を選択します。

  4. AWS サービスRedshiftの順にクリックします。

  5. ユースケースの選択で、Redshift - カスタマイズ可能次へ : 許可の順に選択します。アクセス権限ポリシーをアタッチする ページが表示されます。

  6. COPY を使用して Amazon S3 にアクセスするには、例として、 AmazonS3ReadOnlyAccess と入力して追加します。COPY または UNLOAD を使用して Amazon S3 にアクセスする場合は、適切なバケットとプレフィックスへのアクセスを制限する管理ポリシーを作成することをお勧めします。読み取り操作と書き込み操作の両方で、最小限の権限を適用し、Amazon Redshift に必要な Amazon S3 バケットとキープレフィックスのみに制限することをお勧めします。

    CREATE EXTERNAL FUNCTION コマンドの Lambda 関数を呼び出すためのアクセスには、 AWSLambdaRoleを追加します。

    Redshift Spectrum の場合は、Amazon S3 アクセスに加えて、 AWSGlueConsoleFullAccess または AmazonAthenaFullAccessを追加します。

    次へ: タグを選択します。

  7. タグの追加 ページが表示されます。必要に応じてタグを追加できます。次へ: レビューを選択します。

  8. ロール名で、 RedshiftCopyUnloadなどのロール名を入力します。ロールの作成を選択します。

  9. 新しいロールは、そのロールを使用するクラスターのすべてのユーザーが利用できます。特定のクラスターの特定のユーザーのみ、または特定のリージョンのクラスターのみにアクセスを制限するには、ロールの信頼関係を編集します。詳細については、「IAM ロールへのアクセスの制限」を参照してください。

  10. ロールとクラスターを関連付けます。クラスターの作成時に IAM ロールをクラスターに関連付けるか、既存クラスターにロールを追加できます。詳細については、「IAM ロールをクラスターに関連付ける」を参照してください。

    注記

    特定のデータへのアクセスを制限するには、必要な最小限の権限を付与する IAM ロールを使用します。