安全组概述
安全组
安全组是一个逻辑上的分组,为具有相同安全保护需求并相互信任的云服务器提供访问策略。安全组创建后,用户可以在安全组中定义各种访问规则,当云服务器加入该安全组后,即受到这些访问规则的保护。
您在创建弹性云服务器时,必须将实例加入一个安全组,如果此前您还未创建任何安全组,那么系统会自动为您创建默认安全组并关联至该实例。除了默认安全组,您还可以根据业务需求创建自定义安全组并关联至实例。一个实例可以关联多个安全组,多个安全组按照优先级顺序依次匹配流量。
- 安全组Sg-A的入方向存在一条放通ICMP端口的自定义规则,因此可以通过个人PC (计算机)ping通ECS-A。但是安全组内未包含允许SSH流量进入实例的规则,因此您无法通过个人PC远程登录ECS-A。
- 当ECS-A需要通过EIP访问公网时,由于安全组Sg-A的出方向规则允许所有流量从实例流出,因此ECS-A可以访问公网。
安全组规则
安全组创建后,您可以在安全组中设置出方向、入方向规则,这些规则会对安全组内部的云服务器出入方向网络流量进行访问控制,当云服务器加入该安全组后,即受到这些访问规则的保护。安全组规则工作原理请参考安全组及规则的工作原理。
每个安全组都自带默认安全组规则,详情请参见默认安全组和规则。您也可以自定义添加安全组规则,请参见配置安全组规则。
- 入方向规则:控制外部请求访问安全组内的实例,即流量流入实例。
- 出方向规则:控制安全组内实例访问外部的请求,即流量从实例流出。
参数 |
说明 |
---|---|
策略 |
支持允许或拒绝。当流量的协议、端口、源地址/目的地址成功匹配某个安全组规则后,会对流量执行规则对应的策略,允许或拒绝流量。 |
优先级 |
可选范围为1-100,数字越小,规则优先级级别越高。 安全组规则匹配流量时,首先按照优先级进行排序,其次按照策略排序,拒绝策略高于允许策略,更多信息请参见流量匹配安全组规则的顺序。 |
类型 |
支持设置IPv4和IPv6协议的规则。 |
协议端口 |
包括网络协议类型和端口范围。
|
源地址或目的地址 |
在入方向中,匹配流量的源地址。在出方向中,匹配流量的目的地址。
您可以使用IP地址、安全组、IP地址组作为源地址或者目的地址。
|
安全组配置示例
您可以在安全组内放通指定IP地址,允许指定IP地址访问安全组内实例,或者在某个安全组内放通另外一个安全组,实现不同安全组内的实例内网互通。通过安全组规则,您可以灵活控制组网内流量的走向,以确保您的网络安全,以下为您提供了典型的安全组应用示例。
- 安全组Sg-A入方向规则A01允许从指定IP地址 (172.16.0.0/24)访问安全组内实例的SSH(22)端口,用于远程登录安全组内的Linux云服务器。
- 安全组Sg-A入方向规则A02允许安全组内的实例可使用任何协议和端口互相通信,即子网Subnet-A内的ECS网络互通。
- 安全组Sg-B入方向规则B01允许Sg-A内的实例访问Sg-B内实例的SSH(22)端口,即通过子网Subnet-A的ECS可远程登录Subnet-B内的ECS。
- 安全组Sg-B入方向规则B02允许安全组内的实例可使用任何协议和端口互相通信,即子网Subnet-B内的ECS网络互通。
- 两个安全组的出方向规则允许所有流量从安全组内实例流出。
如果您通过中间网络实例在不同子网的实例之间转发流量,比如图3中,子网Subnet-A的ECS通过虚拟IP和子网Subnet-B的ECS互相通信。由于存在中间网络实例,此时安全组规则的源地址选择实例所在的安全组时,无法放通中间网络实例转发的流量,源地址必须设置成中间网络实例的私有IP地址或者子网网段。
- 安全组Sg-A入方向规则A01允许Sg-B内的实例使用任何协议和端口访问Sg-A内的实例。
- 安全组Sg-B入方向规则说明如下:
- 规则B02:允许Sg-A内的实例使用私有IP地址访问Sg-B内实例,但是当前组网下,Sg-A内的实例和Sg-B内的实例通信需要经过虚拟IP,此时虚拟IP的流量无法流入Sg-B内的实例,该规则不适用于当前组网。
- 规则B01:允许虚拟IP(192.168.0.21)使用任何协议和端口访问Sg-B内的实例。当前组网中,您还可以将源地址设置成子网Subnet-A的网段192.168.0.0/24。
- 在安全组Sg-A中,规则A01允许来自Sg-B内实例的流量访问Sg-A内的实例,源地址为安全组Sg-B。
- 在安全组Sg-B中,规则B01允许来自Sg-A内实例的流量访问Sg-B内的实例,源地址为安全组Sg-A。
安全组配置指引
如果您第一次使用安全组,建议您按照如下步骤操作:
安全组的使用限制
- 为了确保良好的网络性能体验,建议一个实例最多关联5个安全组。
- 建议一个安全组关联的实例数量不应超过6000个,否则会引起安全组性能下降。
- 在一个安全组中,对于入方向规则来说,源地址是安全组的规则数量+源地址是IP地址组的规则数量+端口是不连续端口号的规则数量 ≤ 120条,否则超过数量的安全组规则将不生效。当同时存在IPv4和IPv6类型的安全组规则时,两种类型的安全组规则单独计算,即IPv4规则和IPv6规则可以各有120条。
以安全组Sg-A的入方向IPv4规则为例,表3中提供了部分符合限制条件的规则供您参考。其中,当一条安全组规则同时符合多个限制时,比如规则A02即使用了不连续端口,又使用了安全组作为源地址,此时只占用一条配额。
- 如果您添加安全组规则时,使用IP地址组或者不连续端口,那么该安全组规则对不同规格云服务器的生效情况存在差异,为了避免您的安全组规则不生效,请您查看表4了解详情。
表4 安全组规则限制 安全组规则
云服务器类型
添加安全组规则时,“源地址”和“目的地址”可选择“IP地址组”
不支持的X86云服务器规格如下:- 通用计算型(S1型、C1型、C2型 )
- 内存优化型(M1型)
- 高性能计算型(H1型)
- 磁盘增强型( D1型)
- GPU加速型(G1型、G2型)
- 超大内存型(E1型、E2型、ET2型)
添加安全组规则时,“协议端口”可配置为不连续端口号
不支持的X86云服务器规格如下:
- 通用计算型(S1型、C1型、C2型 )
- 内存优化型(M1型)
- 高性能计算型(H1型)
- 磁盘增强型( D1型)
- GPU加速型(G1型、G2型)
- 超大内存型(E1型、E2型、ET2型)
不支持的鲲鹏云服务器规格:只有Kai1
如果您在Kai1鲲鹏云服务器中添加安全组规则时,使用了不连续端口号,那么除了该条规则不会生效,该规则后的其他规则也不会生效。比如:
您先配置了安全组规则A(不连续端口号22,24),再配置了下一条安全组规则B(独立端口号9096),则安全组规则A和B均不会生效。
- 当您的组网中存在以下情况时,来自ELB流量不受网络ACL和安全组规则的限制。
ELB实例的监听器开启“获取客户端IP”功能时,不受限制。
比如规则已明确拒绝来自ELB实例的流量进入后端云服务器,此时该规则无法拦截ELB的流量,流量依然会抵达后端云服务器。
实践建议
- 请您遵循白名单原则配置安全组规则,即安全组内实例默认拒绝所有外部的访问请求,通过添加允许规则放通指定的网络流量。
- 添加安全组规则时,请遵循最小授权原则。例如,放通22端口用于远程登录云服务器时,建议仅允许指定的IP地址登录,谨慎使用0.0.0.0/0(所有IP地址)。
- 请您尽量保持单个安全组内规则的简洁,通过不同的安全组来管理不同用途的实例。如果您使用一个安全组管理您的所有业务实例,可能会导致单个安全组内的规则过于冗余复杂,增加维护管理成本。
- 您可以将实例按照用途加入到不同的安全组内。例如,当您具有面向公网提供网站访问的业务时,建议您将运行公网业务的Web服务器加入到同一个安全组,此时仅需要放通对外部提供服务的特定端口,例如80、443等,默认拒绝外部其他的访问请求。同时,请避免在运行公网业务的Web服务器上运行内部业务,例如MySQL、Redis等,建议您将内部业务部署在不需要连通公网的服务器上,并将这些服务器关联至其他安全组内。
- 对于安全策略相同的多个IP地址,您可以将其添加到一个IP地址组内统一管理,并在安全组内添加针对该IP地址组的授权规则。当IP地址发生变化时,您只需要在IP地址组内修改IP地址,那么IP地址组对应的安全组规则将会随之变更,无需逐次修改安全组内的规则,降低了安全组管理的难度,提升效率。具体方法,请参见使用IP地址组提升安全组规则管理效率。
- 请您尽量避免直接修改已运行业务的安全组规则。如果您需要修改使用中的安全组规则,建议您先克隆一个测试安全组,然后在测试安全组上进行调试,确保测试安全组内实例网络正常后,再修改使用中的安全组规则,减少对业务的影响。具体方法,请参见克隆安全组。
- 您在安全组内新添加实例,或者修改安全组的规则后,此时不需要重启实例,安全组规则会自动生效。
如果您的安全组规则配置完未生效,请参考为什么配置的安全组规则不生效?。