ステップ 1。Amazon Redshift 用の IAM ロールを作成する - Amazon Redshift

ステップ 1。Amazon Redshift 用の IAM ロールを作成する

クラスターには、AWS Glueまたは Amazon Athena に置かれている外部データカタログ、および Amazon S3 内のデータファイルにアクセスするための認証が必要です。この認証を提供するには、クラスターにアタッチされた AWS Identity and Access Management (IAM) ロールを参照します。ロールと Amazon Redshift の詳細な使用方法については、IAM ロールを使用して COPY および UNLOAD オペレーションを認可するを参照してください。

注記

特定のケースでは、Athena データカタログを AWS Glue データカタログに移行することができます。これを実行するには、クラスターが AWS Glue 対応の AWS リージョンに存在していること、および Athena データカタログ内に Redshift Spectrum 外部テーブルを持っていることが条件となります。Redshift Spectrum で AWS Glue データカタログを使用するには、IAM ポリシーの変更が必要になる場合があります。詳細については、Athena ユーザーガイドの「AWS Glue データカタログへのアップグレード」を参照してください。

Amazon Redshift のロールを作成する場合は、次のいずれかのアプローチを選択します。

Amazon Redshift 用の IAM ロールを作成するには
  1. IAM コンソールを開きます。

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

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

  4. AWS サービス を信頼されたエンティティとして選択し、次に Redshift をユースケースとして選択します。

  5. [他の AWS のサービス のユースケース] で、[Redshift - カスタマイズ可能][次へ] の順に選択します。

  6. [アクセス許可ポリシーをアタッチする] ページが表示されます。AmazonS3ReadOnlyAccess および AWSGlueConsoleFullAccess を選択します (AWS Glue データカタログを使用する場合)。または、AmazonAthenaFullAccessを選択します (Athena データカタログを使用する場合)。[Next] (次へ) をクリックします。

    注記

    AmazonS3ReadOnlyAccess ポリシーは、すべての Amazon S3 バケットに対する読み込み専用アクセス権をクラスターに付与します。AWS サンプルデータバケットへのアクセスのみを許可するには、新しいポリシーを作成して以下のアクセス許可を追加します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::redshift-downloads/*" } ] }
  7. [ロール名] に、myspectrum_roleなどのロール名を入力します。

  8. 情報を確認してから、[ロールの作成] を選択します。

  9. ナビゲーションペインで [Roles (ロール) ] を選択します。新しいロールの名前を選択して概要を確認し、次にロール ARN をクリップボードにコピーします。この値は、作成したロールの Amazon リソースネーム (ARN) です。この値を使用して、外部テーブルの作成時に Amazon S3 のデータファイルを参照します。

AWS Lake Formation に対し有効化されている AWS Glue Data Catalog を使用して、Amazon Redshift の IAM ロールを作成するには
  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

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

    [Policies] (ポリシー) を初めて選択する場合は、[Welcome to Managed Policies] (マネージドポリシーにようこそ) ページが表示されます。[Get Started] (今すぐ始める) を選択します。

  3. [Create policy] (ポリシーを作成) を選択します。

  4. [JSON] タブでポリシーの作成を選択します。

  5. 次の JSON ポリシードキュメントに貼り付けます。これにより、データカタログへのアクセスは付与されますが、Lake Formation の管理者権限は拒否されます。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftPolicyForLF", "Effect": "Allow", "Action": [ "glue:*", "lakeformation:GetDataAccess" ], "Resource": "*" } ] }
  6. 完了したら、[確認] を選択してポリシーを確認します。構文エラーがある場合は、Policy Validator によってレポートされます。

  7. [ポリシーの確認] ページの [名前] に、myspectrum_policyと入力して、作成するポリシーに名前を付けます。[説明] (オプション) を入力します。ポリシーの [Summary] (概要) を参照して、ポリシーによって付与された許可を確認します。次に、[Create policy] (ポリシーの作成) を選択して作業を保存します。

    ポリシーを作成したら、ユーザーにアクセス権を付与できます。

アクセス権限を付与するには、ユーザー、グループ、またはロールにアクセス許可を追加します。

Lake Formation データベースでクエリを実行するテーブルの SELECT 権限を付与するには
  1. Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) を開きます。

  2. ナビゲーションで、[データレイクアクセス許可][付与] の順に選択します。

  3. [AWS Lake Formation 開発者ガイド」の「名前付きリソースメソッドによるテーブルのアクセス許可の付与」の手順に従ってください。以下の情報を記述します。

    • [IAM role (IAM ロール)] で、作成した IAM ロール (myspectrum_role) を選択します。Amazon Redshift クエリエディタを実行すると、IAM ロールを使用して、データに対するアクセス許可が付与されます。

      注記

      Lake Formation が有効なデータカタログでテーブルに対する SELECT 許可を付与してクエリを実行するには、次を実行します。

      • Lake Formation にデータのパスを登録します。

      • Lake Formation でそのパスへのアクセス許可をユーザーに付与します。

      • 作成したテーブルは、Lake Formation で登録したパスで確認できます。

  4. [Grant] (付与) を選択します。

重要

ベストプラクティスとして、Lake Formation 許可で基本の Amazon S3 オブジェクトにのみアクセスを許可することをお勧めします。承認されていないアクセスを防止するために、Lake Formation 外の Amazon S3 オブジェクトに許可が付与されている場合はそれらをすべて削除します。以前に Amazon S3 オブジェクトにアクセスしたことがあり、Lake Formation を設定する場合は、以前に設定した IAM ポリシーやバケットのアクセス許可をすべて削除します。詳細については、「AWS Lake Formation モデルへの AWS Glue データのアクセス許可のアップグレード」および「Lake Formation のアクセス許可」を参照してください。