PrincipalTag, ResourceTag, RequestTag 및 TagKeys 조건 키를 사용하여 태그 기반 제한에 대한 IAM 정책을 생성하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 2월 9일

태그 기반 제한에 대한 AWS Identity and Access Management(IAM) 역할을 생성하려고 합니다. PrincipalTag, ResourceTag, RequestTag 및 TagKeys 조건 키는 어떻게 사용합니까?

간략한 설명

다음 IAM 예제 정책을 사용하여 사용 사례에 대한 조건 키로 태그 기반 제한을 생성합니다.

해결 방법

PrincipalTag 조건 키

aws:PrincipalTag 조건 키는 요청 주체에 부착된 태그를 IAM 정책의 태그와 일치시키는 데 사용됩니다. PrincipalTag 키의 값은 요청 주체가 있는 경우 IAM 태그의 값과 일치하는 태그 키의 값과 함께 입력합니다.

다음 예제 IAM 정책은 Amazon S3 (단순 스토리지 서비스) 버킷에 대한 제한을 제공합니다. Amazon S3 PutObject 작업에서 제목이 “제품-관리자”인 사용자를 제외한 모든 사용자에게 버킷에 대한 권한을 거부했습니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DenyAllButProductManagers",
            "Effect": "Deny",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::productionbucket/*"
            ],
            "Condition": {
                "StringNotEquals": {
                    "aws:PrincipalTag/job-title": "Product-Manager"
                }
            }
        }
    ]
}

ResourceTag 조건 키

AWS:ResourceTag/tag-key 조건 키는 IAM 정책에 지정된 태그 키-값 쌍을 AWS 리소스에 연결된 키-값 쌍과 비교하는 데 사용됩니다. 자세한 내용은 AWS 리소스에 대한 액세스 제어를 참조하십시오.

IAM 정책 평가 중에 ResourceTag 키의 값은 AWS 리소스가 있는 경우 이에 대해 일치하는 키-값 쌍과 함께 IAM 태그 값과 함께 입력됩니다. 이 조건 키는 글로벌 버전 aws:ResourceTagec2:ResourceTag와 같은 AWS 서비스와 함께 사용할 수 있습니다. 자세한 내용은 AWS 서비스에 대한 작업, 리소스 및 조건 컨텍스트 키를 참조하십시오.

다음 예제 IAM 정책은 사용자가 “테스트” 환경에 있는 인스턴스를 시작, 중지 및 종료할 수 있도록 허용합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowOnlyForTestEnvironment",
            "Effect": "Allow",
            "Action": [
                "ec2:TerminateInstances",
                "ec2:StartInstances",
                "ec2:StopInstances"
            ],
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringLike": {
                    "ec2:ResourceTag/Env": "test"
                }
            }
        }
    ]
}

RequestTag 조건 키

사용자 요청에 전달된 키-값 쌍을 IAM 정책에 지정된 태그 쌍과 비교하는 데 사용되는 aws:RequestTag/tag-key 조건 키입니다. 조건 키는 리소스 또는 리소스의 태그 생성 작업에 사용될 수 있으며, 태그 값을 확인합니다.

다음 IAM 정책 예제는 Amazon EBS 볼륨 생성 시 사용자에게 “Dev”, “Prod” 또는 “QA” 값을 갖는 특정 태그 “Env”를 생성하도록 강제합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowCreateVolumeWithEnvTag",
            "Effect": "Allow",
            "Action": "ec2:CreateVolume",
            "Resource": "arn:aws:ec2:*:*:volume/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/Env": [
                        "Dev",
                        "Prod",
                        "QA"
                    ]
                }
            }
        }
    ]
}

TagKeys 조건 키

aws:TagKeys 조건 키는 요청의 태그 키를 IAM 정책에 지정된 키와 비교하는 데 사용됩니다. TagKeys 키의 값은 AWS 리소스 요청의 태그 목록과 함께 입력됩니다. TagKeys 조건 키는 리소스에 연결된 태그-키의 유효성을 검사하는 데 사용됩니다.

요청에서 여러 태그 키-값 쌍을 정의할 수 있으므로 요청은 여러 값을 포함할 수 있습니다. 이러한 값은 ForAllValues 또는 ForAnyValue 집합 연산자를 사용하여 비교할 수 있습니다.

다음 예제 정책은 AWS 리소스에서 생성되는 태그를 제한합니다. “Env” 및 “CostCenter” 태그는 사용자가 새 Amazon EBS 볼륨으로 생성할 수 있는 유일한 태그 키입니다. ForAllValues 집합 연산자를 aws:TagKeys와 함께 사용하면 사용자가 AWS 리소스에 필요한 태그만 연결하도록 제한됩니다. 이러면 사용자가 리소스 생성 요청에서 이러한 태그 키를 제공해야 하는 것은 아니지만, 사용자는 다른 키-값 쌍으로 태그를 만들 수 없습니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "ec2:CreateVolume",
            "Resource": "arn:aws:ec2:*:*:volume/*",
            "Condition": {
                "ForAllValues:StringEquals": {
                    "aws:TagKeys": [
                        "Env",
                        "CostCenter"
                    ]
                }
            }
        }
    ]
}