刘文懋 行盼宁
摘要:安全应用超市是一种新型的安全产品交付和运维模式,通过云端商店可有效管理客户多个环境的安全应用,借助软件定义的安全架构可快速部署和更新安全应用,
1 背景
当前企业安全公司的产品交付模式大致有两类,第一类是以硬件设备的模式,即客户根据销售对产品的介绍,选择符合要求的硬件设备,然后由工程团队将该设备部署在客户网络的特定位置,最后调试完上线;第二类是以服务或咨询的模式,即用户购买相应的安全服务后,安全公司提供一定时间的人工支持,已解决某些问题。然而,在虚拟化、云计算和SDN等新型环境中,前者需部署硬件设备,已经越来越难以适应客户业务的需求,难开发难部署;而后者则需要大量的人月开销,无疑增加了企业的成本。
另一方面,安全企业往往有大量不同细分行业的客户,每个客户的安全需求和网络环境千差万别,那么安全产品的开发者在开发和测试产品的时候,不能保证与客户的实际场景完全一致,因而会产生很多技术问题无法及时解决。
那么有没有一种更适合未来新兴网络环境的安全产品交付方案呢?一种方法是将安全产品SaaS化,即为客户提供弹性可扩展的安全服务,隐藏了各种底层复杂的安全设备和安全机制。笔者在前几期内刊中曾提出过软件定义的安全架构,通过可编程、开放的安全控制平台实现安全资源抽象池化,为客户提供开放可编程的应用接口,进而实现安全应用的快速开发。
软件定义的安全应用可以满足客户需求,但还有几个问题亟待解决:首先,官方开发的安全应用毕竟是少数,不能覆盖所有业务场景,也不是所有用户都具备二次开发的能力,那么大多数用户会面临只有少量安全应用可用的尴尬境地;其次,每个应用所适配的环境不同,那么如何部署这些应用,将是极大的挑战;最后,随着安全威胁的日益增加,安全应用的升级必不可少,那么如何做到无缝升级,也是需要解决的问题。
2 安全应用超市简介
事实上,应用市场的概念源于Apple的一款软件AppStore,该模式是一个基于IOS平台的自营销体系,与广大开发者和用户共同形成了良好的生态环境,并获得了很好的商业收益。虽然个人消费市场与企业安全市场无论从营销模式还是技术实现方面,都有千差万别,但这一新概念无疑为我们提供了一个很好的思路:图1描述了安全应用超市的概念图,安全厂商在云端收集、推广和分发某些用户开发的应用,其他用户可以一键购买或租赁、部署和更新所需的应用服务。
图1 应用超市的模式概念图
安全应用超市与以往的安全产品交付模式有革命性的变化,终端用户将不需要关注具体的安全硬件功能、性能甚至型号,而只需要关注是否适合其适用的业务场景,例如WEB服务运营客户不需要了解厂商是否有WEB扫描器或WEB防火墙,或安全产品是否支持透明代理或反向代理,或需要多少台安全设备;相反,他们只需要关注WEB安全防护应用是面向游戏、电商或其他类型的站点,是否具有定时检查和实时防护功能,以及确定需要防护多大量级的WEB服务即可,应用便会自动通过软件定义的安全控制平台准备好相应的虚拟安全设备,设置好网络流向路径,配置相应的安全策略。这些复杂的操作,绝大部分对客户是透明的。
正如前述,要做到安全应用自动化运维,企业安全应用的部署和管理存在很多困难,例如:
- 安全应用体积巨大 一个安全应用可能包含多个安全产品,如抗APT检测应用会包含流量分析、入侵检测、行为检测和系统扫描等产品,每个安全产品都是独立庞大的系统,如果说初始化下载尚可,那不断的维护更新的开销则对安全管理员完全不可接受。
- 安全应用部署环境复杂 一个安全应用除了安全设备外,还包含如何准备网络、计算和存储环境的脚本和配置文件,那么这些控制信息和元数据是否能适用于不同行业的客户环境,又或另外一个问题,不同行业的客户环境出现异常,研发团队是否能够快速重现和解决问题?
- 认证和计费支持 以往厂商向客户交付的是硬件设备,而客户获得应用服务和更新的方式是在线购买或租赁,获得这些服务的凭据则是认证的密钥,所以对于安全控制平台和安全设备,都需要支持集中式的认证和计费
3 系统支撑技术
3.1 软件定义安全架构
软件定义安全的架构将安全设备的控制平面上移到了集中控制的安全平台,将众多底层设备抽象为安全资源池,以松耦合的方式与IaaS和SDN等新型业务环境交互,并以通过开放和可编程的方式为北向的安全应用提供高效可靠的安全接口。该架构如图2所示,已在前几期内刊中已有介绍,本文不做赘述。
图2 软件定义安全的架构
3.2 轻量级虚拟化Docker
Docker是介于IaaS和PaaS之间的虚拟化方案,有高效、隔离和轻量级等优点。Docker技术涉及三大概念,包括镜像(Image)、容器(Container)、仓库(Repository)。下面结合本项目对其进行详细介绍。
Docker镜像对应预安装的操作系统和若干应用软件的系统,也是启动一个Docker容器的基础。
Docker容器是基于主机之上的操作系统虚拟化,作为普通进程运行于宿主机器之上。Docker利用容器来运行应用,而容器是基于镜像创建的运行实例,可以被启动、开始、停止、删除等。Docker镜像是静态的,而Docker容器是动态的,Docker容器启动需要先装载Docker镜像,启动之后的容器可以进行动态化管理,也可以对容器进行打包,生成新的镜像。
与与虚拟机一样,每个Docker容器之间相互隔离,安全性得到操作系统级别的保证;而容器对于虚拟机有明显的优势,主要有:
- VMs运行整个虚拟操作系统于主机之上,而Docker容器直接加在应用程序在主机上运行,一个主机可以同时运行数千个容器;
- Docker容器启动速度远远快于VMs,实现高效快速化,容器的启动时间是秒级的;
- Docker容器比VMs轻量级,节约资源,便于管理。
Docker仓库是集中存放Docker镜像的场所。分为远程和本地,本地指的是存放本地的镜像仓库,而远程仓库就是指Registry仓库,对外提供Docker镜像下载,上传等服务。
此外,Docker使用了AUFS文件系统 允许用户将一次对磁盘做的读写操作变为文件系统中一层增量的部分,面向不同层面应用的镜像可以树形结构建立,子镜像的容量只比父镜像大了增量部分,如图3所示。不同用户的不同镜像的不同版本都可源于同一个安全厂商提供的预置的镜像,这样所有的应用更新都可以只传输增量部分,大大较少了传输的时间和网络开销。
图3 Docker镜像层次图
最后,Docker提供的了很好的版本管理和资源隔离,安全厂商的研发Docker环境与客户部署的Docker环境可以完全一致,当客户遇到非预期的应用异常时,研发只需要检出对应版本的Docker镜像,启动的容器中操作系统、网络和应用软件环境与用户侧则是相同的,很容易排查问题。
可见,Docker作为刚刚新型的虚拟化技术,适合App的快速交付和部署,App的迁移扩展比较高效简单,有更高效的虚拟化效率,以及更一致的研发和生产环境,非常适用于企业级的安全应用超市的底层支撑技术。
4 安全应用超市设计
安全应用超市设计是面向软件定义网络(SDN,Software-defined networking)和网络虚拟化(NV,Network Virtualization)新型网络架构环境,实现App的提交、审核、购买以及自动化部署等功能。
图4 安全应用超市架构图
该系统的架构如图4所示,分为两大核心部件:应用超市和安全控制平台(SC)。应用超市主要负责云端App的管理,并对外提供App下载上传接口;安全控制平台可以从应用超市进行认证并下载App,从而部署App到本地服务器上。
4.1典型交互案例
我们先做一些假定:应用超市对多个客户开放,一个客户可能有多套业务系统,每个业务系统部署一个安全控制平台,该控制平台可长期与应用超市端连接,用于接收应用数据和控制信息。
那么,一个简单的使用案例的流程说明如图5所示:
- 首先,用户打开打开应用超市的Web Portal,使用用户名密码或证书登陆
- 其次,用户浏览或根据关键字、应用场景等搜索应用,找到感兴趣的应用
- 接着,用户点击购买,或选择租赁时间,获得应用超市的授权
- 然后,应用超市提示所有连接的安全控制平台,用户选择相应的位置,应用被推送到相应的安全控制平台
- 最后,用户在安全控制平台启动应用,或先选择应用部署在哪些可用节点上随后启动
图5 AppStore用例设计
4.2 应用超市与Docker技术的关联
在本项目中,应用超市的架构使用的底层支撑技术是Docker,那么逻辑概念上两者会存在对应关系。
从概念上,应用程序对应的是Dokcer中的镜像,App的下载上传对应Docker镜像的下载上传。由于Docker镜像是分层的,那么我们 也可将镜像分为三层管理,以提高镜像管理效率:最顶层的是基础镜像层,安装所有容器都需要的软件;中间层是服务镜像层,更具能力不同安装不同的服务软件; 最底层是应用镜像层,仅安装应用程序相关的软件。
其次,每个容器的运行对应于本项目中App的部署和运行,当安全控制平台得镜像后,按照策略将其部署到可用节点上,并启动该镜像对应的容器,那么容器所提供的服务就是App的功能。
最后,Docker仓库对应到本项目中的应用超市私有云服务和用户端的安全控制平台,即首先安全控制平台先从超市仓库获得镜像,保存在本地的私有仓库中,然后每个节点从该私有仓库获取镜像,进而启动容器。
安全应用超市技术细节图
所以,总体的安全应用超市用Docker实现如图所示,具体技术对应关系如下所示:
-
静态概念映射
- Docker镜像->App
- Docker Registry仓库->Cloud AppStore
- Docker Local仓库->client AppStore
- Docker镜像->App
-
动态概念映射
- Docker镜像转容器->运行部署App
- Docker容器转镜像->App创建,环境搭建等
- Docker镜像下载(Registry仓库到Local仓库)->App下载(Cloud AppStore到Client AppStore)
- Docker镜像上传(Local仓库到Registry仓库)-〉App上传(Client AppStore到Cloud AppStore)
- Docker镜像转容器->运行部署App
5 安全应用超市实现
技术路线采取Java技术实现App Supermarket和Security controller,采用Docker容器实现前述两者的底层管理,并将系统运行在IaaS和SDN环境中,利用SDN的特性,可设计实现流量牵引和流 量获取等应用,如抗DDoS、Web防护。
超市云服务
安全控制平台
安全应用超市 Web展示
应用超市展示
6 结论
安全应用超市的概念将改变安全产品发布和运营的模式,为用户提供一键购买、租赁和升级等功能,隐藏了安全产品复杂的实现和部署环节,通过标准化的应用上载、下载和部署,可大大增加应用的适用环境,降低开发和维护成本。
此外,通过Docker技术实现该系统具有高效、可扩展、易维护等优点;通过安全控制平台可快速支持应用的下载、部署和更新,以及提供高效开放的应用接口,使得用户端整个安全系统可利用软件定义和虚拟化等特性加快安全检测和防护的效率。