Amazon Redshift
データベース開発者ガイド

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

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

注記

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

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

Amazon Redshift 用の IAM ロールを作成するには

  1. IAM コンソールを開きます。

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

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

  4. [AWS service (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 データカタログ を使用して Amazon Redshift の IAM ロールを作成するには

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

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

    初めて [ポリシー] を選択する場合には、[管理ポリシーにようこそ] ページが表示されます。[Get Started (開始方法)] を選択します。

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

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

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

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

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

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

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

  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 ロール] で、作成した IAM ロール (mySpectrumRole) を選択します。Amazon Redshift クエリエディタを実行すると、IAM ロールを使用して、データに対するアクセス許可が付与されます。

      注記

      クエリを実行する Lake Formation で有効になっている Data Catalog のテーブルに対する SELECT 権限を付与するには、次の手順を実行します。

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

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

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

    • [データベース] で、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 のアクセス許可」を参照してください。