태그를 사용하면 Condition
블록이 포함된 IAM 정책을 작성하여 태그를 기반으로 리소스에 대한 액세스를 제어할 수 있습니다. 이 섹션에는 작업 그룹 및 데이터 카탈로그 리소스에 대한 태그 정책 예제가 포함되어 있습니다.
작업 그룹에 대한 태그 정책 예제
다음 IAM 정책은 workgroupA
라는 작업 그룹에 대해 쿼리를 실행하고 태그 작업을 할 수 있도록 허용합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"athena:ListWorkGroups",
"athena:ListEngineVersions",
"athena:ListDataCatalogs",
"athena:ListDatabases",
"athena:GetDatabase",
"athena:ListTableMetadata",
"athena:GetTableMetadata"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"athena:GetWorkGroup",
"athena:TagResource",
"athena:UntagResource",
"athena:ListTagsForResource",
"athena:StartQueryExecution",
"athena:GetQueryExecution",
"athena:BatchGetQueryExecution",
"athena:ListQueryExecutions",
"athena:StopQueryExecution",
"athena:GetQueryResults",
"athena:GetQueryResultsStream",
"athena:CreateNamedQuery",
"athena:GetNamedQuery",
"athena:BatchGetNamedQuery",
"athena:ListNamedQueries",
"athena:DeleteNamedQuery",
"athena:CreatePreparedStatement",
"athena:GetPreparedStatement",
"athena:ListPreparedStatements",
"athena:UpdatePreparedStatement",
"athena:DeletePreparedStatement"
],
"Resource": "arn:aws:athena:us-east-1
:123456789012
:workgroup/workgroupA
"
}
]
}
작업 그룹과 같은 리소스에 연결된 태그를 리소스 태그라고 합니다. 리소스 태그를 사용하면 키-값 페어(예: stack
, production
)로 태그가 지정된 작업 그룹에 대해 명시된 작업을 거부하는 다음과 같은 정책 블록을 작성할 수 있습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"athena:GetWorkGroup",
"athena:UpdateWorkGroup",
"athena:DeleteWorkGroup",
"athena:TagResource",
"athena:UntagResource",
"athena:ListTagsForResource",
"athena:StartQueryExecution",
"athena:GetQueryExecution",
"athena:BatchGetQueryExecution",
"athena:ListQueryExecutions",
"athena:StopQueryExecution",
"athena:GetQueryResults",
"athena:GetQueryResultsStream",
"athena:CreateNamedQuery",
"athena:GetNamedQuery",
"athena:BatchGetNamedQuery",
"athena:ListNamedQueries",
"athena:DeleteNamedQuery",
"athena:CreatePreparedStatement",
"athena:GetPreparedStatement",
"athena:ListPreparedStatements",
"athena:UpdatePreparedStatement",
"athena:DeletePreparedStatement"
],
"Resource": "arn:aws:athena:us-east-1
:123456789012
:workgroup/*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/stack
": "production
"
}
}
}
]
}
태그를 변경하는 작업에 파라미터로 전달되는 태그(예: 태그가 있는 TagResource
, UntagResource
, 또는 CreateWorkGroup
)를 요청 태그라고 합니다. 다음 예제 정책 블록에서는 전달된 태그 중 하나에 costcenter
키와 1
, 2
또는 3
값이 있는 경우에만 CreateWorkGroup
작업을 허용합니다.
참고
IAM 역할이 CreateWorkGroup
작업의 일환으로 태그를 전달할 수 있도록 하려면 TagResource
및 CreateWorkGroup
작업에 대한 권한을 해당 역할에 부여해야 합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"athena:CreateWorkGroup",
"athena:TagResource"
],
"Resource": "arn:aws:athena:us-east-1
:123456789012
:workgroup/*",
"Condition": {
"StringEquals": {
"aws:RequestTag/costcenter
": [
"1
",
"2
",
"3
"
]
}
}
}
]
}
데이터 카탈로그에 대한 태그 정책 예제
다음 IAM 정책을 사용하면 datacatalogA
라는 데이터 카탈로그에 대한 태그와 상호 작용할 수 있습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"athena:ListWorkGroups",
"athena:ListEngineVersions",
"athena:ListDataCatalogs",
"athena:ListDatabases",
"athena:GetDatabase",
"athena:ListTableMetadata",
"athena:GetTableMetadata"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"athena:GetWorkGroup",
"athena:TagResource",
"athena:UntagResource",
"athena:ListTagsForResource",
"athena:StartQueryExecution",
"athena:GetQueryExecution",
"athena:BatchGetQueryExecution",
"athena:ListQueryExecutions",
"athena:StopQueryExecution",
"athena:GetQueryResults",
"athena:GetQueryResultsStream",
"athena:CreateNamedQuery",
"athena:GetNamedQuery",
"athena:BatchGetNamedQuery",
"athena:ListNamedQueries",
"athena:DeleteNamedQuery"
],
"Resource": [
"arn:aws:athena:us-east-1
:123456789012
:workgroup/*"
]
},
{
"Effect": "Allow",
"Action": [
"athena:CreateDataCatalog",
"athena:GetDataCatalog",
"athena:UpdateDataCatalog",
"athena:DeleteDataCatalog",
"athena:ListDatabases",
"athena:GetDatabase",
"athena:ListTableMetadata",
"athena:GetTableMetadata",
"athena:TagResource",
"athena:UntagResource",
"athena:ListTagsForResource"
],
"Resource": "arn:aws:athena:us-east-1
:123456789012
:datacatalog/datacatalogA
"
}
]
}
리소스 태그를 사용하여 특정 태그 키-값 페이로 태그가 지정된 데이터 카탈로그에서 특정 작업을 거부하는 정책 블록을 작성할 수 있습니다. 다음 예제 정책은 태그 키-값 페어(stack
, production
)가 있는 데이터 카탈로그에 대한 작업을 거부합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"athena:CreateDataCatalog",
"athena:GetDataCatalog",
"athena:UpdateDataCatalog",
"athena:DeleteDataCatalog",
"athena:GetDatabase",
"athena:ListDatabases",
"athena:GetTableMetadata",
"athena:ListTableMetadata",
"athena:StartQueryExecution",
"athena:TagResource",
"athena:UntagResource",
"athena:ListTagsForResource"
],
"Resource": "arn:aws:athena:us-east-1
:123456789012
:datacatalog/*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/stack
": "production
"
}
}
}
]
}
태그를 변경하는 작업에 파라미터로 전달되는 태그(예: 태그가 있는 TagResource
, UntagResource
, 또는 CreateDataCatalog
)를 요청 태그라고 합니다. 다음 예제 정책 블록에서는 전달된 태그 중 하나에 costcenter
키와 1
, 2
또는 3
값이 있는 경우에만 CreateDataCatalog
작업을 허용합니다.
참고
IAM 역할이 CreateDataCatalog
작업의 일환으로 태그를 전달할 수 있도록 하려면 TagResource
및 CreateDataCatalog
작업에 대한 권한을 해당 역할에 부여해야 합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"athena:CreateDataCatalog",
"athena:TagResource"
],
"Resource": "arn:aws:athena:us-east-1
:123456789012
:datacatalog/*",
"Condition": {
"StringEquals": {
"aws:RequestTag/costcenter
": [
"1
",
"2
",
"3
"
]
}
}
}
]
}