IAM 정책 태그를 사용하여 EC2 인스턴스 또는 EBS 볼륨의 생성 방식을 제한하려면 어떻게 해야 하나요?

4분 분량
0

AWS Identity and Access Management(IAM) 사용자 또는 그룹이 새로운 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 시작할 수 있도록 액세스를 허용하고 싶습니다. 또한 IAM 사용자가 특정 태그를 적용하는 경우에만 새 Amazon Elastic Block Store(Amazon EBS) 볼륨을 생성할 수 있도록 액세스를 허용하고 싶습니다.

간략한 설명

리소스를 생성하는 API 호출의 일부로 EC2 인스턴스 및 EBS 볼륨에 대한 태그를 지정합니다. 이 원칙을 사용하면 IAM 정책에 조건을 적용하여 IAM 사용자가 특정 리소스에 태그를 지정하도록 요구할 수 있습니다. 다음 예제 정책에서는 사용자가 보안 그룹이나 키 페어를 생성할 수 없으므로 사용자는 기존 보안 그룹과 키 페어를 선택해야 합니다.

다음의 예제 IAM 정책을 통해 사용자는 아래와 같은 작업을 수행할 수 있습니다.

  • 태그 키와 값이 일치하는 EC2 인스턴스를 시작합니다.
  • 적어도 하나 이상의 태그와 값이 일치하는 EC2 인스턴스를 시작합니다.
  • 적어도 하나 이상의 태그 키가 일치하는 EC2 인스턴스를 시작합니다.
  • 지정된 목록의 태그만 있는 EC2 인스턴스를 시작합니다.

해결 방법

태그 키와 값이 일치하는 EC2 인스턴스를 시작합니다.

다음 예제 정책을 사용하면 ForAllValues 한정자를 사용하여 정책에 정의된 모든 태그를 적용하는 경우에만 사용자가 EC2 인스턴스를 시작하고 EBS 볼륨을 생성할 수 있습니다. 사용자가 정책에 포함되지 않은 태그를 적용할 경우 작업이 거부됩니다. 대소문자를 구분하려면 aws:TagKeys 조건을 사용하십시오.

참고: 예제 정책에서 key1value1을 수정하여 리소스에 적용되는 태그 및 값을 포함시킵니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowToDescribeAll",
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowRunInstances",
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [
        "arn:aws:ec2:*::image/*",
        "arn:aws:ec2:*::snapshot/*",
        "arn:aws:ec2:*:*:subnet/*",
        "arn:aws:ec2:*:*:network-interface/*",
        "arn:aws:ec2:*:*:security-group/*",
        "arn:aws:ec2:*:*:key-pair/*"
      ]
    },
    {
      "Sid": "AllowRunInstancesWithRestrictions",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateVolume",
        "ec2:RunInstances"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:volume/*",
        "arn:aws:ec2:*:*:instance/*",
        "arn:aws:ec2:*:*:network-interface/*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/key1": "value1",
          "aws:RequestTag/key2": "value2"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "key1",
            "key2"
          ]
        }
      }
    },
    {
      "Sid": "AllowCreateTagsOnlyLaunching",
      "Effect": "Allow",
      "Action": [
        "ec2:CreateTags"
      ],
      "Resource": [
        "arn:aws:ec2:*:*:volume/*",
        "arn:aws:ec2:*:*:instance/*",
        "arn:aws:ec2:*:*:network-interface/*"
      ],
      "Condition": {
        "StringEquals": {
          "ec2:CreateAction": [
            "RunInstances",
            "CreateVolume"
          ]
        }
      }
    }
  ]
}

중요: EC2 인스턴스를 성공적으로 시작하려면 이 정책에 일치하는 태그 키와 값이 포함되어 있어야 합니다. 키와 값 페어가 일치하지 않으면, "시작 실패(Launch Failed)" 오류 또는 비슷한 유형의 API 실패 메시지가 나타날 수 있습니다.

예시 결과

키/값결과
키1/값1 및 키2/값2허용
키1/값1거부
키1/값2거부
키와 값 없음거부

적어도 하나 이상의 태그와 값이 일치하는 EC2 인스턴스를 시작합니다.

다음 예에서는 하나 이상의 태그 키 이름이 key1이고 값이 value1인 경우 사용자가 EC2 인스턴스를 시작하고 EBS 볼륨을 생성할 수 있도록 AllowRunInstancesWithRestrictions 조건 블록을 교체합니다. RunInstances 요청에는 여러 태그를 추가할 수 있습니다.

"Condition": {
  "StringEquals": {
    "aws:RequestTag/key1": "value1"
  },
  "ForAnyValue:StringEquals": {
    "aws:TagKeys": [
      "key1"
    ]
  }
}

예시 결과

키/값결과
키1/값1 및 키2/값2허용
키1/값1허용
키1/값2거부
키와 값 없음거부

적어도 하나 이상의 태그 키가 일치하는 EC2 인스턴스를 시작합니다.

다음 정책 예에서는 하나 이상의 태그 키 이름이 key1인 경우 사용자가 EC2 인스턴스를 시작하고 EBS 볼륨을 생성할 수 있도록 AllowRunInstancesWithRestrictions 조건 블록을 교체합니다. key1 태그에는 특정 값이 필요하지 않으며 RunInstances 요청에는 여러 태그를 추가할 수 있습니다.

"Condition": {
  "ForAnyValue:StringEquals": {
    "aws:TagKeys": [
      "key1"
    ]
  }
}

예제 결과

키/값결과
키1/값1 및 키2/값2허용
키1/값1허용
키1/값2허용
키와 값 없음거부

지정된 목록의 태그만 있는 EC2 인스턴스를 시작합니다.

다음 예제 정책에서 AllowRunInstancesWithRestrictions 조건 블록을 교체하여 요청에 태그 키 key1key2가 제공된 경우에만 사용자가 EC2 인스턴스를 시작하고 EBS 볼륨을 생성할 수 있도록 허용합니다. 각 태그 키에는 특정 값이 필요하지 않으며 RunInstances 요청에 추가적인 태그를 추가할 수 없습니다.

"Condition": {
  "StringLike": {
      "aws:RequestTag/key1": "*",
      "aws:RequestTag/key2": "*"
  },
  "ForAllValues:StringEquals": {
    "aws:TagKeys": [
        "key1",
        "key2"
    ]
  }
}

참고: 모든 태그가 있는지 확인하려면 StringLike 조건이 필요합니다.

예시 결과

키/값결과
키1/모든 값 및 키2/모든 값허용
키1/모든 값거부
키2/모든 값거부
키 또는 값 없음거부
키1/모든 값, 키2/모든 값, 키3/모든 값거부

관련 정보

태그를 사용하여 Amazon EC2 리소스에 대한 액세스를 제어하는 IAM 정책을 생성하려면 어떻게 해야 하나요?

다수의 키 또는 값을 사용하는 조건 생성

IAM 자격 증명 기반 정책의 예

Amazon EC2 리소스에 태그 지정

Amazon EC2의 작업, 리소스 및 조건 키

AWS 공식
AWS 공식업데이트됨 2년 전
댓글 없음