

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon EC2 Auto Scaling 자격 증명 기반 정책 예제
<a name="security_iam_id-based-policy-examples"></a>

기본적으로의 새 사용자는 어떤 작업도 수행할 권한이 AWS 계정 없습니다. IAM 관리자는 Amazon EC2 Auto Scaling API 작업을 수행할 수 있는 IAM 자격 증명(예: 사용자 또는 역할) 권한을 부여하는 IAM 정책을 생성하고 할당해야 합니다.

이러한 예제 JSON 정책 문서를 사용하여 IAM 정책을 생성하는 방법을 알아보려면 *IAM 사용 설명서*의 [JSON 탭에서 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor)을 참조하십시오.

다음은 권한 정책의 예입니다.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
          "autoscaling:CreateAutoScalingGroup",
          "autoscaling:UpdateAutoScalingGroup",
          "autoscaling:DeleteAutoScalingGroup"
      ],
      "Resource": "*",
      "Condition": {
          "StringEquals": { "autoscaling:ResourceTag/{{purpose}}": "{{testing}}" }
      }
   },
   {
      "Effect": "Allow",
      "Action": "autoscaling:Describe*",
      "Resource": "*"
   }]
}
```

------

이 샘플 정책은 Auto Scaling 그룹이 `purpose=testing` 태그를 사용하는 경우에만 그룹을 생성, 업데이트, 삭제할 수 있는 권한을 부여합니다. `Describe` 작업은 리소스 수준 권한을 지원하지 않기 때문에 조건 없이 별도의 명령문에 지정해야 합니다. 시작 템플릿으로 인스턴스를 시작하려면 사용자에게도 `ec2:RunInstances` 권한이 있어야 합니다. 자세한 내용은 [Auto Scaling 그룹에서 Amazon EC2 시작 템플릿 사용량 제어](ec2-auto-scaling-launch-template-permissions.md)(을)를 참조하세요.

**참고**  
IAM 자격 증명(사용자 또는 역할)이 Amazon EC2 Auto Scaling 작업을 수행할 수 있는 권한을 허용하거나 거부하는 고유한 사용자 지정 IAM 정책을 생성할 수 있습니다. 지정된 권한이 필요한 IAM 자격 증명에 이러한 사용자 지정 정책을 연결할 수 있습니다. 다음 예제에서는 몇 가지 일반적인 사용 사례의 권한을 보여 줍니다.  
일부 Amazon EC2 Auto Scaling API 작업의 경우 작업을 통해 생성하거나 수정할 수 있는 특정 Auto Scaling 그룹을 정책에 포함할 수 있습니다. 개별 Auto Scaling 그룹 ARN을 지정하여 이러한 작업에 대한 대상 리소스를 제한할 수 있습니다. 그러나, 특정 태그가 있는 Auto Scaling 그룹에서 작업을 허용(또는 거부)하는 태그 기반 정책을 사용하는 것이 좋습니다.

**Topics**
+ [생성할 수 있는 Auto Scaling 그룹 크기 제어](#policy-example-min-max-size)
+ [사용할 수 있는 태그 키 및 태그 값 제어](#policy-example-tags)
+ [삭제할 수 있는 Auto Scaling 그룹 제어](#policy-example-delete-auto-scaling-group)
+ [삭제할 수 있는 조정 정책 제어](#policy-example-delete-policy)
+ [인스턴스 새로 고침 작업에 대한 액세스 제어](#policy-example-instance-refresh-policy)
+ [서비스 연결 역할 생성](#ec2-auto-scaling-slr-permissions)
+ [전달할 수 있는 서비스 연결 역할 제한(PassRole 사용)](#policy-example-pass-role)

## 생성할 수 있는 Auto Scaling 그룹 크기 제어
<a name="policy-example-min-max-size"></a>

다음 정책은 사용자에게 `environment=development` 태그가 있는 모든 Auto Scaling 그룹을 생성하고 업데이트할 수 있는 권한을 부여합니다. 단, 요청자가 최소 크기를 **1**보다 작게 지정하거나 최대 크기를 **10**보다 크게 지정하지 않아야 합니다. 가능할 때마다 태그를 사용하여 계정의 Auto Scaling 그룹에 대한 액세스 제어를 도울 수 있습니다.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
          "autoscaling:CreateAutoScalingGroup",
          "autoscaling:UpdateAutoScalingGroup"
      ],
      "Resource": "*",
      "Condition": {
          "StringEquals": { "autoscaling:ResourceTag/{{environment}}": "{{development}}" }, 
          "NumericGreaterThanEqualsIfExists": { "autoscaling:MinSize": {{1}} },
          "NumericLessThanEqualsIfExists": { "autoscaling:MaxSize": {{10}} }
      }
   }]
}
```

------

또는 태그를 사용하여 Auto Scaling 그룹에 대한 액세스를 제어하고 있지 않은 경우, ARN을 사용하여 IAM 정책이 적용되는 Auto Scaling 그룹을 식별할 수 있습니다.

Auto Scaling 그룹에는 다음 ARN이 있습니다.

```
"Resource": "arn:aws:autoscaling:{{region}}:{{account-id}}:autoScalingGroup:*:autoScalingGroupName/{{my-asg}}"
```

여러 ARN을 목록에 포함시켜 지정할 수도 있습니다. `Resource` 요소에 Amazon EC2 Auto Scaling 리소스의 ARN을 지정하는 방법에 대한 자세한 내용은 [Amazon EC2 Auto Scaling의 정책 리소스](control-access-using-iam.md#security_iam_service-with-iam-id-based-policies-resources)(을)를 참조하세요.

## 사용할 수 있는 태그 키 및 태그 값 제어
<a name="policy-example-tags"></a>

IAM 정책에서 조건을 사용하여 Auto Scaling 그룹에 적용할 수 있는 태그 키와 태그 값을 제어할 수 있습니다. 요청자가 특정 태그를 지정한 경우에만 Auto Scaling 그룹을 생성하거나 태그를 지정할 수 있는 권한을 부여하려면 `aws:RequestTag` 조건 키를 사용하세요. 특정 태그 키만 허용하려면 `aws:TagKeys` 조건 키와 `ForAllValues` 변경자를 사용합니다.

다음 정책은 요청자에게 요청에 `environment` 키를 포함하는 태그를 지정하도록 요구합니다. `"?*"` 값은 태그 키에 대한 일부 값이 있음을 나타냅니다. 와일드카드를 사용하려면 `StringLike` 조건 연산자를 사용해야 합니다.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
          "autoscaling:CreateAutoScalingGroup",
          "autoscaling:CreateOrUpdateTags"
      ],
      "Resource": "*",
      "Condition": {
          "StringLike": { "aws:RequestTag/{{environment}}": "{{?*}}" }
      }
   }]
}
```

------

다음 정책은 요청자가 `purpose=webserver` 및 `cost-center=cc123` 태그가 있는 Auto Scaling 그룹에만 태그를 지정할 수 있도록 지정하고 `purpose` 및 `cost-center` 태그만 허용합니다(다른 태그는 지정할 수 없음).

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
          "autoscaling:CreateAutoScalingGroup",
          "autoscaling:CreateOrUpdateTags"
      ],
      "Resource": "*",
      "Condition": {
          "StringEquals": { 
              "aws:RequestTag/{{purpose}}": "{{webserver}}",
              "aws:RequestTag/{{cost-center}}": "{{cc123}}"
          },
          "ForAllValues:StringEquals": { "aws:TagKeys": ["{{purpose}}", "{{cost-center}}"] }
      }
   }]
}
```

------

다음 정책은 요청자에게 요청에 태그를 한 개 이상 지정하도록 요구하고, `cost-center` 키와 `owner` 키만 허용합니다.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
          "autoscaling:CreateAutoScalingGroup",
          "autoscaling:CreateOrUpdateTags"
      ],
      "Resource": "*",
      "Condition": {
          "ForAnyValue:StringEquals": { "aws:TagKeys": ["{{cost-center}}", "{{owner}}"] }
      }
   }]
}
```

------

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

## 삭제할 수 있는 Auto Scaling 그룹 제어
<a name="policy-example-delete-auto-scaling-group"></a>

다음 정책은 그룹에 `environment=development` 태그가 있는 경우에만 Auto Scaling 그룹의 삭제를 허용합니다.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": "autoscaling:DeleteAutoScalingGroup",
      "Resource": "*",
      "Condition": {
          "StringEquals": { "aws:ResourceTag/{{environment}}": "{{development}}" }
      }
   }]
}
```

------

다음 정책은 `autoscaling:ForceDelete` 조건 키를 사용하여 `DeleteAutoScalingGroup` API 작업에 대한 액세스를 제어합니다. 이렇게 하면 특정 사용자가 그룹을 삭제할 때 Auto Scaling 그룹 내의 모든 인스턴스를 종료하는 강제 삭제 작업을 사용하지 못할 수 있습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Deny",
        "Action": "autoscaling:DeleteAutoScalingGroup",
        "Resource": "*",
        "Condition": {
            "Bool": {
                "autoscaling:ForceDelete": "true"
            }
        }
    }]
}
```

------

또는 조건 키를 사용하여 Auto Scaling 그룹에 대한 액세스를 제어하고 있지 않은 경우, `Resource` 요소에서 리소스의 ARN을 지정하여 대신 액세스를 제어할 수 있습니다.

다음 정책은 사용자에게 `DeleteAutoScalingGroup` API 작업을 사용할 수 있는 권한을 부여하지만 이름이 로 시작하는 Auto Scaling 그룹에만 적용됩니다`devteam-`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "autoscaling:DeleteAutoScalingGroup",
            "Resource": "arn:aws:autoscaling:{{us-east-1}}:{{111122223333}}:autoScalingGroup:*:autoScalingGroupName/{{devteam-}}*"
        }
    ]
}
```

------

여러 ARN을 목록에 포함시켜 지정할 수도 있습니다. UUID를 포함하면 특정 Auto Scaling 그룹에 대한 액세스 권한을 부여할 수 있습니다. 새 그룹의 UUID는 동일한 이름을 가진 삭제된 그룹의 UUID와 다릅니다.

```
"Resource": [
    "arn:aws:autoscaling:{{region}}:{{account-id}}:autoScalingGroup:{{uuid}}:autoScalingGroupName/{{devteam-1}}",
    "arn:aws:autoscaling:{{region}}:{{account-id}}:autoScalingGroup:{{uuid}}:autoScalingGroupName/{{devteam-2}}",
    "arn:aws:autoscaling:{{region}}:{{account-id}}:autoScalingGroup:{{uuid}}:autoScalingGroupName/{{devteam-3}}"
]
```

## 삭제할 수 있는 조정 정책 제어
<a name="policy-example-delete-policy"></a>

다음 정책은 `DeletePolicy` 작업을 사용하여 조정 정책을 삭제할 수 있는 권한을 부여합니다. 그러나, 작업 대상 Auto Scaling 그룹에 `environment=production` 태그가 있는 경우 작업을 거부합니다. 가능할 때마다 태그를 사용하여 계정의 Auto Scaling 그룹에 대한 액세스 제어를 도울 수 있습니다.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": "autoscaling:DeletePolicy",
      "Resource": "*"
   },
   {
      "Effect": "Deny",
      "Action": "autoscaling:DeletePolicy",
      "Resource": "*",
      "Condition": {
          "StringEquals": { "autoscaling:ResourceTag/{{environment}}": "{{production}}" }
      }
   }]
}
```

------

## 인스턴스 새로 고침 작업에 대한 액세스 제어
<a name="policy-example-instance-refresh-policy"></a>

다음 정책은 작업 대상 Auto Scaling 그룹에 `environment=testing` 태그가 있는 경우에만 인스턴스 새로 고침을 시작, 롤백, 취소할 수 있는 권한을 부여합니다. `Describe` 작업은 리소스 수준 권한을 지원하지 않기 때문에 조건 없이 별도의 명령문에 지정해야 합니다.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": [
          "autoscaling:StartInstanceRefresh",
          "autoscaling:CancelInstanceRefresh",
          "autoscaling:RollbackInstanceRefresh"
      ],
      "Resource": "*",
      "Condition": {
          "StringEquals": { "autoscaling:ResourceTag/{{environment}}": "{{testing}}" }
      }
   },
   {
      "Effect": "Allow",
      "Action": "autoscaling:DescribeInstanceRefreshes",
      "Resource": "*"
   }]
}
```

------

`StartInstanceRefresh` 호출에서 원하는 구성을 지정하려면 사용자에게 다음과 같은 몇 가지 관련 권한이 필요할 수도 있습니다.
+ **ec2:RunInstances** - 시작 템플릿을 사용하여 EC2 인스턴스를 시작하려면 IAM 정책에서 사용자에게 `ec2:RunInstances` 권한이 있어야 합니다. 자세한 내용은 [Auto Scaling 그룹에서 Amazon EC2 시작 템플릿 사용량 제어](ec2-auto-scaling-launch-template-permissions.md) 단원을 참조하십시오.
+ **ec2:CreateTages** - 생성 시 인스턴스 및 볼륨에 태그를 추가하는 시작 템플릿에서 EC2 인스턴스를 시작하려면 IAM 정책에서 사용자에게 `ec2:CreateTags` 권한이 있어야 합니다. 자세한 내용은 [인스턴스 및 볼륨에 태그를 지정하려면 필요한 권한](ec2-auto-scaling-launch-template-permissions.md#policy-example-launch-template-createtags) 단원을 참조하십시오.
+ **iam:PassRole** - 인스턴스 프로파일(IAM 역할의 컨테이너)이 포함된 시작 템플릿에서 EC2 인스턴스를 시작하려면 IAM 정책에서 사용자에게 `iam:PassRole` 권한도 있어야 합니다. 자세한 내용과 예 IAM 정책은 [Amazon EC2 인스턴스에서 실행되는 애플리케이션에 대한 IAM 역할](us-iam-role.md) 섹션을 참조하세요.
+ **ssm:GetParameters** - AWS Systems Manager 파라미터를 사용하는 시작 템플릿에서 EC2 인스턴스를 시작하려면 사용자에게 IAM 정책에 대한 `ssm:GetParameters` 권한도 있어야 합니다. 자세한 내용은 [시작 템플릿에서 AMI IDs 대신 AWS Systems Manager 파라미터 사용](using-systems-manager-parameters.md) 단원을 참조하십시오.

## 서비스 연결 역할 생성
<a name="ec2-auto-scaling-slr-permissions"></a>

Amazon EC2 Auto Scaling에는의 사용자가 Amazon EC2 Auto Scaling API 작업을 처음 AWS 계정 호출할 때 서비스 연결 역할을 생성할 수 있는 권한이 필요합니다. 서비스 연결 역할이 아직 존재하지 않으면 Amazon EC2 Auto Scaling에서 해당 역할을 계정에 생성합니다. 서비스 연결 역할은 사용자를 대신하여 다른를 호출할 수 있도록 Amazon EC2 Auto Scaling AWS 서비스 에 권한을 부여합니다.

역할 자동 생성이 성공하려면 사용자가 `iam:CreateServiceLinkedRole` 작업에 대한 권한을 보유해야 합니다.

```
"Action": "iam:CreateServiceLinkedRole"
```

다음은 사용자가 Amazon EC2 Auto Scaling을 위한 Amazon EC2 Auto Scaling 서비스 연결 역할을 생성할 수 있도록 허용하는 권한 정책의 예입니다.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [{
      "Effect": "Allow",
      "Action": "iam:CreateServiceLinkedRole",
      "Resource": "arn:aws:iam::*:role/aws-service-role/autoscaling.amazonaws.com/{{AWSServiceRoleForAutoScaling}}",
      "Condition": {
          "StringLike": { "iam:AWSServiceName":"{{autoscaling.amazonaws.com}}" }
      }
   }]
}
```

------

## 전달할 수 있는 서비스 연결 역할 제한(PassRole 사용)
<a name="policy-example-pass-role"></a>

Auto Scaling 그룹을 만들거나 업데이트하고 요청에 사용자 지정 접미사 서비스 연결 역할을 지정하는 사용자에게는 `iam:PassRole` 권한이 필요합니다.

서로 다른 서비스 연결 역할에 서로 다른 키에 대한 액세스 권한을 부여하면 `iam:PassRole` 권한을 사용하여 AWS KMS 고객 관리형 키의 보안을 보호할 수 있습니다. 조직의 필요에 따라 개발 팀을 위한 키, 품질 보증 팀을 위한 키 및 재무 팀을 위한 키가 있을 수 있습니다. 먼저 필수 키에 액세스할 수 있는 서비스 연결 역할을 생성합니다(예: 이름이 **AWSServiceRoleForAutoScaling\_devteamkeyaccess**인 서비스 연결 역할). 그런 다음, 사용자 또는 역할과 같은 IAM 자격 증명에 정책을 연결합니다.

다음 정책은 이름이 `devteam-`로 시작하는 모든 Auto Scaling 그룹에 ****AWSServiceRoleForAutoScaling\_devteamkeyaccess**** 역할을 전달할 수 있는 권한을 부여합니다. Auto Scaling 그룹을 생성하는 IAM 자격 증명이 다른 서비스 연결 역할을 지정하려고 하면 오류가 발생합니다. 서비스 연결 역할을 지정하지 않으려는 경우 기본 **AWSServiceRoleForAutoScaling** 역할이 대신 사용됩니다.

사용자 지정 접미사 서비스 연결 역할에 대한 자세한 정보는 [Amazon EC2 Auto Scaling의 서비스 연결 역할](autoscaling-service-linked-role.md)(을)를 참조하세요.