引言:安全组是什么?
在云上部署业务时,安全往往是用户最先关注的问题之一。服务器需要开放哪些端口?哪些IP可以访问?如何防止未授权访问?这些问题的答案,都离不开一个核心组件——安全组。
安全组是阿里云提供的虚拟防火墙,具备状态检测和数据包过滤能力,用于控制云服务器ECS实例的出入站流量。每台ECS实例必须至少加入一个安全组。与传统的物理防火墙不同,安全组是纯软件定义的、弹性可扩展的,并且完全免费。
安全组遵循白名单机制——默认拒绝所有流量,只有明确允许的规则才会放行。这就像一栋大楼的门禁系统:没有门禁卡的人一律不得入内,只有登记过的人才能通行。
安全组按照类型划分为普通安全组和企业级安全组。两者在容量、功能特性、默认行为等方面有显著差异,适用于不同的使用场景。本文将深入剖析这两种安全组的区别,并详细介绍安全组的操作步骤及各步骤的含义。
一、普通安全组与企业级安全组:核心区别
两种安全组均为免费服务,但在以下五个维度存在关键差异。
1. 私网IP容量
这是两者最直观的区别。
| 安全组类型 | 单个安全组能容纳的私网IP地址数量 |
|---|---|
| 普通安全组 | VPC网络:6,000 |
| 企业级安全组 | VPC网络:65,536 |
说明:普通安全组的IP占用数按照安全组关联的弹性网卡的私网IP数量计数(包括主私网IPv4、IPv6、辅助私网IPv4等所有类型IP地址的数量总和);企业级安全组则按照关联的弹性网卡数量计数。
如果您集群中的私网IP数量较多(如大规模容器集群),普通安全组可能无法容纳,建议使用企业级安全组。
2. 组内互通功能
| 安全组类型 | 组内连通策略 | 说明 |
|---|---|---|
| 普通安全组 | 默认组内互通,可修改为隔离 | 同安全组内的ECS实例默认可以内网互访 |
| 企业级安全组 | 默认组内隔离,不可修改 | 同安全组内的ECS实例默认相互隔离,需要单独添加规则放行 |
普通安全组的组内互通功能,可以理解为一种授权本安全组内ECS实例内网访问的特殊规则。如果您需要限制普通安全组内ECS实例之间的网络通信,可以通过控制台修改组内连通策略。企业级安全组则默认隔离,安全策略更加严格。
3. 支持安全组作为授权对象
| 安全组类型 | 支持安全组授权 | 说明 |
|---|---|---|
| 普通安全组 | 是 | 可以添加授权对象为其他普通安全组的规则,最多20条 |
| 企业级安全组 | 否 | 不能添加授权对象为安全组的规则,也不能被其他安全组授权 |
安全组作为授权对象,是指添加一条安全组规则,规则的授权对象为一个安全组ID。例如,可以将Web服务器所在的安全组授权给数据库服务器所在的安全组,允许Web服务器访问数据库端口。
4. 默认访问控制规则
| 安全组类型 | 入方向默认策略 | 出方向默认策略 |
|---|---|---|
| 普通安全组 | 拒绝所有访问请求 | 允许所有访问请求 |
| 企业级安全组 | 拒绝所有访问请求 | 拒绝所有访问请求 |
普通安全组出方向默认放行所有流量,而企业级安全组出入方向均默认拒绝,访问控制更加严格。
5. 网络类型支持
| 安全组类型 | 支持的网络类型 |
|---|---|
| 普通安全组 | VPC网络 + 经典网络 |
| 企业级安全组 | 仅VPC网络 |
重要提醒:当一台ECS实例或一块弹性网卡关联多个安全组时,这些安全组只能是普通安全组或企业级安全组中的一种类型,不能混合关联。
二、如何选择:普通安全组还是企业级安全组?
根据以上对比,可以按以下原则进行选择:
选择普通安全组的场景:
中小规模业务,私网IP数量在6,000以内
需要利用组内互通功能简化内网访问配置
需要通过安全组授权方式实现跨安全组访问控制
仍在使用经典网络
选择企业级安全组的场景:
大规模集群(如ACK容器集群),私网IP数量超过6,000
对安全隔离要求较高,需要默认组内隔离
对整体规模和运维效率有较高需求
仅使用VPC网络
三、安全组操作步骤及含义详解
步骤一:进入安全组管理页面
操作路径:登录阿里云控制台 → 云服务器ECS → 网络与安全 → 安全组
含义:安全组是地域级别的资源,每个地域的安全组相互独立。进入正确的地域是后续所有操作的前提。
步骤二:创建安全组
操作路径:在安全组页面单击“创建安全组”
需要配置的参数:
| 参数 | 含义 |
|---|---|
| 安全组名称 | 建议使用方便识别的名称,便于后续管理和运维 |
| 专有网络VPC | 安全组只能应用于同一VPC下的实例 |
| 安全组类型 | 选择“普通安全组”或“企业级安全组” |
含义:创建安全组相当于建立了一个“安全域”,后续所有规则都将在这个域内生效。创建时选择的VPC决定了该安全组可以关联哪些实例。
步骤三:配置安全组规则
操作路径:在安全组列表中找到目标安全组,单击“管理规则”
一条安全组规则由以下核心属性构成:
| 属性 | 含义 | 可选值/示例 |
|---|---|---|
| 规则方向 | 控制流量的方向 | 入方向(控制外部访问实例)、出方向(控制实例访问外部) |
| 授权策略 | 对匹配的流量执行什么操作 | 允许(Allow)或拒绝(Deny) |
| 协议类型 | 流量使用的协议 | TCP、UDP、ICMP、GRE或全部 |
| 端口范围 | 开放或限制的端口 | 如80/80(单端口)、22/22(SSH)、1/200(端口范围) |
| 授权对象 | 允许或拒绝的流量来源/目标 | IP地址(如192.168.1.1/32)、CIDR段(如0.0.0.0/0)、安全组ID |
| 优先级 | 规则匹配的先后顺序 | 1~100,数值越小优先级越高 |
授权策略的匹配逻辑:当多条规则同时匹配时,允许规则的优先级高于拒绝规则。即如果存在同时满足条件的允许和拒绝规则,允许规则将优先生效。
有状态规则:安全组规则为有状态规则,只需配置入方向规则,系统会自动放行对应的出方向响应流量。例如,配置了允许外部访问ECS的22端口,ECS对该请求的响应流量会自动放行,无需单独配置出方向规则。
添加规则的操作步骤:
选择规则方向(入方向或出方向)
单击“添加安全组规则”或“增加规则”
设置协议类型、端口范围、授权对象
设置优先级(可选,默认为1)
单击确认保存
步骤四:关联云服务器
操作路径:在安全组列表中选择目标安全组 → 单击“管理实例” → 将安全组绑定到相应的ECS实例
含义:安全组创建并配置好规则后,需要关联到具体的ECS实例才能生效。一台ECS实例可以关联多个安全组,多个安全组的规则会共同生效。当ECS实例关联了多个安全组时,这些安全组会从高到低依次匹配规则。
注意:如果ECS实例关联了多个安全组,这些安全组必须是同一类型(全部为普通安全组或全部为企业级安全组)。
步骤五:验证规则生效
含义:配置完成后,建议通过网络测试工具验证规则是否生效,并检查服务器日志确认访问控制效果。规则的变动会自动作用于安全组中的所有ECS实例,无需重启。
四、安全组规则配置最佳实践
遵循最小权限原则:只开放业务运行必需的端口和协议。例如,开放Linux实例的22端口用于远程登录时,建议仅允许特定的IP访问,而非所有IP(
0.0.0.0/0)。谨慎授权全网段访问:避免使用
0.0.0.0/0作为授权对象,除非确实需要公网全开放访问。选择开放具体端口:如
80/80,避免开放端口范围如1/80。合理设置优先级:数字越小优先级越高。建议将最严格的规则(如拒绝特定IP)设置为较高优先级,将最宽松的规则(如允许所有)设置为较低优先级。
定期审计规则:及时清理不再需要的规则,避免规则冗余。
善用安全组命名和标签:为安全组设置名称、描述、标签和资源组,方便快速识别用途和分类运维。
按用途拆分安全组:不同用途的实例(如Web服务器、数据库服务器)使用不同的安全组,降低单个安全组的规则数量,简化管理。
总结
阿里云安全组是云上安全的第一道防线,通过精细化的规则配置,可以有效控制进出云服务器的网络流量。普通安全组和企业级安全组各有侧重:普通安全组适合中小规模场景,支持组内互通和安全组授权,配置灵活;企业级安全组则面向大规模、高安全要求的场景,提供更大的容量和更严格的默认隔离策略。
无论选择哪种类型,合理规划、最小授权、定期审计都是安全组配置的不二法则。希望本文能帮助您更好地理解和使用阿里云安全组,为云上业务筑起坚实的安全屏障。