QVM安全组实践(二)
本文从授权和撤销安全组规则、加入和移出安全组讲解云服务器QVM的安全组最佳实践。
网络类型
七牛云的网络类型有专有网络VPC,对安全组支持不同的设置规则,您可以设置内网入方向和内网出方向的安全组规则。
台专有网络VPC类型的QVM实例只能加入本VPC的安全组。
安全组内网通讯的概念
本文开始之前,您应知道以下几个安全组内网通讯的概念:
- 默认只有同一个安全组的QVM实例可以网络互通。即使是同一个账户下的QVM实例,如果分属不同安全组,内网网络也是不通的。
- 如果您有两台QVM实例,不在同一个安全组,您希望它们内网不互通,但实际上它们却内网互通,那么,您需要检查您的安全组内网规则设置。如果内网协议存在下面的协议,建议您重新设置。
- 允许所有端口。
- 授权对象为CIDR网段(SourceCidrIp):0.0.0.0/0或者10.0.0.0/8的规则。
- 如果您想实现在不同安全组的资源之间的网络互通,您应使用安全组方式授权。对于内网访问,您应使用源安全组授权,而不是CIDR网段授权。
安全规则的属性
安全规则主要是描述不同的访问权限,包括如下属性:
- Policy:授权策略,参数值可以是accept(接受)或drop(拒绝)。
- Priority:优先级,根据安全组规则的创建时间降序排序匹配。规则优先级可选范围为1-100,默认值为1,即最高优先级。数字越大,代表优先级越低。
- NicType:网络类型。如果只指定了SourceGroupId而没有指定SourceCidrIp,表示通过安全组方式授权,此时,NicType必须指定为intranet。
- 规则描述:
- IpProtocol:IP协议,取值:tcp、udp、icmp、gre或all。all表示所有的协议。
- PortRange:IP协议相关的端口号范围:
- IpProtocol取值为tcp或udp时,端口号取值范围为1~65535,格式必须是“起始端口号/终止端口号”,如“1/200”表示端口号范围为1~200。如果输入值为“200/1”,接口调用将报错。
- IpProtocol取值为icmp、gre或all时,端口号范围值为-1/-1,表示不限制端口。
- 如果通过安全组授权,应指定SourceGroupId,即源安全组ID。此时,根据是否跨账号授权,您可以选择设置源安全组所属的账号SourceGroupOwnerAccount。
- 如果通过CIDR授权,应指定SourceCidrIp,即源IP地址段,必须使用CIDR格式。
授权一条入网请求规则
在控制台或者通过API创建一个安全组时,入网方向默认deny all,即默认情况下您拒绝所有入网请求。这并不适用于所有的情况,所以您要适度地配置您的入网规则。
例如,如果您需要开启公网的80端口对外提供HTTP服务,因为是公网访问,您希望入网尽可能多访问,所以在IP网段上不应做限制,可以设置为0.0.0.0/0,具体设置可以参见以下描述,其中,括号外为控制台参数,括号内为OpenAPI参数,两者相同就不做区分。
- 网卡类型(NicType):公网(internet)。如果是专有网络VPC类型的只需要填写intranet,通过EIP实现公网访问。
- 授权策略(Policy):允许(accept)。
- 规则方向(NicType):入网。
- 协议类型(IpProtocol):TCP(tcp)。
- 端口范围(PortRange):80/80。
- 授权对象(SourceCidrIp):0.0.0.0/0。
- 优先级(Priority):1。
禁止一个入网请求规则
禁止一条规则时,您只需要配置一条拒绝策略,并设置较低的优先级即可。这样,当有需要时,您可以配置其它高优先级的规则覆盖这条规则。例如,您可以采用以下设置拒绝6379端口被访问。
- 网卡类型(NicType):内网(intranet)。
- 授权策略(Policy):拒绝(drop)。
- 规则方向(NicType):入网。
- 协议类型(IpProtocol):TCP(tcp)。
- 端口范围(PortRange):6379/6379。
- 授权对象(SourceCidrIp):0.0.0.0/0。
- 优先级(Priority):100。
将需要互相通信的QVM实例加入同一个安全组
一个QVM实例最多可以加入5个安全组,而同一安全组内的QVM实例之间是网络互通的。如果您在规划时已经有多个安全组,而且,直接设置多个安全规则过于复杂的话,您可以新建一个安全组,然后将需要内网通讯的QVM实例加入这个新的安全组。
这里也不建议您将所有的QVM实例都加入一个安全组,这将会使得您的安全组规则设置变成梦魇。对于一个中大型应用来说,每个服务器编组的角色不同,合理地规划每个服务器的入方向请求和出方向请求是非常有必要的。
在控制台上,您可以根据文档加入安全组
"您可以根据业务需要,将 QVM 实例加入一个或多个安全组。默认情况下,一个 QVM 实例可以加入五个安全组。")的描述将一台实例加入安全组。
将QVM实例移除安全组
如果QVM实例加入不合适的安全组,将会暴露或者Block您的服务,这时您可以选择将QVM实例从这个安全组中移除。但是在移除安全组之前必须保证您的QVM实例已经加入其它安全组。
说明 将QVM实例从安全组移出,将会导致这台QVM实例和当前安全组内的网络不通,建议您在移出之前做好充分的测试。
合理的安全组名称和描述有助于您快速识别当前复杂的规则组合。您可以通过修改名称和描述来帮助自己识别安全组。
删除不需要的安全组
安全组中的安全规则类似于一条条白名单和黑名单。所以,请不要保留不需要的安全组,以免因为错误加入某台QVM实例而造成不必要的麻烦。