내용으로 건너뛰기

PrincipalTag, ResourceTag, RequestTag 및 TagKeys 조건 키는 IAM 정책에서 액세스를 어떻게 제어합니까?

3분 분량
0

AWS Identity and Access Management(AWS IAM) 정책에서 PrincipalTag, ResourceTag, RequestTag 및 TagKeys 태그 기반 조건 키를 사용하여 AWS 리소스에 대한 액세스를 제어하려고 합니다.

해결 방법

다음 IAM 예시 정책은 조건 키를 사용하여 태그가 있는 AWS 리소스에 대한 액세스를 제어합니다.

완료할 수 있는 API 작업을 결정하려면 사용 중인 서비스의 API 설명서를 검토하는 것이 좋습니다.

PrincipalTag 조건 키

aws:PrincipalTag/tag-key 조건 키를 사용하여 다음 태그를 비교하십시오.

  • 요청을 보내는 주체에 연결된 태그
  • IAM 정책에 지정된 태그

다음 예시에서 Amazon Simple Storage Service(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 리소스에 대한 액세스 제어를 참조하십시오.

aws:ResourceTag/tag-key 조건 키는 글로벌 버전 aws:ResourceTag 및 AWS 서비스(예: ec2:ResourceTag)와 함께 사용할 수 있습니다.

다음 예시에서 IAM 정책은 사용자가 테스트 환경에 있는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작, 중지 및 종료하도록 허용합니다.

{
  "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 조건 키

aws:RequestTag/tag-key 조건 키를 사용하여 사용자 요청의 키-값 쌍을 IAM 정책에 지정된 태그 쌍과 비교할 수 있습니다. 이 조건 키를 사용하여 리소스를 만드는 작업을 제어하고 이러한 작업 중에 태그를 검증할 수 있습니다.

다음 예시에서 IAM 정책은 Dev, Prod 또는 QA 값을 가진 Env 태그를 포함하는 경우에만 사용자가 Amazon Elastic Block Store(Amazon EBS) 볼륨을 만들도록 허용합니다.

{
  "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 정책에 지정된 태그 키와 비교할 수 있습니다. 이 조건 키는 리소스에 연결된 태그 키의 유효성을 검사합니다.

요청에 여러 키-값 쌍이 포함된 경우 ForAllValues 또는 ForAnyValue 집합 연산자를 사용하여 이러한 값을 비교하십시오.

다음 예시에서 IAM 정책은 AWS 리소스의 태그 만들기를 제한합니다. 사용자가 새 Amazon EBS 볼륨을 만들 때 EnvCostCenter 태그만 만들도록 허용합니다. 사용자는 ForAllValues 집합 연산자와 **** 조건 키를 사용하여 필요한 태그를 리소스에 연결할 수 있습니다. 정책은 리소스를 만드는 동안 이러한 태그 키를 선택 사항으로 만들고 다른 키-값 쌍을 사용한 태그 만들기를 방지합니다.

{
  "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 공식업데이트됨 6달 전