使用安全组

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

安全组ECS的使用中扮演了云上虚拟防火墙的角色,通过管理安全组和规则,可提供精细化的网络安全隔离与访问控制。

下图示例通过配置两条安全组规则,实现仅允许授权IP远程管理实例,并阻止实例访问公网风险站点的场景。

  • 入方向规则:允许特定IP(121.XX.XX.XX)通过SSH(22端口)访问实例。

  • 出方向规则:拒绝实例访问某个已知的风险IP(XX.XX.XX.XX)。

image

为新建实例配置安全组

  1. 前往购买实例:前往ECS控制台-自定义购买页面,选择实例配置。

  2. 新建安全组:网络和安全组内新建普通安全组或企业级安全组,并编辑安全组名称。

  3. 快捷配置常用规则:购买实例时,控制台提供了常用的端口/协议,勾选后可以允许所有 IP 地址(0.0.0.0/0)来源访问目标端口,或允许遵循目标协议的流量访问创建的实例。

购买实例时新建安全组不支持精细配置新建安全组的规则,可以在实例创建后配置。若在快速配置勾选了管理实例使用的端口(如远程连接实例常用的SSH(22)、RDP(3389)等),建议创建实例后将安全组规则设置为仅允许从安全的IP地址进行访问。
  1. 创建后修改/添加/删除安全组规则:购买实例后,可参考安全组规则的配置信息,为新建的实例添加/修改/删除安全组规则

可以查看安全组应用指导和案例,了解如限制实例访问、数据库安全策略等更多业务情况下的安全组规则配置案例方法。

管理安全组

ECS实例新建的安全组可以在创建后进行安全组规则修改。安全组也可以独立于实例创建管理,并将其关联至已有的ECS实例。

创建安全组

控制台

  1. 前往ECS控制台-安全组页面,单击创建安全组

  2. 设置安全组名称及专有网络 VPC

  3. 选择安全组类型为普通安全组企业级安全组

  4. 为安全组配置安全组规则后,单击创建安全组

API

调用CreateSecurityGroup,创建安全组。

创建的普通安全组若未配置规则时,入方向默认会允许同安全组内其他ECS的流量,拒绝其他所有入方向流量,出方向允许所有流量。

添加/修改/删除安全组规则

安全组规则定义了允许或禁止出入安全组的网络流量应匹配的条件。配置规则时,须指定流量方向、访问目的及优先级等。 安全组规则为有状态的规则,只需配置入方向规则,安全组会自动放行对应的出方向响应流量。

控制台

  1. 前往ECS控制台-安全组页面,单击目标安全组ID进入安全组详情页。

  2. 配置安全组规则。

    • 添加规则:在目标安全组详情页面,选择规则需要控制方向,单击增加规则

    • 修改规则:在目标安全组详情页访问规则区域,找到目标规则,单击操作列中的编辑

    • 删除规则:在目标安全组详情页访问规则区域,找到目标规则,单击操作列中的删除

API

同优先级下,拒绝规则优先生效。对于部分特定网络流量,安全组会默认放行。
警告
  • 为减少业务生产安全问题,建议按照最小范围(白名单)开放原则配置安全组规则,尽量避免涉及登录、管理ECS实例等高危场景下允许全量访问(慎用0.0.0.0/0或::/0)。

  • 避免直接修改生产环境的安全组。可以先克隆安全组,在测试环境调试,确保修改后实例流量正常,再对线上环境的安全组规则进行修改。

为实例关联安全组

当您为ECS实例关联安全组时,实际上是在为ECS实例的主网卡关联安全组。

控制台

  1. 前往ECS控制台-实例单击目标实例ID进入实例详情页。

  2. 在实例详情页切换至安全组页签,在安全组列表页单击更换安全组,按需将安全组加入实例或者移除实例。关联多个安全组时,安全组规则会合并,且按照优先级排序生效。

API

辅助弹性网卡关联安全组

安全组实际作用在ECS实例的弹性网卡上。实例有多张弹性网卡时,为弹性网卡关联不同的安全组,并配置差异化的安全组规则,可以实现实例内部网络流量的分级管控与业务隔离。

控制台

  1. 前往ECS控制台-弹性网卡页面,单击目标辅助网卡的ID,进入辅助弹性网卡详情页。

  2. 单击更换安全组,勾选要关联的安全组,单击确定

API

使用前缀列表和端口列表

当需对多个IP地址段或端口进行统一授权时,可使用前缀列表和端口列表集中管理,从而简化安全组规则配置,提升批量维护效率。

控制台

  1. 创建前缀列表/端口列表:

    1. 前往ECS控制台-前缀列表

    2. 根据需求选择到目标页签,单击创建前缀列表创建端口列表

      引用前缀/端口列表的安全组,规则数量会根据列表设置的最大条目数计算。
  2. 在目标安全组详情页访问规则区域增加或修改规则:

    1. 设置访问来源为前缀列表,选择目标前缀列表。

    2. 设置访问目的(本实例)为端口列表,选择目标端口列表。

API

使用前缀列表

使用端口列表

克隆安全组

当需要批量创建带有相同配置的安全组,或进行跨地域、跨网络类型复制和备份时,可通过克隆安全组功能快速实现。克隆成功后,可在目标地域的安全组列表中看到新安全组。

  1. 前往ECS控制台-安全组,在目标安全组的操作栏单击克隆安全组

  2. 设置目标安全组,克隆后,新的安全组显示在目标地域的安全组列表中。

    • 专有网络ID:新安全组的网络类型,选择经典网络或者具体的专有网络。

    • 保留规则:勾选将保留原安全组中所有规则,优先级大于100的规则将调整为100。

    • 复制本安全组标签到克隆安全组:选择是否需要将原安全组的标签复制到新安全组。

导入/导出规则

如果需要备份、恢复和迁移规则,可以使用导入导出功能。

导入规则

导入的安全组规则需遵循以下要求:

  • 文件格式:JSONCSV。

  • 规则数量:单次导入不超过200条。

  • 规则优先级:1100之间。优先级高于100的规则将被忽略。

在跨地域导入规则时,不支持安全组规则中授权对象为安全组和前缀列表,不支持安全组规则中端口范围为端口列表。
  1. 前往ECS控制台-安全组在目标安全组详情页面访问规则区域,单击导入安全组规则

  2. 导入安全组规则页面,单击选择文件并选中本地的JSONCSV文件,单击确认

导入失败时,将鼠标悬停在警告图标上可查看原因。

导出规则

前往ECS控制台-安全组,在目标安全组详情页访问规则区域,单击导出。导出的规则文件的命名格式:

  • JSON格式:ecs_${region_id}_${groupID}.json。

    示例:如果Region ID为 cn-qingdao,安全组IDsg-123,则导出的文件名为ecs_cn-qingdao_sg-123.json
  • CSV格式:ecs_sgRule_${groupID}_${region_id}_${time}.csv。

    示例:如果Region IDcn-qingdao,安全组IDsg-123,导出日期为2020-01-20,则导出的文件名为ecs_sgRule_sg-123_cn-qingdao_2020-01-20.csv

删除安全组

警告

删除安全组是一个不可逆的操作,将永久删除安全组下所有规则。在执行删除操作前,请确保备份相关配置。

控制台

  1. 前往ECS控制台-安全组,在目标安全组的操作栏单击删除

  2. 删除安全组对话框中,确认信息后,单击确定

    如果安全组没有关联的ECS实例和弹性网卡,在删除安全组对话框中仍提示不可删除时,可以单击尝试强制删除

API

调用DeleteSecurityGroup,删除安全组。

安全组在以下场景时无法删除:

  • 已关联ECS实例或弹性网卡时无法删除,需先将其移除。

  • 被其他安全组规则授权,需先删除授权规则。

  • 托管安全组仅支持查看,不可删除。

  • 开启了删除保护,请先关闭删除保护,然后再尝试操作。如果无法关闭删除保护则无法删除安全组。

    在使用DeleteSecurityGroup接口删除安全组时返回错误码InvalidOperation.DeletionProtection,或使用控制台删除安全组看到类似删除保护的提示时,说明该安全组开启了删除保护功能。

安全组内实例网络互通

默认情况下,同一普通安全组内的ECS实例间内网互通。为提高安全性,可以将组内连通策略调整为组内隔离,禁止实例间的内网互通。

企业级安全组不支持修改组内连通策略。
  • 当实例关联多个安全组时,只要其中任一安全组的组内连通策略设置为组内互通,实例间即可内网互通。

  • 安全组的组内连通策略设置为组内隔离时,可通过配置安全组规则,允许实例间通信。

控制台

  1. 前往ECS控制台-安全组,单击目标安全组ID进入安全组详情页。

  2. 安全组详情页面,页签基本信息区域,单击修改组内网络连通策略

  3. 安全组的组内连通策略已更改为组内隔离

API

调用ModifySecurityGroupPolicy,修改普通安全组的组内连通策略。

安全组间实例网络互通

将其他安全组设为规则的授权对象时,可允许其他安全组内实例,通过内网访问本安全组内的实例。图中为安全组A设置了入方向的授权对象安全组B后,安全组B内的实例可以通过内网访问安全组A内的实例。

企业级安全组规则不支持添加授权对象为安全组的规则。

image

控制台

  1. 前往ECS控制台-安全组,单击目标安全组ID进入安全组详情页。

  2. 在目标安全组详情页面,选择规则需要控制方向,单击增加规则

  3. 新建安全组规则页面选择访问来源安全组跨账号安全组

API

生产应用建议

  • 安全组规划

    • 职责单一:Web、数据库、缓存等各业务场景下安全组应各自独立。

    • 环境隔离:生产、测试环境的安全组须分离,避免混用。

    • 命名规范:采用环境-应用-用途-sg格式,如prod-mysql-db-sg

  • 规则配置

    • 最小权限:仅对必要的源开放必要的端口。避免对SSH(22)、RDP(3389)等管理端口开放0.0.0.0/0应始终限定为可信的固定IP。

    • 默认拒绝:默认拒绝所有入方向流量。仅在必要时,添加入站规则,放行特定端口和来源的访问。

    • 规则优先级冲突:当实例关联多个安全组时,低优先级的允许规则会被高优先级的拒绝规则覆盖。排查网络不通时,需检查所有关联的安全组。

  • 变更管理

    • 避免直接修改生产环境: 直接修改生产环境的安全组是高危操作。可以先克隆安全组,在测试环境调试,确保修改后实例流量正常,再对线上环境的安全组规则进行修改。

计费规则

安全组免费使用。

使用限制

限制项

普通安全组限制

企业级安全组限制

单个阿里云账号在特定地域下的安全组总数量上限

请根据配额IDq_security-groups查看或申请提升对应配额。具体操作请参见查看或提升云服务器 ECS配额

与普通安全组相同

单张弹性网卡可以关联的安全组数量

10

与普通安全组相同

单张弹性网卡关联的所有安全组的规则(包括入方向规则与出方向规则)数量之和的上限

1,000

与普通安全组相同

单个安全组中,授权对象为安全组的规则数量

20

0条,在企业级安全组中,您不能添加授权对象为安全组的规则,也不能将企业级安全组作为其他安全组规则中的授权对象。

单个专有网络VPC类型的安全组能容纳的VPC类型ECS实例数量

不固定,受安全组能容纳的私网IP地址数量影响。

无限制

单个阿里云账号在特定地域下单个专有网络VPC类型的安全组能容纳的私网IP地址数量

6,000

说明
  • IP占用数按照安全组关联的弹性网卡(包括实例主网卡、辅助网卡)的私网IP数量计数,包括主私网IPv4、IPv6、辅助私网IPv4、IPv4 前缀、IPv6前缀等所有类型IP地址的数量总和。

  • 如果您有超过6,000个私网IP需要内网互访,可以将这些私网IPECS实例分配到多个安全组内,并通过互相授权的方式允许互访。

  • 您可以在配额中心根据配额IDq_vpc-normal-security-group-ip-count查看专有网络普通安全组内的私网IP地址数量上限。

65,536

说明

IP占用数按照安全组关联的弹性网卡(包括实例主网卡、辅助网卡)的数量计数,即关联的所有弹性网卡的数量总和。

单个经典网络类型的安全组能容纳的经典网络类型ECS实例数量

1,000

说明

如果您有超过1,000台经典网络类型ECS实例需要内网互访,可以将ECS实例分配到多个安全组内,并通过互相授权的方式允许互访。

不支持经典网络

公网访问端口

基于安全考虑,ECS实例25端口默认受限,建议您使用SSL加密端口(通常是465端口)来对外发送邮件。具体操作,请参见使用SSL加密465端口发送邮件

与普通安全组相同

常见问题

实例ping不通怎么办? 

无法pingECS实例,通常是因为安全组中入方向ICMP协议(ping 命令所使用的协议)的默认规则被移除。可以使用安全组规则诊断工具快速定位问题。

  1. 前往ECS控制台-实例找到目标实例并记录实例ID。

  2. 单击进入自助问题排查页面,并切换至目标地域。

  3. 选择安全组规则诊断,单击发起诊断

  4. 选择记录的实例 ID及对应的网卡。单击开始检测

    多数情况下,一台实例只有一张网卡。
  5. 查看检测结果。如果结果显示ICMP协议未放行,单击开通端口即可快速开通。

    ICMP外,诊断工具还会检测以下常用端口是否放行:80、443、22、33898080。
  6. 如果检测后发现还是ping不通可以根据无法pingECS实例公网IP的排查方法更进一步排查。

实例连不上、服务访问不通怎么办? 

服务无法访问,通常是由于安全组未放行端口。可以使用安全组规则诊断工具快速定位问题。

  1. 前往ECS控制台-实例找到目标实例并记录实例ID。

  2. 单击进入自助问题排查页面,并切换至目标地域。

  3. 选择安全组规则诊断,单击发起诊断

  4. 选择记录的实例 ID及对应的弹性网卡,并根据服务端口,选择诊断方式后,单击开始检测,查看诊断结果。

    • 一键检测:适用于804432233898080端口。

    • 自定义检测:适用于所有其他端口。需要填写以下信息:

      • 源地址:输入本地或客户端的公网IP地址。

      • 目的端口:输入服务使用的端口号。

      • 协议类型:选择端口对应的协议。

安全组与网络ACL(NACL)有何区别?

特性

安全组

网络ACL

作用层级

弹性网卡

子网级

状态

有状态

无状态

用途

实例的精细化防火墙

子网的边界访问控制

实例主网卡的安全组如何更换/添加?

安全组实际作用在ECS实例的弹性网卡上。ECS实例详情页面上安全组页签中配置的安全组,即为实例主网卡的安全组。可参考为实例关联安全组更改实例主网卡关联的安全组。

相关文档