Amazon Elastic Compute Cloud
Linux 인스턴스용 사용 설명서

Amazon EC2 API 작업에 지원되는 리소스 수준 권한

리소스 수준 권한은 사용자가 작업을 수행할 수 있는 리소스를 지정할 수 있는 기능입니다. Amazon EC2는 리소스 수준 권한을 부분적으로 지원합니다. 즉, 필요 조건을 지정하거나 사용 가능한 특정 리소스를 지정하여 사용자가 특정 Amazon EC2 작업을 사용할 수 있는지 여부를 제어할 수 있습니다. 예를 들어 사용자에게 인스턴스 시작 권한을 부여하면서 특정 유형 또는 특정 AMI만 사용하도록 제한할 수 있습니다.

Amazon EC2 API 작업이 리소스 수준 권한을 지원하지 않는 경우 사용자에게 작업 사용 권한을 부여할 때 정책 명령문의 리소스 요소를 *로 지정해야 합니다.

Amazon EC2 작업에 의해 생성되거나 수정된 리소스 및 IAM 정책 문에 사용할 수 있는 ARN 및 Amazon EC2 조건 키에 대한 자세한 내용은 IAM 사용 설명서에서 Amazon EC2에 대한 작업, 리소스 및 조건 키를 참조하십시오.

자세한 내용 및 예제 정책은 Amazon EC2 사용자 가이드Amazon EC2를 위한 IAM 정책을 참조하십시오.

태그 지정을 위한 리소스 수준 권한

일부 리소스 생성 Amazon EC2 API 작업에서는 리소스를 생성할 때 태그를 지정할 수 있습니다. 자세한 내용은 리소스에 태그 지정 단원을 참조하십시오.

사용자가 생성 시 리소스에 태그를 지정할 수 있으려면 리소스를 생성하는 작업을 사용할 권한이 있어야 합니다(예: ec2:RunInstances 또는 ec2:CreateVolume). 리소스 생성 작업에서 태그가 지정되면 Amazon은 ec2:CreateTags 작업에서 추가 권한 부여를 수행해 사용자에게 태그를 생성할 권한이 있는지 확인합니다. 따라서 사용자는 ec2:CreateTags 작업을 사용할 명시적 권한도 가지고 있어야 합니다.

ec2:CreateTags 작업의 경우, ec2:CreateAction 조건 키를 사용하여 태그 지정 권한을 리소스 생성 작업으로만 제한할 수 있습니다. 예를 들어 다음 정책은 사용자가 인스턴스를 시작하고 시작 도중 인스턴스와 볼륨에 임의의 태그를 적용하는 것을 허용합니다. 사용자는 기존 리소스에 태그를 지정할 수 없습니다(ec2:CreateTags 작업을 직접 호출할 수 없습니다).

{ "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account:*/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }

마찬가지로 다음 정책은 사용자가 볼륨을 생성하고 볼륨 생성 도중 볼륨에 임의의 태그를 적용하는 것을 허용합니다. 사용자는 기존 리소스에 태그를 지정할 수 없습니다(ec2:CreateTags 작업을 직접 호출할 수 없습니다).

{ "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateVolume" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account:*/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "CreateVolume" } } } ] }

ec2:CreateTags 작업은 리소스 생성 작업 도중 태그가 적용되는 경우에만 평가됩니다. 따라서 리소스를 생성할 권한이 있는 사용자(태그 지정 조건은 없다고 가정)는 요청에서 태그가 지정되지 않은 경우, ec2:CreateTags 작업을 사용할 권한이 필요하지 않습니다. 하지만 사용자가 태그를 사용하여 리소스 생성을 시도하는 경우, 사용자에게 ec2:CreateTags 작업을 사용할 권한이 없다면 요청은 실패합니다.

시작 템플릿에 태그가 제공되고 시작 템플릿이 ec2:CreateTags 작업에서 지정된 경우에는 ec2:RunInstances 작업도 평가가 됩니다. 정책에 대한 예는 시작 템플릿의 태그을 참조하십시오.

다음 조건 키를 사용하여 리소스에 적용되는 태그 키와 값을 제어할 수 있습니다.

  • 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"] }
    • 요청에서 지정된 태그 키 중 최소한 1개의 존재를 적용하려면 ForAnyValue 변경자와 함께 사용하십시오. 예를 들어 요청:에 태그 키 environment 또는 webserver 중 최소한 1개가 존재해야 합니다.

      "ForAnyValue:StringEquals": { "aws:TagKeys": ["environment","webserver"] }

이들 조건 키는 ec2:CreateTagsec2:DeleteTags 작업뿐 아니라 태그 지정을 지원하는 리소스 생성 작업에 적용될 수 있습니다.

사용자가 리소스를 생성할 때 강제로 태그를 지정하도록 하려면 리소스 생성 작업에서aws:RequestTag 조건 키 또는 aws:TagKeys 조건 키를 ForAnyValue 변경자와 함께 사용해야 합니다. 이때 사용자가 리소스 생성 시 태그를 지정하지 않으면 ec2:CreateTags 작업이 평가되지 않습니다.

조건의 경우 조건 키는 대소문자를 구분하지 않고 조건 값은 대소문자를 구분합니다. 따라서 태그 키의 대소문자 구별을 설정하려면 태그 키가 조건의 값으로 지정된 aws:TagKeys 조건 키를 사용합니다.

다중 값 조건에 대한 자세한 내용은 IAM 사용 설명서다중 키 값을 테스트하는 조건 생성 단원을 참조하십시오. 예제 IAM 정책은 AWS CLI 또는 AWS SDK 작업을 위한 정책 예제 단원을 참조하십시오.