メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012年12月1日)

Amazon Redshift Spectrum 用の IAM ポリシー

デフォルトでは、Amazon Redshift Spectrum は Amazon Athena データカタログを使用します。クラスターには、AWS Glue または Athena の外部データカタログや Amazon S3 のデータファイルにアクセスするための認証が必要です。この認証は、クラスターにアタッチされた AWS Identity and Access Management (IAM) ロールを参照することで提供できます。Apache Hive メタストアを使用してデータカタログを管理している場合は、Athena へのアクセスを提供する必要はありません。

注記

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

少なくとも、クラスターには Amazon S3 バケットへの GET および LIST アクセスが必要です。バケットがクラスターと同じ AWS アカウントに存在しない場合、バケットは、データにアクセスするためにクラスターを認証する必要もあります。詳細については、「ユーザーに代わって Amazon Redshift が他の AWS サービスにアクセスすることを許可する」を参照してください。

注記

Amazon S3 バケットは、特定の VPC エンドポイントからのアクセスのみを制限するバケットポリシーを使用できません。

次のポリシーは、あらゆる Amazon S3 バケットに GET および LIST アクセスを付与します。このポリシーは、Redshift Spectrum が COPY や UNLOAD 操作と同様に Amazon S3 バケットへアクセスするのを許可します。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:Get*", "s3:List*"], "Resource": "*" }] }

次のポリシーは、myBucket という名前の Amazon S3 バケットへの GET および LIST アクセスを付与します。

Copy
[{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:Get*", "s3:List*"], "Resource": "arn:aws:s3:::myBucket/*" }] }

Redshift Spectrum のみを使用して Amazon S3 バケットへのアクセスを許可するには、ユーザーエージェント AWS Redshift/Spectrum のアクセスを許可する条件を含めます。次のポリシーでは、Redshift Spectrum だけが Amazon S3 バケットにアクセスできます。COPY や UNLOAD 操作など、その他のアクセスは除外されます。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:Get*", "s3:List*"], "Resource": "arn:aws:s3:::myBucket/*", "Condition": {"StringEquals": {"aws:UserAgent": "AWS Redshift/Spectrum"}} }] }

同様に、COPY と UNLOAD 操作のアクセスは許可し、Redshift Spectrum のアクセスは除外する IAM ロールを作成することもできます。これを行うには、ユーザーエージェント 「AWS Redshift/Spectrum」のアクセスを拒否する条件を含めます。次のポリシーは、Redshift Spectrum を除いて、Amazon S3 バケットへのアクセスを許可します。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:Get*", "s3:List*"], "Resource": "arn:aws:s3:::myBucket/*", "Condition": {"StringNotEquals": {"aws:UserAgent": "AWS Redshift/Spectrum"}} }] }

次のポリシーは、Amazon Athena リソースへのアクセスを付与します。外部データベースが Hive メタストアにある場合は、Amazon Athena アクセスは必要ありません。

Copy
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["athena:*"], "Resource": ["*"] }] }