이 주제의 권한 정책 예제에서는 필요한 허용된 작업과 해당 작업이 허용되는 리소스를 보여줍니다. 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": "*"
}
]
}
허용된 작업 | 설명 |
---|---|
|
|
|
또한 |
|
쿼리가 Resource 블록에 지정된 AWS Lambda 함수를 호출할 수 있습니다. arn:aws:lambda:*: 을 예로 들 수 있습니다. 여기서 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/*"
},
{
"Sid": "ECR",
"Effect": "Allow",
"Action": [
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
],
"Resource": "arn:aws:ecr:*:*:repository/*"
}
]
}
허용된 작업 | 설명 |
---|---|
|
리소스로 나열된 Lambda 함수의 생성 및 관리를 허용합니다. 이 예제에서는 이름 접두사가 리소스 식별자 |
|
리소스 식별자 arn:aws:s3:::awsserverlessrepo-changesets- 에 지정된 대로 AWS Serverless Application Repository이 요구하는 버킷을 읽을 수 있습니다. |
|
|
|
AWS Serverless Application Repository에서 리소스 식별자 arn:aws:serverlessrepo:*:*:applications/* 로 지정된 애플리케이션을 검색하고 보고 게시 및 업데이트할 수 있습니다. |