ステップ 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. [ロールの作成] を選択します。

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

  5. [Select your use case] で、[Redshift - Customizable]、[Next: Permissions] の順に選択します。

  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. [ロール名] に、mySpectrumRole などのロール名を入力します。

  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. ナビゲーションペインで、[ポリシー] を選択します。

    初めて [ポリシー] を選択する場合には、[管理ポリシーにようこそ] ページが表示されます。[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. [ポリシーの確認] ページの [名前] に、mySpectrumPolicy と入力して、作成するポリシーに名前を付けます。[説明] (オプション) を入力します。ポリシーの [概要] を確認して、ポリシーで許可されている権限を確認します。次に [ポリシーの作成] を選択して作業を保存します。

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

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

  9. [Select type of trusted entity (信頼されたエンティティのタイプの選択)] で、[AWS のサービス] を選択します。

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

  11. サービスの [Redshift Customizable] ユースケースを選択します。続いて、[Next: Permissions] を選択します。

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

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

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

  15. [ロール名] に、名前 mySpectrumRole を入力します。

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

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

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

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

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

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

    • [IAM role (IAM ロール)] で、作成した IAM ロール (mySpectrumRole) を選択します。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 のアクセス許可」を参照してください。