文档目录

安全组

在传统数据中心,网络可分为:信任区域、DMZ区域、非信任区域,通过边界防火墙进行流量控制,保障网络安全。在虚拟化数据中心,边界防火墙可能力不从心,例如:不同用户之间需要实现网络隔离,同一用户的不同业务之间需要访问控制,边界防火墙很难灵活处理这些场景。因此,ZSphere引入新组件:安全组。安全组是一种分布式防火墙,专注东西向流量管控,支持虚拟机网卡级别的出入流量控制。

安全组包含两个逻辑集合:
  • 安全组规则的集合,支持添加、删除、修改规则,实现规则动作的管控。
  • 已绑定网卡的集合,支持绑定虚拟机网卡,将安全组规则应用到虚拟机网卡上。
安全组特点:
  • 安全组未添加任何规则时,除组内成员可互通外,入方向默认拒绝所有流量,出方向允许所有流量。
  • 安全组规则支持按需修改,包括:源IP、目标IP、目标端口、协议类型、优先级等。
  • 安全组规则支持动态调整优先级,添加规则时可将规则插入到指定优先级,删除规则时优先级会自动调整,规则优先级始终保持连续。
  • 虚拟机网卡支持挂载多个安全组,且安全组之间可动态调整优先级,默认情况下先挂载的安全组规则先生效。

技术原理

安全组包含以下要点:
  • 安全组规则组成
    • 源:支持源数据(入方向)和目标数据(出方向)。
    • 源类型:支持IPv4和IPv6类型。
    • 协议类型和端口:支持ICMP、TCP、UDP等。
    • 策略:拒绝或允许。
  • 安全组规则优先级
    • 安全组规则优先级是连续且不重复的(默认规则优先级为0,表示最高优先级),优先级数字越小,表示优先级越高。
    • 默认情况下,添加的规则优先级最低。当从指定优先级插入时,后续规则优先级跟随自动调整,保证优先级不重复。
    • 当有流量经过虚拟机网卡时,将从最高优先级的规则开始匹配,如果匹配成功则执行规则动作,否则再匹配后续规则。
  • 安全组规则导入导出
    • 对于已有的安全组内规则,支持一键导出。
    • 支持将已导出的安全组规则再重新导入其它安全组,导入时提供规则校验。
  • 网卡加载多个安全组
    • 一个虚拟机网卡可挂载多个安全组,已挂载的安全组之间支持优先级排序,优先级数字越小,表示优先级越高。
    • 当有流量经过虚拟机网卡时,将从最高优先级的安全组开始匹配,如果安全组内规则匹配成功则执行规则动作,否则再进入下一个安全组进行匹配。
  • 网卡默认策略
    • 默认情况下,网卡的入方向默认策略是允许,出方向默认策略是拒绝。默认策略支持修改。
    • 当流量没有匹配到安全组规则时,会执行网卡的默认策略。

应用场景

  1. 不同业务访问控制
    以典型的Web应用为例。假定:
    • Web虚拟机的TCP 80和443端口允许任意IP地址访问。
    • App虚拟机的TCP 8080端口允许来自Web虚拟机的访问。
    • DB虚拟机的TCP 3306端口允许来自App虚拟机的访问。

    分别为三类业务虚拟机创建安全组,并配置相应规则,可实现不同业务之间的访问控制。

    如图 1所示:
    图 1. 不同业务访问控制


  2. 多业务共存上述业务虚拟机除提供业务能力外,还需允许运维控制(假定使用SSH协议),有两种实现方案:
    • 方案1:为上述三个安全组分别新增一条规则。
    • 方案2:创建一个新安全组,并挂载到上述所有业务虚拟机网卡上。

    虚拟机网卡支持挂载多个安全组,且方案2更灵活可控,首选方案2。可为上述每台业务虚拟机网卡配置两个安全组,且支持按需调整安全组优先级以及默认规则。

  3. 组内虚拟机禁止互访

    默认情况下,安全组内的虚拟机之间可互相访问,无任何规则限制。在某些场景下,要求同一安全组内的虚拟机之间不可互相访问,此时可将允许组内互通的默认规则停用。该条默认规则不支持删除。