리소스 생성 시 태그 지정 권한 부여
리소스 생성 시 태그 지정 권한 부여
다음 태그-온-생성(tag-on create) Amazon ECS API 작업을 사용하면 리소스를 만들 때 태그를 지정할 수 있어요. 리소스 생성 작업에서 태그가 지정되면 AWS는 태그를 만들 수 있는 올바른 권한이 할당되었는지 확인하기 위해 추가 권한 부여를 수행합니다.
출처: 문서
본문
CreateCapacityProviderCreateClusterCreateServiceCreateTaskSetRegisterContainerInstanceRegisterTaskDefinitionRunTaskStartTask
리소스 태그를 사용해 속성 기반 제어(ABAC, attribute-based control)를 구현할 수 있어요. 자세한 내용은 리소스 태그로 Amazon ECS 리소스 액세스 제어(Control access to Amazon ECS resources using resource tags)와 Amazon ECS 리소스 태깅(Tagging Amazon ECS resources)을 참고하세요.
생성 시 태깅을 허용하려면 리소스를 만드는 작업(예: ecs:CreateCluster 또는 ecs:RunTask)을 사용할 권한과 ecs:TagResource 작업을 모두 포함하도록 정책을 만들거나 수정하세요.
다음 예시는 사용자가 클러스터를 만들고 클러스터 생성 중에 태그를 추가할 수 있도록 허용하는 정책입니다. 사용자는 기존 리소스에 태그를 지정할 수 없습니다(ecs:TagResource 작업을 직접 호출할 수 없어요).
{
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecs:CreateCluster"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ecs:TagResource"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"ecs:CreateAction": [
"CreateCluster",
"CreateCapacityProvider",
"CreateService",
"CreateTaskSet",
"RegisterContainerInstance",
"RegisterTaskDefinition",
"RunTask",
"StartTask"
]
}
}
}
]
}
ecs:TagResource 작업은 리소스 생성 작업 중에 태그가 적용될 때만 평가돼요. 따라서 리소스를 만들 권한이 있는 사용자(태깅 조건이 없다고 가정)는 요청에 태그가 지정되지 않으면 ecs:TagResource 작업을 사용할 권한이 필요하지 않습니다. 그러나 사용자가 태그와 함께 리소스를 만들려고 하면, 사용자에게 ecs:TagResource 작업을 사용할 권한이 없다면 요청이 실패해요.
Amazon ECS가 특정 태그에 대한 액세스를 제어하는 방법
IAM 정책의 Condition 요소에 추가 조건을 사용해 리소스에 적용할 수 있는 태그 키와 값을 제어할 수 있어요.
앞선 섹션의 예시와 함께 사용할 수 있는 조건 키는 다음과 같습니다:
aws:RequestTag— 특정 태그 키 또는 태그 키·값 조합이 요청에 있어야 함을 나타냅니다. 요청에 다른 태그도 지정할 수 있어요.StringEquals조건 연산자와 함께 사용해 특정 태그 키·값 조합을 적용합니다. 예를 들어cost-center = cc123태그를 적용하려면:
"StringEquals": { "aws:RequestTag/cost-center": "cc123" }
StringLike조건 연산자와 함께 사용해 요청에 특정 태그 키를 적용합니다. 예를 들어purpose태그 키를 적용하려면:
"StringLike": { "aws:RequestTag/purpose": "*" }
aws:TagKeys— 요청에 사용되는 태그 키를 강제합니다.ForAllValues수정자와 함께 사용해 요청에 제공된 경우 특정 태그 키를 강제합니다(요청에 태그가 지정되면 특정 태그 키만 허용되고 다른 태그는 허용되지 않습니다). 예를 들어environment또는cost-center태그 키가 허용됩니다:
"ForAllValues:StringEquals": { "aws:TagKeys": ["environment","cost-center"] }
ForAnyValue수정자와 함께 사용해 요청에 지정된 태그 키 중 하나 이상이 있어야 함을 강제합니다. 예를 들어 요청에environment또는webserver태그 키 중 하나 이상이 있어야 합니다:
"ForAnyValue:StringEquals": { "aws:TagKeys": ["environment","webserver"] }
이 조건 키는 태깅을 지원하는 리소스 생성 작업과 ecs:TagResource 작업 모두에 적용할 수 있어요. Amazon ECS API 작업이 태깅을 지원하는지 알아보려면 Amazon ECS의 작업, 리소스, 조건 키(Actions, resources, and condition keys for Amazon ECS)를 참고하세요.
리소스를 만들 때 사용자가 태그를 지정하도록 강제하려면 리소스 생성 작업에서 aws:RequestTag 조건 키 또는 ForAnyValue 수정자가 있는 aws:TagKeys 조건 키를 사용해야 해요. 사용자가 리소스 생성 작업에 태그를 지정하지 않으면 ecs:TagResource 작업은 평가되지 않습니다.
조건의 경우 조건 키는 대소문자를 구분하지 않고 조건 값은 대소문자를 구분해요. 따라서 태그 키의 대소문자 구분을 강제하려면 태그 키가 조건의 값으로 지정되는 aws:TagKeys 조건 키를 사용하세요.
다중 값 조건에 대한 자세한 내용은 IAM 사용자 가이드의 여러 컨텍스트 키 또는 값이 있는 조건(Conditions with multiple context keys or values)을 참고하세요.