# 将ECS从多业务实例共用安全组迁移至独立安全组
#### 应用场景
当多种不同用途的实例共用同一个安全组时，由于各实例的安全隔离需求不同，这种共用模式不仅无法满足网络隔离和安全管控的要求，还会增加安全组规则的复杂性，增加后续的业务维护难度。因此为保障网络安全、提升管理效率，建议您将不同用途的业务实例拆分至独立安全组。您可以参考本文提供的方法，完成安全组的迁移和分离，实现各实例专属安全组配置，从而提升网络管理的灵活性和安全性。
#### 方案架构
在本示例中，VPC-A的子网Subnet-A01中部署了云服务器实例ECS-01和数据库实例RDS-01，二者目前共用安全组Sg-A。然而，由于ECS-01需要与公网通信，而RDS-01仅需与内网通信，为确保数据库的安全性，并简化后续的业务维护管理，计划将ECS-01从安全组Sg-A中移出，并为其创建独立的安全组Sg-X，从而实现云服务器实例与数据库实例的安全组策略分离。
**本示例更换安全组时，需要在新的安全组内创建好规则，并将ECS-01切换过去，整个迁移过程中不会中断ECS的网络流量。**
图1将ECS从多业务实例共用安全组迁移至独立安全组   
![](https://support.huaweicloud.com/usermanual-vpc/zh-cn_image_0000002217721961.png)
#### 约束与限制
- ECS实例可以更换安全组，RDS实例创建完成后不支持更换安全组。
- 安全组的更多使用限制，具体请参见[安全组的使用限制](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0073379079.html#zh-cn_topic_0073379079__section1795142593815)。
 
#### 资源规划说明
本示例中，虚拟私有云VPC和子网、弹性云服务器ECS和数据库RDS等资源只要位于同一个区域内即可，可用区可以任意选择，无需保持一致。
![](https://support.huaweicloud.com/usermanual-vpc/public_sys-resources/note_3.0-zh-cn.png)
以下资源规划详情仅为示例，您可以根据需要自行修改。
表1资源规划总体说明 
| 资源类型         | 资源数量                                                 | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|
| 虚拟私有云VPC和子网 | VPC：1 子网：1 | - VPC名称：请根据实际情况设置，本示例为VPC-A。  - IPv4网段：请根据实际情况设置，本示例为192.168.0.0/16。  - 子网名称：请根据实际情况设置，本示例为Subnet-A01。  - 子网IPv4网段：请根据实际情况设置，本示例为192.168.0.0/24。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| 弹性云服务器ECS | 1                                                 | 本示例中，1个ECS，配置说明如下： - 名称：请根据实际情况设置，本示例为ECS-01。  - 实例规格类型：根据实际情况设置，本示例为c7。  - 镜像：请根据实际情况设置，本示例为公共镜像CentOS 8.0 64bit。  - 系统盘：通用型SSD盘，40GB。  - 数据盘：本示例未选购数据盘，请您根据实际业务需求选购数据盘。  - 网络： - 虚拟私有云：选择您的虚拟私有云，本示例为VPC-A。  - 子网：选择子网，本示例子网为Subnet-A01。    - 安全组：本示例中，ECS-01和RDS-01位于同一个安全组Sg-A中，安全组规则如[表2]所示。  - 弹性公网IP：请根据实际情况设置，本示例为1.92.XX.XX。  - 私有IP地址：本示例中ECS-01为192.168.0.66。   |
| 数据库RDS                           | 1                                                                         | - 实例名称：根据实际情况设置，本示例为RDS-01。  - 数据库引擎版本：根据实际情况设置，本示例为MySQL 8.0。  - 实例类型：根据实际情况设置，本示例为主备。  - 性能规格：根据实际情况设置，本示例为独享型。  - 网络： - 虚拟私有云：选择您的虚拟私有云，本示例为VPC-A。  - 子网：选择子网，本示例子网为Subnet-A01。    - IPv4地址：本示例此处不填写，创建完成后系统自动为RDS实例分配IP地址。  - 数据库端口：本示例使用默认端口3306。  - 安全组：本示例中，ECS-01和RDS-01位于同一个安全组Sg-A中，安全组规则如[表2]所示。    - 内网地址：本示例中RDS-01为192.168.0.242。  - 管理员账户名：本示例为root。                                                                                                                                                                                                                                                                                                |
| 安全组                                | 2                                                                       | 迁移前已有的安全组，本示例为安全组Sg-A。 - 迁移前：ECS-01和RDS-01共用安全组Sg-A，安全组规则如[表2]所示。  - 迁移后：RDS-01的安全组Sg-A，安全组规则如[表3]所示。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 安全组                                | 2                                                                       | 迁移后新建的安全组，本示例为安全组Sg-X。 迁移后：ECS-01的安全组Sg-X，安全组规则如[表4]所示。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   
 表2安全组Sg-A规则说明（迁移前） 
| 方向    | 策略    | 类型     | 协议端口  | 源地址/目的地址                                                                                                                                                                         | 描述                                    |
|:---|:---|:---|:---|:---|:---|
| 入方向      | 允许    | IPv4    | TCP: 22 | 源地址：用户本地PC的公网IP地址，本示例为11.13.XX.XX/32 **入方向源地址如果设置为0.0.0.0/0表示允许所有外部IP远程登录安全组内实例，由于本示例的ECS-01需要和公网通信，如果将22端口暴露到公网，可能存在网络安全风险，建议此处设置为已知IP地址。** | 放通安全组内实例的SSH(22)端口，用于远程登录Linux ECS。   |
| 入方向                          | 允许                          | IPv4                            | ICMP: 全部                      | IP地址：0.0.0.0/0                                                                                                                                                                                           | 放通外部实例ping安全组内实例的流量，比如验证用户本地PC和安全组内实例的网络连接情况。              |
| 入方向 | 允许 | IPv4  | 全部     | 源地址：当前安全组Sg-A                                                                                                                                                                     | 针对IPv4，用于安全组内实例之间网络互通。               |
| 入方向    | 允许     | IPv6      | 全部     | 源地址：当前安全组Sg-A                                                                                                                                                                      | 针对IPv6，用于安全组内实例之间网络互通。                |
| 出方向   | 允许     | IPv4    | 全部        | 目的地址：0.0.0.0/0                                                                                                                                                                   | 针对IPv4，用于安全组内实例访问外部，允许流量从安全组内实例流出。 |
| 出方向  | 允许 | IPv6 | 全部    | 目的地址：::/0                                                                                                                                                                         | 针对IPv6，用于安全组内实例访问外部，允许流量从安全组内实例流出。   |
   
 表3安全组Sg-A规则说明（迁移后） 
| 方向    | 策略 | 类型    | 协议端口      | 源地址/目的地址                                                                                                                                                                                                                                                                                                   | 描述                                       |
|:---|:---|:---|:---|:---|:---|
| 入方向   | 允许 | IPv4  | TCP: 3306 | 源地址按照以下情况配置，二选一即可： - IP地址：ECS-01所在的VPC网段，本示例为192.168.0.0/16  - 安全组：ECS-01所在的安全组，本示例为Sg-X   | 放通安全组内实例的3306端口，用于访问MySQL数据库服务。           |
| 入方向   | 允许 | IPv4   | ICMP: 全部 | IP地址：0.0.0.0/0                                                                                                                                                                                                                                                                                              | 放通外部实例ping安全组内实例的流量，比如验证ECS和RDS的网络连接情况。 |
| 入方向   | 允许  | IPv4  | 全部       | 源地址：当前安全组Sg-A                                                                                                                                                                                                                                                                                                 | 针对IPv4，用于安全组内实例之间网络互通。                    |
| 入方向   | 允许   | IPv6    | 全部         | 源地址：当前安全组Sg-A                                                                                                                                                                                                                                                                                                | 针对IPv6，用于安全组内实例之间网络互通。                     |
| 出方向 | 允许  | IPv4 | 全部     | 目的地址：0.0.0.0/0                                                                                                                                                                                                                                                                                               | 针对IPv4，用于安全组内实例访问外部，允许流量从安全组内实例流出。      |
| 出方向  | 允许   | IPv6 | 全部       | 目的地址：::/0                                                                                                                                                                                                                                                                                                 | 针对IPv6，用于安全组内实例访问外部，允许流量从安全组内实例流出。         |
   
 表4安全组Sg-X规则说明 
| 方向   | 策略   | 类型      | 协议端口       | 源地址/目的地址                            | 描述                                             |
|:---|:---|:---|:---|:---|:---|
| 入方向  | 允许    | IPv4   | TCP: 22   | 源地址：用户本地PC的公网IP地址，本示例为11.13.XX.XX/32 | 放通安全组内实例的SSH(22)端口，用于远程登录Linux ECS。              |
| 入方向   | 允许 | IPv4 | ICMP: 全部 | IP地址：0.0.0.0/0                     | 放通外部实例ping安全组内实例的流量，比如验证用户本地PC和安全组内ECS的网络连接情况。 |
| 入方向  | 允许    | IPv4   | 全部       | 源地址：当前安全组Sg-X                      | 针对IPv4，用于安全组内实例之间网络互通。                           |
| 入方向 | 允许   | IPv6   | 全部         | 源地址：当前安全组Sg-X                        | 针对IPv6，用于安全组内实例之间网络互通。                         |
| 出方向  | 允许  | IPv4    | 全部         | 目的地址：0.0.0.0/0                      | 针对IPv4，用于安全组内实例访问外部，允许流量从安全组内实例流出。            |
| 出方向 | 允许  | IPv6  | 全部       | 目的地址：::/0                           | 针对IPv6，用于安全组内实例访问外部，允许流量从安全组内实例流出。              |
   
#### 操作流程
将ECS从多业务实例共用安全组迁移至独立安全组，流程如[图2]所示。
图2将ECS从多业务实例共用安全组迁移至独立安全组   
![](https://support.huaweicloud.com/usermanual-vpc/zh-cn_image_0000002181993120.png)
#### 迁移前资源创建指导（可选）
**以下是迁移前资源创建的指导。如果您需要参考本文进行安全组迁移演练，可** **根据以下指导搭建迁移前的环境。**
1. 创建1个VPC和1个子网。 具体方法请参见[创建虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。
   
2. 创建1个安全组Sg-A，并参考[表2]配置安全组规则。
   - 创建安全组，具体方法请参见[创建安全组](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013748715.html)。
   
   - 配置安全组规则，具体方法请参见[添加安全组规则](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0030969470.html)、[修改安全组规则](https://support.huaweicloud.com/usermanual-vpc/vpc_SecurityGroup_0005.html)和[删除安全组规则](https://support.huaweicloud.com/usermanual-vpc/vpc_SecurityGroup_0006.html)。
    
3. 创建1个RDS实例和1个ECS实例，并且确保ECS上的MySQL客户端可正常连接RDS实例。 具体方法请参见[购买并通过MySQL客户端连接RDS for MySQL实例](https://support.huaweicloud.com/qs-rds-mysql/rds_02_0047.html)。
   
 
#### 步骤一：将ECS添加至新的安全组
1. 创建1个安全组Sg-X，并参考[表4]配置安全组规则。
   - 创建安全组，具体方法请参见[创建安全组](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013748715.html)。
   
   - 配置安全组规则，具体方法请参见[添加安全组规则](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0030969470.html)、[修改安全组规则](https://support.huaweicloud.com/usermanual-vpc/vpc_SecurityGroup_0005.html)和[删除安全组规则](https://support.huaweicloud.com/usermanual-vpc/vpc_SecurityGroup_0006.html)。
    
2. 远程登录ECS-01。
   ECS有多种登录方法，具体请参见[登录弹性云服务器](https://support.huaweicloud.com/ecs_faq/ecs_faq_0632.html)。
   
3. 执行以下命令，通过ECS-01登录数据库RDS-01。 **mysql -h** *RDS-01的内网地址* **-P** *RDS-01的数据库端口* **-u** *管理员账号* **-p**
   命令示例：
   **mysql -h 192.168.0.242 -P 3306 -u root -p**
   **登录成功后，在本次迁移过程中，需要持续** **观察数据库登录情况。**
   
4. 在原有安全组Sg-A中添加[表5]中访问数据库的规则**（TCP: 3306）** ,具体方法请参见[添加安全组规则](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0030969470.html)。
   迁移前，RDS-01和ECS-01位于同一个安全组中，安全组内实例网络互通，因此不需要额外放通3306端口。迁移后，将ECS-01迁移至安全组Sg-X，为确保ECS-01可正常访问RDS-01，则需要在RDS-01所在的安全组Sg-A中放通3306端口。
    表5安全组Sg-A规则说明（待添加） 
   | 方向 | 策略 | 类型  | 协议端口       | 源地址/目的地址                                                                                                                                                                                                                                                                                                   | 描述                                |
   |:---|:---|:---|:---|:---|:---|
   | 入方向 | 允许  | IPv4 | TCP: 3306 | 源地址按照以下情况配置，二选一即可： - IP地址：ECS-01所在的VPC网段，本示例为192.168.0.0/16  - 安全组：ECS-01所在的安全组，本示例为Sg-X   | 放通安全组内实例的3306端口，用于访问MySQL数据库服务。 |
      
   
5. 在新建安全组Sg-X中添加ECS-01，具体方法请参见[在安全组中添加实例](https://support.huaweicloud.com/usermanual-vpc/SecurityGroup_0017.html#SecurityGroup_0017__section7737145418298)。
6. 在原有安全组Sg-A中移出ECS-01，具体方法请参见[在安全组中移出实例](https://support.huaweicloud.com/usermanual-vpc/SecurityGroup_0017.html#SecurityGroup_0017__section147074331319)。
   **在安全组移出ECS的同时，持续观察数据库登录情况。**
   - 如果数据库登录没有断开，则说明安全组Sg-A中3306端口配置正常，可继续执行[7]。
   
   - 如果数据库登录断开，则需要快速恢复环境，在安全组Sg-A中重新添加ECS-01。 环境恢复正常后，排查可能原因后重试。
     
     
7. 通过本地PC远程登录ECS-01，验证安全组Sg-X中22端口配置。
   以使用PuTTY工具远程登录ECS-01为例，Host Name (or IP address)中输入ECS-01的EIP地址，本示例为1.92.XX.XX。
   图3PuTTY配置   
   ![](https://support.huaweicloud.com/usermanual-vpc/zh-cn_image_0000001956265553.png) 
8. 执行以下命令，在本地PC ping ECS-01，验证安全组Sg-X中ICMP端口配置。 **ping** *ECS的弹性公网IP*地址
   命令示例：
   **ping 1.92.XX.XX**
   
 
#### 步骤二：删除原有安全组中的废弃规则
迁移完成后，待ECS和RDS上的业务正常运行一段时间后，执行以下操作，删除原有安全组中的废弃规则，即ECS使用的规则。
1. 删除原有安全组Sg-A中ECS使用的规则，具体方法请参见[删除安全组规则](https://support.huaweicloud.com/usermanual-vpc/vpc_SecurityGroup_0006.html)。
   待删除规则如[表6]所示。删除完成后，安全组Sg-A的规则如[表3]所示。
    表6安全组Sg-A规则说明（待删除） 
   | 方向   | 策略 | 类型  | 协议端口 | 源地址/目的地址                            | 描述                                          |
   |:---|:---|:---|:---|:---|:---|
   | 入方向 | 允许  | IPv4 | TCP: 22 | 源地址：用户本地PC的公网IP地址，本示例为11.13.XX.XX/32 | 放通安全组内实例的SSH(22)端口，用于远程登录Linux ECS。  |
      
   
2. 通过本地PC远程登录ECS-01，再次确认ECS-01可正常登录。 以使用PuTTY工具远程登录ECS-01为例，Host Name (or IP address)中输入ECS-01的EIP地址，本示例为1.92.XX.XX。
   图4PuTTY配置   
   ![](https://support.huaweicloud.com/usermanual-vpc/zh-cn_image_0000001956265553.png) 
3. 执行以下命令，通过ECS-01登录数据库RDS-01，再次确认ECS-01和RDS-01网络连接正常。 **mysql -h** *RDS-01的内网地址* **-P** *RDS-01的数据库端口* **-u** *管理员账号* **-p**
   命令示例：
   **mysql -h 192.168.0.242 -P 3306 -u root -p**
   
 
