ステップ 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. ナビゲーションペインで [Roles (ロール) ] を選択します。

  3. [Create role] を選択します。

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

  5. ユースケースの選択で、Redshift - カスタマイズ可能次へ : 許可の順に選択します。

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

    注記

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

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": "arn:aws:s3:::awssampledbuswest2/*" } ] }
  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. 完了したら、[Review (確認)] を選択してポリシーを確認します。構文エラーがある場合は、Policy Validator によってレポートされます。

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

    ポリシーを作成したら、ロールを作成してそのポリシーを適用することができます。

  8. IAM コンソールのナビゲーションペインで、[Roles] (ロール)、[Create role] (ロールを作成) の順に選択します。

  9. 信頼できるエンティティの種類の選択で、AWSサービスを選択します。

  10. Amazon Redshift サービスを選択して、このロールを引き受けます。

  11. サービスのユースケースに [Redshift - Customizable] (Redshift – カスタマイズ可能) を選択します。続いて、[Next: Permissions] を選択します。

  12. 作成したアクセス許可ポリシー myspectrum_policy を選択して、ロールにアタッチします。

  13. [Next: Tagging (次へ: タグ付け)] を選択します。

  14. [Next: Review (次へ: レビュー)] を選択します。

  15. [Role name] (ロール名) に myspectrum_role という名前を入力します。

  16. (オプション) [description] (説明) に、新しいロールの説明を入力します。

  17. ロールを確認し、[ロールの作成] を選択します。

Lake Formation データベースでクエリを実行するテーブルの SELECT 権限を付与するには

  1. Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/) を開きます。

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

  3. 以下の情報を記述します。

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

      注記

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

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

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

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

    • [Database (データベース)] には、Lake Formation データベースを選択します。

    • [テーブル] で、クエリするデータベース内のテーブルを選択します。

    • [] で、[すべての列] を選択します。

    • [Select] 権限を選択します。

  4. [Save] を選択します。

重要

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