

# 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>

インスタンスを起動した後、関連付けられているセキュリティグループのリストに対し、セキュリティグループを追加または削除できます。複数のセキュリティグループをインスタンスに関連付けると、各セキュリティグループのルールが効率的に集約され、1 つのルールセットが作成されます。Amazon EC2 はこのルールセットを使用して、トラフィックを許可するかを判断します。

**要件**
+ インスタンスは、`running` または `stopped` 状態である必要があります。

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

**インスタンスのセキュリティグループを変更するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**インスタンス**] を選択します。

1. インスタンスを選択し、[**アクション**]、[**セキュリティ**]、[**セキュリティグループの変更**] の順に選択します。

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) コマンドレットを使用します。

```
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. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Security Groups**] を選択します。

1. セキュリティグループを選択します。

1. インバウンドルールを編集するには、**[アクション]** または **[インバウンドルール]** タブから **[インバウンドルールを編集]** を選択します。

   1. ルールを追加するには、**[ルールを追加]** を選択し、ルールのタイプ、プロトコル、ポート、および送信元を入力します。

      タイプが TCP または UDP の場合は、許可するポート範囲を入力する必要があります。カスタムの ICMP の場合は、[**プロトコル**] から ICMP タイプ名を選択し、該当するものがある場合は [**ポート範囲**] からコード名を選択します。その他のタイプについては、プロトコルとポート範囲は自動的に設定されます。

   1. ルールを更新するには、必要に応じてプロトコル、説明、送信元を変更します。ただし、送信元のタイプを変更することはできません。例えば、送信元が IPv4 CIDR ブロックの場合、IPv6 CIDR ブロック、プレフィックスリスト、またはセキュリティグループを指定することはできません。

   1. ルールを削除するには、**[削除]** ボタンを選択します。

1. アウトバウンドルールを編集するには、**[アクション]** または **[アウトバウンドルール]** タブから **[アウトバウンドルールを編集]** を選択します。

   1. ルールを追加するには、**[ルールを追加]** を選択し、ルールのタイプ、プロトコル、ポート、および送信先を入力します。オプションとして説明を入力することもできます。

      タイプが TCP または UDP の場合は、許可するポート範囲を入力する必要があります。カスタムの ICMP の場合は、[**プロトコル**] から ICMP タイプ名を選択し、該当するものがある場合は [**ポート範囲**] からコード名を選択します。その他のタイプについては、プロトコルとポート範囲は自動的に設定されます。

   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) コマンドレットを使用します。次の例では、指定されたプレフィックスリストの 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) コマンドレットを使用します。次の例では、指定されたセキュリティグループを持つインスタンスへの、ポート 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) コマンドレットを使用します。

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

アウトバウンドルールを削除するには、[Revoke-EC2SecurityGroupEgress](https://docs.aws.amazon.com/powershell/latest/reference/items/Revoke-EC2SecurityGroupEgress.html) コマンドレットを使用します。

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

**セキュリティグループのルールを変更するには**  
[Edit-EC2SecurityGroupRule](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2SecurityGroupRule.html) コマンドレットを使用します。次の例では、指定されたセキュリティグループルールの 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
```

------