

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 變更 Amazon EC2 執行個體的安全群組。
<a name="changing-security-group"></a>

您可以在啟動 Amazon EC2 執行個體時為其指定安全群組。在您啟動執行個體之後，您可變更其安全群組。您也可以隨時新增、移除或編輯關聯安全群組的安全群組規則。

安全群組與網路介面關聯。新增或移除安全群組會變更與主要網路介面相關聯的安全群組。您也可以變更與任何其他網路介面關聯的安全群組。如需詳細資訊，請參閱[修改網路介面屬性](modify-network-interface-attributes.md)。

**Topics**
+ [

## 新增或移除 VPC 安全群組。
](#add-remove-instance-security-groups)
+ [

## 設定安全群組規則
](#add-remove-security-group-rules)

## 新增或移除 VPC 安全群組。
<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. 在導覽窗格中，選擇 **Instances** (執行個體)。

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) 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
```

------