ステップ 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 のロールを作成する場合は、次のいずれかのアプローチを選択します。
Athena データカタログまたは AWS Glue データカタログで Redshift Spectrum を使用する場合は、Amazon Redshift 用の IAM ロールを作成するにはに示されている手順に従います。
AWS Lake Formation に対し有効になっている AWS Glue Data Catalog で Redshift Spectrum を使用する場合は、以下に示されている手順に従います。
Amazon Redshift 用の IAM ロールを作成するには
-
IAM コンソール
を開きます。 -
ナビゲーションペインで [Roles (ロール) ] を選択します。
-
[ロールの作成] を選択します。
-
AWS サービス を信頼されたエンティティとして選択し、次に Redshift をユースケースとして選択します。
-
[他の AWS のサービス のユースケース] で、[Redshift - カスタマイズ可能]、[次へ] の順に選択します。
-
[アクセス許可ポリシーをアタッチする] ページが表示されます。
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/*" } ] }
-
[ロール名] に、
myspectrum_role
などのロール名を入力します。 -
情報を確認してから、[ロールの作成] を選択します。
-
ナビゲーションペインで [Roles (ロール) ] を選択します。新しいロールの名前を選択して概要を確認し、次にロール ARN をクリップボードにコピーします。この値は、作成したロールの Amazon リソースネーム (ARN) です。この値を使用して、外部テーブルの作成時に Amazon S3 のデータファイルを参照します。
AWS Lake Formation に対し有効化されている AWS Glue Data Catalog を使用して、Amazon Redshift の IAM ロールを作成するには
-
IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ナビゲーションペインで、[ポリシー] を選択します。
[Policies] (ポリシー) を初めて選択する場合は、[Welcome to Managed Policies] (マネージドポリシーにようこそ) ページが表示されます。[Get Started] (今すぐ始める) を選択します。
-
[ポリシーを作成] を選択します。
-
[JSON] タブでポリシーの作成を選択します。
-
次の JSON ポリシードキュメントに貼り付けます。これにより、データカタログへのアクセスは付与されますが、Lake Formation の管理者権限は拒否されます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RedshiftPolicyForLF", "Effect": "Allow", "Action": [ "glue:*", "lakeformation:GetDataAccess" ], "Resource": "*" } ] }
-
完了したら、[確認] を選択してポリシーを確認します。構文エラーがある場合は、Policy Validator によってレポートされます。
-
[ポリシーの確認] ページの [名前] に、
myspectrum_policy
と入力して、作成するポリシーに名前を付けます。[説明] (オプション) を入力します。ポリシーの [Summary] (概要) を参照して、ポリシーによって付与された許可を確認します。次に、[Create policy] (ポリシーの作成) を選択して作業を保存します。ポリシーを作成したら、ユーザーにアクセス権を付与できます。
アクセスを提供するには、ユーザー、グループ、またはロールにアクセス許可を追加します。
-
AWS IAM Identity Center (successor to AWS Single Sign-On) のユーザーとグループ:
アクセス許可セットを作成します。「AWS IAM Identity Center (successor to AWS Single Sign-On) ユーザーガイド」の「シークレットの作成と管理」の手順に従ってください。
-
ID プロバイダーを通じて IAM で管理されているユーザー:
ID フェデレーションのロールを作成する。詳細については、「IAM ユーザーガイド」の「サードパーティー ID プロバイダー (フェデレーション) 用のロールの作成」を参照してください。
-
IAM ユーザー:
-
ユーザーが設定できるロールを作成します。手順については、「IAM ユーザーガイド」の「IAM ユーザー用ロールの作成」を参照してください。
-
(非推奨) ポリシーをユーザーに直接アタッチするか、ユーザーをユーザーグループに追加します。「IAM ユーザーガイド」の「ユーザー (コンソール) へのアクセス許可の追加」の指示に従います。
-
Lake Formation データベースでクエリを実行するテーブルの SELECT 権限を付与するには
-
Lake Formation コンソール (https://console.aws.amazon.com/lakeformation/
) を開きます。 -
ナビゲーションで、[アクセス許可]、[付与] の順に選択します。
-
以下の情報を記述します。
-
[IAM role (IAM ロール)] で、作成した IAM ロール (
myspectrum_role
) を選択します。Amazon Redshift クエリエディタを実行すると、IAM ロールを使用して、データに対するアクセス許可が付与されます。注記
Lake Formation が有効なデータカタログでテーブルに対する SELECT 許可を付与してクエリを実行するには、次を実行します。
Lake Formation にデータのパスを登録します。
Lake Formation でそのパスへのアクセス許可をユーザーに付与します。
作成したテーブルは、Lake Formation で登録したパスで確認できます。
-
[データベース] には、Lake Formation データベースを選択します。
-
[テーブル] で、クエリするデータベース内のテーブルを選択します。
-
[列] で、[すべての列] を選択します。
-
[選択] 権限を選択します。
-
-
[保存] を選択します。
重要
ベストプラクティスとして、Lake Formation 許可で基本の Amazon S3 オブジェクトにのみアクセスを許可することをお勧めします。承認されていないアクセスを防止するために、Lake Formation 外の Amazon S3 オブジェクトに許可が付与されている場合はそれらをすべて削除します。以前に Amazon S3 オブジェクトにアクセスしたことがあり、Lake Formation を設定する場合は、以前に設定した IAM ポリシーやバケットのアクセス許可をすべて削除します。詳細については、「AWS Lake Formation モデルへの AWS Glue データのアクセス許可のアップグレード」および「Lake Formation のアクセス許可」を参照してください。