Athena UDF에 대한 액세스 허용: 정책 예제 - Amazon Athena

Athena UDF에 대한 액세스 허용: 정책 예제

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

- IAM 보안 주체가 Athena UDF 문을 포함한 쿼리를 실행하고 결과를 반환하도록 허용합니다.

다음 자격 증명 기반 권한 정책은 사용자 또는 다른 IAM 보안 주체가 Athena UDF 문을 사용하는 쿼리를 실행하는 데 필요한 작업을 허용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "athena:StartQueryExecution", "lambda:InvokeFunction", "athena:GetQueryResults", "s3:ListMultipartUploadParts", "athena:GetWorkGroup", "s3:PutObject", "s3:GetObject", "s3:AbortMultipartUpload", "athena:StopQueryExecution", "athena:GetQueryExecution", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:athena:*:MyAWSAcctId:workgroup/MyAthenaWorkGroup", "arn:aws:s3:::MyQueryResultsBucket/*", "arn:aws:lambda:*:MyAWSAcctId:function:OneAthenaLambdaFunction", "arn:aws:lambda:*:MyAWSAcctId:function:AnotherAthenaLambdaFunction" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "athena:ListWorkGroups", "Resource": "*" } ] }
권한에 대한 설명
허용된 작업 설명
"athena:StartQueryExecution", "athena:GetQueryResults", "athena:GetWorkGroup", "athena:StopQueryExecution", "athena:GetQueryExecution",

MyAthenaWorkGroup 작업 그룹에서 쿼리를 실행하는 데 필요한 Athena 권한입니다.

"s3:PutObject", "s3:GetObject", "s3:AbortMultipartUpload"

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

s3:GetObjectarn:aws:s3:::MyQueryResultsBucket으로 지정된 리소스에 대한 쿼리 결과 및 쿼리 기록을 읽을 수 있도록 허용합니다. 여기서 MyQueryResultsBucket은 Athena 쿼리 결과 버킷입니다. 자세한 내용은 쿼리 결과 및 최근 쿼리 작업 단원을 참조하세요.

또한 s3:GetObject"arn:aws:s3:::MyLambdaSpillBucket/MyLambdaSpillPrefix*"로 지정된 리소스에서 읽을 수 있도록 허용합니다. 여기서 MyLambdaSpillPrefix는 호출되는 Lambda 함수의 구성에서 지정됩니다.

"lambda:InvokeFunction"
쿼리가 Resource 블록에 지정된 AWS Lambda 함수를 호출할 수 있습니다. arn:aws:lambda:*:MyAWSAcctId:function:MyAthenaLambdaFunction을 예로 들 수 있습니다. 여기서 MyAthenaLambdaFunction은 호출할 Lambda 함수의 이름을 지정합니다. 예제와 같이 여러 함수를 지정할 수 있습니다.
- IAM 보안 주체가 Athena UDF를 생성할 수 있도록 허용합니다.
{ "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/*로 지정된 애플리케이션을 검색하고 보고 게시 및 업데이트할 수 있습니다.