メニュー
Amazon Athena
ユーザーガイド

ユーザーと Amazon S3 バケットのアクセス許可の設定

Athena でクエリを実行するには、以下のための適切なアクセス許可が必要です。

  • Athena のアクション。

  • Athena でのクエリ対象である基となるデータの保存先の Amazon S3。

管理者として他のユーザーを管理する場合は、各ユーザーのユーザープロファイルに適切なアクセス許可が関連付けられていることを確認してください。

ユーザーアクセス用の IAM ポリシー

自分自身または他のユーザーに対して Athena サービスアクションを許可または拒否するには、ユーザーやグループなどのプリンシパルにアタッチされた IAM ポリシーを使用します。

各 IAM ポリシーは、許可または拒否されるアクションを定義するステートメントで構成されます。アクションの一覧については、Amazon Athena API リファレンスを参照してください。

管理ポリシーは使いやすく、自動更新されてサービスの進化に伴う必須アクションが反映されます。

AmazonAthenaFullAccess ポリシーは Athena の管理ポリシーです。このポリシーを、Athena へのフルアクセスを必要とするユーザーや他のプリンシパルにアタッチします。ポリシーをユーザーにアタッチするための詳細情報および手順については、AWS Identity and Access Management ユーザーガイドの「管理ポリシーのアタッチ」を参照してください。

カスタマー管理ポリシーおよびインラインポリシーを使用すると、ポリシー内のより詳細な Athena アクションを指定してアクセスを微調整できます。AmazonAthenaFullAccess ポリシーを開始点として使用し、次に Amazon Athena API リファレンスに示されている特定のアクションを許可または拒否することをお勧めします。インラインポリシーの詳細については、AWS Identity and Access Management ユーザーガイドの「管理ポリシーとインラインポリシー」を参照してください。

JDBC を使用して接続するプリンシパルに対しては、API に示されていない追加のアクションを許可する必要があります。詳細については、「JDBC 接続のサービスアクション」を参照してください。

AmazonAthenaFullAccess 管理ポリシー

管理ポリシーの内容は変わるため、ここに示すポリシーは古くなっている可能性があります。IAM コンソールで最新のポリシーを確認してください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "athena:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:DeleteDatabase", "glue:GetDatabase", "glue:GetDatabases", "glue:UpdateDatabase", "glue:CreateTable", "glue:DeleteTable", "glue:BatchDeleteTable", "glue:UpdateTable", "glue:GetTable", "glue:GetTables", "glue:BatchCreatePartition", "glue:CreatePartition", "glue:DeletePartition", "glue:BatchDeletePartition", "glue:UpdatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload", "s3:CreateBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::aws-athena-query-results-*" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::athena-examples*" ] } ] }

AWSQuicksightAthenaAccess 管理ポリシー

追加の管理ポリシー AWSQuicksightAthenaAccess では、Amazon QuickSight と Athena の統合に必要なアクションに対するアクセス権を付与します。このポリシーには、API に含まれていない Athena の廃止済みアクションが含まれています。このポリシーは、Amazon QuickSight を Athena と併用するプリンシパルにのみアタッチします。

管理ポリシーの内容は変わるため、ここに示すポリシーは古くなっている可能性があります。IAM コンソールで最新のポリシーを確認してください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "athena:BatchGetQueryExecution", "athena:CancelQueryExecution", "athena:GetCatalogs", "athena:GetExecutionEngine", "athena:GetExecutionEngines", "athena:GetNamespace", "athena:GetNamespaces", "athena:GetQueryExecution", "athena:GetQueryExecutions", "athena:GetQueryResults", "athena:GetTable", "athena:GetTables", "athena:ListQueryExecutions", "athena:RunQuery", "athena:StartQueryExecution", "athena:StopQueryExecution" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:DeleteDatabase", "glue:GetDatabase", "glue:GetDatabases", "glue:UpdateDatabase", "glue:CreateTable", "glue:DeleteTable", "glue:BatchDeleteTable", "glue:UpdateTable", "glue:GetTable", "glue:GetTables", "glue:BatchCreatePartition", "glue:CreatePartition", "glue:DeletePartition", "glue:BatchDeletePartition", "glue:UpdatePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload", "s3:CreateBucket", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::aws-athena-query-results-*" ] } ] }

JDBC 接続を介したアクセス

Athena や Amazon S3 バケットなど、AWS のサービスやリソースへのアクセスを取得するには、JDBC ドライバーの認証情報をアプリケーションに提供します。「JDBC ドライバーでの接続」を参照してください。

Amazon S3 アクセス許可

自分やユーザーがテーブルを作成して基になるデータを使用する場合は、Athena に許可するアクションをポリシーで定義するほかに、Amazon S3 内のデータ保存先への適切なアクセス権を付与する必要があります。

これを行うには、ユーザーポリシー、バケットポリシー、またはその両方を使用します。Amazon S3 へのアクセス権を付与する方法の詳細とシナリオについては、Amazon Simple Storage Service 開発者ガイドの「チュートリアル例: アクセスの管理」を参照してください。許可する Amazon S3 アクションの詳細と例については、このトピックの後半にあるバケットポリシー例を参照してください。

注記

Athena は、aws:SourceIp 条件キーに基づく Amazon S3 リソースへのアクセスの制限や許可をサポートしていません。

クロスアカウントアクセス許可

一般的なシナリオでは、バケット所有者とは異なるアカウントのユーザーにアクセス権を付与し、クエリを実行できるようにします。この場合、アクセス権を付与するには、バケットポリシーを使用します。

次の例のバケットポリシーは、バケット所有者によって作成され、バケット s3://my-athena-data-bucket に適用されています。このポリシーでは、別のアカウント (123456789123) のすべてのユーザーにアクセス権を付与します。

{ "Version": "2012-10-17", "Id": "MyPolicyID", "Statement": [ { "Sid": "MyStatementSid", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789123:root" }, "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::my-athena-data-bucket", "arn:aws:s3:::my-athena-data-bucket/*" ] } ] }

アカウントの特定のユーザーにアクセス権を付与するには、Principal キーを root から特定のユーザーを指定するキーに置き換えます。たとえば、ユーザープロファイル Dave にアクセス権を付与するには、arn:aws:iam::123456789123:user/Dave に置き換えます。