

# Amazon EC2 인스턴스에 대한 보안 그룹 변경
<a name="changing-security-group"></a>

Amazon EC2 인스턴스를 시작할 때 해당 인스턴스에 대해 보안 그룹을 지정할 수 있습니다. 인스턴스를 시작한 이후에는 보안 그룹을 추가하거나 제거할 수 없습니다. 또한 언제든지 연결된 보안 그룹에 대한 보안 그룹 규칙을 추가, 제거 또는 편집할 수 있습니다.

보안 그룹은 네트워크 인터페이스와 연결됩니다. 보안 그룹을 추가하거나 제거하면 기본 네트워크 인터페이스와 연결된 보안 그룹이 변경됩니다. 보조 네트워크 인터페이스와 연결된 보안 그룹을 변경할 수도 있습니다. 자세한 내용은 [네트워크 인터페이스 속성 수정](modify-network-interface-attributes.md) 섹션을 참조하세요.

**Topics**
+ [보안 그룹 추가 또는 제거](#add-remove-instance-security-groups)
+ [보안 그룹 규칙 구성](#add-remove-security-group-rules)

## 보안 그룹 추가 또는 제거
<a name="add-remove-instance-security-groups"></a>

인스턴스를 시작한 후 연결된 보안 그룹 목록에서 보안 그룹을 추가하거나 제거할 수 있습니다. 여러 보안 그룹을 인스턴스와 연결할 경우 각 보안 그룹의 규칙이 유효하게 결합된 단일 규칙 세트가 생성됩니다. Amazon EC2는 이 규칙 세트를 사용하여 트래픽을 허용할지 여부를 결정합니다.

**요구 사항**
+ 인스턴스는 `running` 또는 `stopped` 상태여야 합니다.

------
#### [ Console ]

**인스턴스에 대한 보안 그룹 변경**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. 인스턴스를 선택한 다음 [**작업(Actions)**], [**보안(Security)**], [**보안 그룹 변경(Change security groups)**]을 선택합니다.

1. **연결된 보안 그룹**에서는 목록에서 보안 그룹을 선택하고 **보안 그룹 추가**를 선택합니다.

   이미 연결된 보안 그룹을 제거하려면 보안 그룹의 **제거**를 선택합니다.

1. **저장**을 선택합니다.

------
#### [ AWS CLI ]

**인스턴스에 대한 보안 그룹 변경**  
다음 [modify-instance-attribute](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html) 명령을 사용합니다.

```
aws ec2 modify-instance-attribute \
    --instance-id i-1234567890abcdef0 \
    --groups sg-1234567890abcdef0
```

------
#### [ PowerShell ]

**인스턴스에 대한 보안 그룹 변경**  
[Edit-EC2InstanceAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceAttribute.html) cmdlet을 사용합니다.

```
Edit-EC2InstanceAttribute `
    -InstanceId i-1234567890abcdef0 `
    -Group sg-1234567890abcdef0
```

------

## 보안 그룹 규칙 구성
<a name="add-remove-security-group-rules"></a>

보안 그룹을 생성한 후 해당 보안 그룹 규칙을 추가, 업데이트 및 삭제할 수 있습니다. 규칙을 추가, 업데이트 또는 삭제하면 변경 내용이 보안 그룹과 연결된 모든 리소스에 자동으로 적용됩니다.

보안 그룹에 추가할 수 있는 규칙의 예제는 [다양한 사용 사례에 대한 보안 그룹 규칙](security-group-rules-reference.md)의 내용을 참조하세요.

**필수 권한**  
시작하기 전에 필요한 권한이 있는지 확인하세요. 자세한 내용은 [예: 보안 그룹 작업](iam-policies-ec2-console.md#ex-security-groups) 섹션을 참조하세요.

**포트 및 프로토콜**
+ 콘솔에서 사전 정의된 유형을 선택하면 **프로토콜** 및 **포트 범위**가 지정됩니다. 포트 범위를 입력하려면 **사용자 지정 TCP** 또는 **사용자 지정 UDP** 중 하나를 선택해야 합니다.
+ AWS CLI에서 `--protocol` 및 `--port` 옵션을 사용하여 단일 포트가 있는 단일 규칙을 추가할 수 있습니다. 여러 규칙 또는 포트 범위가 있는 규칙을 추가하려면 `--ip-permissions` 옵션을 대신 사용합니다.

**소스 및 대상**
+ 콘솔에서 다음을 인바운드 규칙의 소스 또는 아웃바운드 규칙의 대상으로 지정할 수 있습니다.
  + **사용자 지정** - IPv4 CIDR 블록, IPv6 CIDR 블록, 보안 그룹 또는 접두사 목록.
  + **Anywhere-IPv4** – 0.0.0.0/0 IPv4 CIDR 블록.
  + **Anywhere-IPv6** – ::/0 IPv6 CIDR 블록.
  + **내 IP**: 로컬 컴퓨터의 퍼블릭 IPv4 주소.
+ AWS CLI에서 `--cidr` 옵션을 사용하여 IPv4 CIDR 블록을 지정하거나 `--source-group` 옵션을 사용하여 보안 그룹을 지정할 수 있습니다. 접두사 목록 또는 IPv6 CIDR 블록을 지정하려면 `--ip-permissions` 옵션을 사용합니다.

**주의**  
포트 22(SSH) 또는 3389(RDP)에 대한 인바운드 규칙을 추가하는 경우 인스턴스에 액세스해야 하는 특정 IP 주소 또는 주소 범위만 승인하는 것이 좋습니다. **Anywhere-IPv4**를 선택하면 모든 IPv4 주소의 트래픽을 허용하고 지정된 프로토콜을 사용하여 인스턴스에 액세스합니다. **Anywhere-IPv6**를 선택하면 모든 IPv6 주소의 트래픽을 허용하고 지정된 프로토콜을 사용하여 인스턴스에 액세스합니다.

------
#### [ Console ]

**보안 그룹 규칙을 구성하려면**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **보안 그룹**을 선택합니다.

1. 보안 그룹을 선택합니다.

1. 인바운드 규칙을 편집하려면 **작업** 또는 **인바운드 규칙** 탭에서 **인바운드 규칙 편집**을 선택합니다.

   1. 규칙을 추가하려면 **규칙 추가**를 선택한 다음 규칙의 유형, 프로토콜, 포트 및 소스를 입력합니다.

      유형이 TCP 또는 UDP인 경우 허용할 포트 범위를 입력해야 합니다. 사용자 지정 ICMP의 경우 **프로토콜(Protocol)**에서 ICMP 유형 이름을 선택하고, 해당되는 경우 **포트 범위(Port range)**에서 코드 이름을 선택해야 합니다. 다른 유형에 대해 프로토콜과 포트 범위가 구성됩니다.

   1. 규칙을 업데이트하려면 필요에 따라 프로토콜, 설명 및 소스를 변경합니다. 하지만 소스 유형을 변경할 수는 없습니다. 예를 들어 소스가 IPv4 CIDR 블록인 경우 IPv6 CIDR 블록, 접두사 목록 또는 보안 그룹을 지정할 수 없습니다.

   1. 규칙을 삭제하려면 해당 **삭제** 버튼을 선택합니다.

1. 아웃바운드 규칙을 편집하려면 **작업** 또는 **아웃바운드 규칙** 탭에서 **아웃바운드 규칙 편집**을 선택합니다.

   1. 규칙을 추가하려면 **규칙 추가**를 선택한 다음 규칙의 유형, 프로토콜, 포트 및 대상을 입력합니다. 또한 설명을 입력할 수 있습니다(선택 사항).

      유형이 TCP 또는 UDP인 경우 허용할 포트 범위를 입력해야 합니다. 사용자 지정 ICMP의 경우 **프로토콜(Protocol)**에서 ICMP 유형 이름을 선택하고, 해당되는 경우 **포트 범위(Port range)**에서 코드 이름을 선택해야 합니다. 다른 유형에 대해 프로토콜과 포트 범위가 구성됩니다.

   1. 규칙을 업데이트하려면 필요에 따라 프로토콜, 설명 및 소스를 변경합니다. 하지만 소스 유형을 변경할 수는 없습니다. 예를 들어 소스가 IPv4 CIDR 블록인 경우 IPv6 CIDR 블록, 접두사 목록 또는 보안 그룹을 지정할 수 없습니다.

   1. 규칙을 삭제하려면 해당 **삭제** 버튼을 선택합니다.

1. **규칙 저장**을 선택합니다.

------
#### [ AWS CLI ]

**보안 그룹 규칙을 추가하는 방법**  
[authorize-security-group-ingress](https://docs.aws.amazon.com/cli/latest/reference/ec2/authorize-security-group-ingress.html) 명령을 사용하여 인바운드 규칙을 추가합니다. 다음 예제에서는 지정된 접두사 목록 중 CIDR 블록의 인바운드 SSH 트래픽을 허용합니다.

```
aws ec2 authorize-security-group-ingress \
    --group-id sg-1234567890abcdef0 \
    --ip-permissions 'IpProtocol=tcp,FromPort=22,ToPort=22,PrefixListIds=[{PrefixListId=pl-f8a6439156EXAMPLE}]'
```

[authorize-security-group-egress](https://docs.aws.amazon.com/cli/latest/reference/ec2/authorize-security-group-egress.html) 명령을 사용하여 아웃바운드 규칙을 추가합니다. 다음 예제에서는 지정된 보안 그룹이 있는 인스턴스에 포트 80의 아웃바운드 TCP 트래픽을 허용합니다.

```
aws ec2 authorize-security-group-egress \
    --group-id sg-1234567890abcdef0 \
    --ip-permissions 'IpProtocol=tcp,FromPort=80,ToPort=80,UserIdGroupPairs=[{GroupId=sg-0aad1c26bb6EXAMPLE}]'
```

**무효 보안 그룹 규칙을 제거하는 방법**  
다음 [revoke-security-group-ingress](https://docs.aws.amazon.com/cli/latest/reference/ec2/revoke-security-group-ingress.html) 명령을 사용하여 인바운드 규칙을 제거합니다.

```
aws ec2 revoke-security-group-egress \
    --group id sg-1234567890abcdef0 \
    --security-group-rule-ids sgr-09ed298024EXAMPLE
```

다음 [revoke-security-group-egress](https://docs.aws.amazon.com/cli/latest/reference/ec2/revoke-security-group-egress.html) 명령을 사용하여 아웃바운드 규칙을 제거합니다.

```
aws ec2 revoke-security-group-ingress \
    --group id sg-1234567890abcdef0 \
    --security-group-rule-ids sgr-0352250c1aEXAMPLE
```

**보안 그룹 규칙을 수정하는 방법**  
[modify-security-group-rules](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-security-group-rules.html) 명령을 사용합니다. 다음 예제에서는 지정된 보안 그룹 규칙의 IPv4 CIDR 블록을 변경합니다.

```
aws ec2 modify-security-group-rules \
    --group id sg-1234567890abcdef0 \
    --security-group-rules 'SecurityGroupRuleId=sgr-09ed298024EXAMPLE,SecurityGroupRule={IpProtocol=tcp,FromPort=80,ToPort=80,CidrIpv4=0.0.0.0/0}'
```

------
#### [ PowerShell ]

**보안 그룹 규칙을 추가하는 방법**  
[Grant-EC2SecurityGroupIngress](https://docs.aws.amazon.com/powershell/latest/reference/items/Grant-EC2SecurityGroupIngress.html) cmdlet을 사용하여 인바운드 규칙을 추가합니다. 다음 예제에서는 지정된 접두사 목록 중 CIDR 블록의 인바운드 SSH 트래픽을 허용합니다.

```
$plid = New-Object -TypeName Amazon.EC2.Model.PrefixListId
$plid.Id = "pl-f8a6439156EXAMPLE"
Grant-EC2SecurityGroupIngress `
    -GroupId sg-1234567890abcdef0 `
    -IpPermission @{IpProtocol="tcp"; FromPort=22; ToPort=22; PrefixListIds=$plid}
```

[Grant-EC2SecurityGroupEgress](https://docs.aws.amazon.com/powershell/latest/reference/items/Grant-EC2SecurityGroupEgress.html) cmdlet을 사용하여 아웃바운드 규칙을 추가합니다. 다음 예제에서는 지정된 보안 그룹이 있는 인스턴스에 포트 80의 아웃바운드 TCP 트래픽을 허용합니다.

```
$uigp = New-Object -TypeName Amazon.EC2.Model.UserIdGroupPair
$uigp.GroupId = "sg-0aad1c26bb6EXAMPLE"
Grant-EC2SecurityGroupEgress `
    -GroupId sg-1234567890abcdef0 `
    -IpPermission @{IpProtocol="tcp"; FromPort=80; ToPort=80; UserIdGroupPairs=$uigp}
```

**무효 보안 그룹 규칙을 제거하는 방법**  
[Revoke-EC2SecurityGroupIngress](https://docs.aws.amazon.com/powershell/latest/reference/items/Revoke-EC2SecurityGroupIngress.html) cmdlet을 사용하여 인바운드 규칙을 제거합니다.

```
Revoke-EC2SecurityGroupIngress `
    -GroupId sg-1234567890abcdef0 `
    -SecurityGroupRuleId sgr-09ed298024EXAMPLE
```

[Revoke-EC2SecurityGroupEgress](https://docs.aws.amazon.com/powershell/latest/reference/items/Revoke-EC2SecurityGroupEgress.html) cmdlet을 사용하여 아웃바운드 규칙을 제거합니다.

```
Revoke-EC2SecurityGroupEgress `
    -GroupId sg-1234567890abcdef0 `
    -SecurityGroupRuleId sgr-0352250c1aEXAMPLE
```

**보안 그룹 규칙을 수정하는 방법**  
[Edit-EC2SecurityGroupRule](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2SecurityGroupRule.html) cmdlet을 사용합니다. 다음 예제에서는 지정된 보안 그룹 규칙의 IPv4 CIDR 블록을 변경합니다.

```
$sgrr = New-Object -TypeName Amazon.EC2.Model.SecurityGroupRuleRequest
$sgrr.IpProtocol = "tcp"
$sgrr.FromPort = 80
$sgrr.ToPort = 80
$sgrr.CidrIpv4 = "0.0.0.0/0"
$sgr = New-Object -TypeName Amazon.EC2.Model.SecurityGroupRuleUpdate
$sgr.SecurityGroupRuleId = "sgr-09ed298024EXAMPLE"
$sgr.SecurityGroupRule = $sgrr
Edit-EC2SecurityGroupRule  `
    -GroupId sg-1234567890abcdef0 `
    -SecurityGroupRule $sgr
```

------