Athena 페더레이션 쿼리에 대한 액세스 허용: 정책 예제 - Amazon Athena

Athena 페더레이션 쿼리에 대한 액세스 허용: 정책 예제

이 주제의 권한 정책 예제에서는 필요한 허용된 작업과 해당 작업이 허용되는 리소스를 보여줍니다. IAM 자격 증명에 연결하기 전에 이러한 정책을 신중하게 검토하고 요구 사항에 따라 수정합니다.

IAM 자격 증명에 정책을 연결하는 방법에 대한 자세한 내용은 IAM 사용 설명서IAM 자격 증명 권한 추가 및 제거를 참조하세요.

- IAM 보안 주체가 Athena 연합 쿼리를 사용하여 쿼리를 실행하고 결과를 반환할 수 있도록 허용합니다.

다음 자격 증명 기반 권한 정책은 사용자 또는 다른 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 함수를 호출할 수 있습니다. arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunction을 예로 들 수 있습니다. 여기서 MyAthenaLambdaFunction은 호출되는 Lambda 함수의 이름을 지정합니다. 예제와 같이 여러 함수를 지정할 수 있습니다.
"s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListMultipartUploadParts", "s3:PutObject"

StartQueryExecution을 실행하는 IAM 보안 주체에 대한 쿼리 출력 버킷에 액세스하려면 s3:ListBuckets3:GetBucketLocation 권한이 필요합니다.

s3:PutObject, s3:ListMultipartUploadPartss3:AbortMultipartUploadarn:aws:s3:::MyQueryResultsBucket/* 리소스 식별자에 지정된 대로 쿼리 결과 버킷의 모든 하위 폴더에 쿼리 결과를 작성하도록 허용합니다. 여기서 MyQueryResultsBucket은 Athena 쿼리 결과 버킷입니다. 자세한 내용은 쿼리 결과 및 최근 쿼리 작업 단원을 참조하십시오.

s3:GetObjectarn: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 함수 리소스를 지정할 수 있습니다.

"s3:GetObject"
리소스 식별자 arn:aws:s3:::awsserverlessrepo-changesets-1iiv3xa62ln3m/*에 지정된 대로 AWS Serverless Application Repository이 요구하는 버킷을 읽을 수 있습니다. 이 버킷은 사용자 계정에만 해당될 수 있습니다.
"cloudformation:*"

MyCFStackPrefix 리소스에 의해 지정된 AWS CloudFormation 스택의 생성 및 관리를 허용합니다. 이러한 스택 및 스택 세트는 AWS Serverless Application Repository이 커넥터와 UDF를 배포하는 방법입니다.

"serverlessrepo:*"
AWS Serverless Application Repository에서 리소스 식별자 arn:aws:serverlessrepo:*:*:applications/*로 지정된 애플리케이션을 검색하고 보고 게시 및 업데이트할 수 있습니다.