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

3분 분량
0

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

간략한 설명

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

해결 방법

PrincipalTag 조건 키

aws:PrincipalTag 조건 키는 요청을 보내는 보안 주체에 첨부된 태그를 IAM 정책의 태그와 일치시키는 데 사용됩니다. PrincipalTag 키의 값은 요청의 보안 주체에 일치하는 태그 키가 있는 경우 해당 IAM 태그의 값과 비교됩니다.

다음 예시 IAM 정책은 Amazon Simple Storage Service(S3) 버킷에 대한 제한을 제공합니다. Amazon S3 PutObject 작업으로 인해 제목이 “Product-Manager”인 사용자를 제외한 모든 사용자의 버킷 권한이 거부되었습니다.

{
  "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 태그가 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 Elastic Block Store(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"
          ]
        }
      }
    }
  ]
}

관련 정보

IAM 자습서: 태그를 기반으로 AWS 리소스에 액세스할 수 있는 권한 정의

AWS 요청 중 액세스 제어

AWS 공식
AWS 공식업데이트됨 일 년 전