Athena Federated Query へのアクセスを許可する: ポリシーの例 - Amazon Athena

Athena Federated Query へのアクセスを許可する: ポリシーの例

このトピックのアクセス許可ポリシーの例は、使用可能な必須アクションとそれらのアクションが許可されるリソースを示しています。これらのポリシーを IAM ID にアタッチする前に、これらのポリシーを慎重に検討し、要件に従って変更してください。

IAM アイデンティティへのポリシーのアタッチに関する詳細については、「IAM ユーザーガイド」の「IAM ID のアクセス許可の追加および削除」を参照してください。

– IAM プリンシパルが Athena Federated Query を使用し、実行して結果を返すことを許可する

以下のアイデンティティベースの許可ポリシーは、ユーザーまたは他の IAM プリンシパルが Athena の横串検索を使用するために必要なアクションを許可します。これらのアクションの実行が許可されているプリンシパルは、フェデレーティッドデータソースに関連付けられた Athena カタログを指定するクエリを実行できます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Athena", "Effect": "Allow", "Action": [ "athena:GetDataCatalog", "athena:GetQueryExecution", "athena:GetQueryResults", "athena:GetWorkGroup", "athena:StartQueryExecution", "athena:StopQueryExecution" ], "Resource": [ "arn:aws:athena:*:111122223333:workgroup/WorkgroupName", "arn:aws:athena:aws_region:111122223333:datacatalog/DataCatalogName" ] }, { "Sid": "ListAthenaWorkGroups", "Effect": "Allow", "Action": "athena:ListWorkGroups", "Resource": "*" }, { "Sid": "Lambda", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:*:111122223333:function:OneAthenaLambdaFunction", "arn:aws:lambda:*:111122223333:function:AnotherAthenaLambdaFunction" ] }, { "Sid": "S3", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListMultipartUploadParts", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::MyLambdaSpillBucket", "arn:aws:s3:::MyLambdaSpillBucket/*", "arn:aws:s3:::MyQueryResultsBucket", "arn:aws:s3:::MyQueryResultsBucket/*" ] } ] }
許可の説明
実行可能なアクション 説明
"athena:GetQueryExecution", "athena:GetQueryResults", "athena:GetWorkGroup", "athena:StartQueryExecution", "athena:StopQueryExecution"

横串検索の実行に必要な Athena の許可です。

"athena:GetDataCatalog", "athena:GetQueryExecution," "athena:GetQueryResults", "athena:GetWorkGroup", "athena:StartQueryExecution", "athena:StopQueryExecution"

フェデレーティッドビュークエリの実行に必要な Athena の権限です。ビューには GetDataCatalog アクションが必要です。

"lambda:InvokeFunction"
クエリが Resource ブロックで指定された AWS Lambda 関数の AWS Lambda 関数を呼び出すことを許可します。例えば、MyAthenaLambdaFunction が呼び出される Lambda 関数の名前を指定する arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunction などです。例にあるように、複数の関数を指定できます。
"s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListMultipartUploadParts", "s3:PutObject"

StartQueryExecution を実行する IAM プリンシパルのクエリ出力バケットにアクセスするには、s3:ListBucket 許可と s3:GetBucketLocation 許可が必要です。

s3:PutObjects3:ListMultipartUploadParts、および s3:AbortMultipartUpload は、arn:aws:s3:::MyQueryResultsBucket/* リソース識別子 (MyQueryResultsBucket は Athena クエリ結果バケット) が指定するクエリ結果バケットのすべてのサブフォルダへのクエリ結果の書き込みを許可します。詳細については、「クエリ結果と最近のクエリを操作する」を参照してください。

s3:GetObject は、arn:aws:s3:::MyQueryResultsBucket として指定されたリソースのクエリ結果とクエリ履歴の読み取りを許可します。ここでの MyQueryResultsBucket は、Athena クエリ結果バケットです。

s3:GetObject も、"arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillPrefix*" として指定されたリソースからの読み取りを許可します。ここでの MyLambdaSpillPrefix は、呼び出される Lambda 関数の設定で指定されます。

– IAM プリンシパルにデータソースコネクタの作成を許可する
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "lambda:CreateFunction", "lambda:ListVersionsByFunction", "iam:CreateRole", "lambda:GetFunctionConfiguration", "iam:AttachRolePolicy", "iam:PutRolePolicy", "lambda:PutFunctionConcurrency", "iam:PassRole", "iam:DetachRolePolicy", "lambda:ListTags", "iam:ListAttachedRolePolicies", "iam:DeleteRolePolicy", "lambda:DeleteFunction", "lambda:GetAlias", "iam:ListRolePolicies", "iam:GetRole", "iam:GetPolicy", "lambda:InvokeFunction", "lambda:GetFunction", "lambda:ListAliases", "lambda:UpdateFunctionConfiguration", "iam:DeleteRole", "lambda:UpdateFunctionCode", "s3:GetObject", "lambda:AddPermission", "iam:UpdateRole", "lambda:DeleteFunctionConcurrency", "lambda:RemovePermission", "iam:GetRolePolicy", "lambda:GetPolicy" ], "Resource": [ "arn:aws:lambda:*:111122223333:function:MyAthenaLambdaFunctionsPrefix*", "arn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/*", "arn:aws:iam::*:role/RoleName", "arn:aws:iam::111122223333:policy/*" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "cloudformation:CreateUploadBucket", "cloudformation:DescribeStackDriftDetectionStatus", "cloudformation:ListExports", "cloudformation:ListStacks", "cloudformation:ListImports", "lambda:ListFunctions", "iam:ListRoles", "lambda:GetAccountSettings", "ec2:DescribeSecurityGroups", "cloudformation:EstimateTemplateCost", "ec2:DescribeVpcs", "lambda:ListEventSourceMappings", "cloudformation:DescribeAccountLimits", "ec2:DescribeSubnets", "cloudformation:CreateStackSet", "cloudformation:ValidateTemplate" ], "Resource": "*" }, { "Sid": "VisualEditor2", "Effect": "Allow", "Action": "cloudformation:*", "Resource": [ "arn:aws:cloudformation:*:111122223333:stack/aws-serverless-repository-MyCFStackPrefix*/*", "arn:aws:cloudformation:*:111122223333:stack/serverlessrepo-MyCFStackPrefix*/*", "arn:aws:cloudformation:*:*:transform/Serverless-*", "arn:aws:cloudformation:*:111122223333:stackset/aws-serverless-repository-MyCFStackPrefix*:*", "arn:aws:cloudformation:*:111122223333:stackset/serverlessrepo-MyCFStackPrefix*:*" ] }, { "Sid": "VisualEditor3", "Effect": "Allow", "Action": "serverlessrepo:*", "Resource": "arn:aws:serverlessrepo:*:*:applications/*" } ] }
許可の説明
実行可能なアクション 説明
"lambda:CreateFunction", "lambda:ListVersionsByFunction", "lambda:GetFunctionConfiguration", "lambda:PutFunctionConcurrency", "lambda:ListTags", "lambda:DeleteFunction", "lambda:GetAlias", "lambda:InvokeFunction", "lambda:GetFunction", "lambda:ListAliases", "lambda:UpdateFunctionConfiguration", "lambda:UpdateFunctionCode", "lambda:AddPermission", "lambda:DeleteFunctionConcurrency", "lambda:RemovePermission", "lambda:GetPolicy" "lambda:GetAccountSettings", "lambda:ListFunctions", "lambda:ListEventSourceMappings",

リソースとしてリストされている Lambda 関数の作成と管理を許可します。この例では、名前のプレフィックスがリソース識別子 arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunctionsPrefix* で使用されます。ここでの MyAthenaLambdaFunctionsPrefix は、Lambda 関数グループの名前で使用される共有プレフィックスで、これによって Lambda 関数をリソースとして個別に指定する必要がなくなります。1 つ、または複数の Lambda 関数リソースを指定できます。

"s3:GetObject"
リソース識別子 AWS Serverless Application Repository で指定された、arn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/* が必要なバケットの読み取りを許可します。このバケットは、アカウントに固有のものである場合があります。
"cloudformation:*"

リソース MyCFStackPrefix によって指定されている AWS CloudFormation スタックの作成と管理を許可します。これらのスタックおよびスタックセットは、AWS Serverless Application Repository がコネクタと UDF をデプロイする方法です。

"serverlessrepo:*"
リソース ID AWS Serverless Application Repository によって指定された arn:aws:serverlessrepo:*:*:applications/* でアプリケーションの検索、表示、公開、および更新を許可します。