我今天分享的话题是OpenStack数据保护思考及实践,我为什么选这个话题呢?我们拿到会务组邀请以后,我们内部定了两个问题,一个是行业云在OpenStack的落地思考,另外一个是EasyStack数据保护思考与实践,因为我们给客户拜访、交流、服务当中,发现很多用户对于OpenStack的安全,或者OpenStack在企业构建以后,如何在哪些方面提高可靠性安全性,有很多疑问。所以基于这一点考虑,我们准备今天的话题也在OpenStack方面的安全防护方面的思考及实践。这是一个完整云系统的参考架构,这个非常细了,包括资源层、服务层、访问层、用户层,这是我们做云的时候参考的模型,我们发现它特意把安全放在跨横的里面,也就是说,不管在资源层、服务层、访问层、用户层,每一层都需要安全,其实安全话题很大。今天因为时间很短,我没有办法展开说,今天更多是说基于OpenStack落地的时候我们应该考虑哪些安全。这张片子列出了整体云安全,包括介入层安全、云自身平台安全、云服务安全、传统云安全、安全运维平台等等。EasyStack是创业公司,我们人员非常有限,我们可能把它们做得很大,所以我们强调一个是专注,一个是开放,专注是专注在专业领域,开放是我们秉持包容的心态,所以我们通过合作伙伴方式一体的完善解决方案,把我们解决方案最终交付给用户,让用户能够放心可靠的使用这个平台。
所以图上蓝色的主要是我们自己关注的OpenStack安全加固,怎么在OpenStack平台里完成数据保护,包括数据备份、数据恢复、容灾。安全方面更多是包括OpenStack计算、存储、网络,这里面会发现落地的时候用户可能不光关心性能,稳定性,还会关心安全。这几个模块其实有很多跟安全相关的点,我们可以完善。所以刚才我也说到,其实我们今天更多话题是想让大家了解OpenStack每个层面模块在社区里面,社区的建议是什么,我们怎么做。这张片子应该是我在两年前拿到的片子,这张片子里总结了一些OpenStack常用的安全技术,包括我们大家耳熟能详的安全组、防火墙技术,每个技术所分布的点,还包括一些特定的点,包括防火墙项目,包括策略安全项目,这个其实是从整体上来看,OpenStack目前已经提供了一些和安全相关的功能,或者一些项目。我们在去介绍整体方案之前,我想让大家看一下OpenStack每个点里面有很多非常细的安全要求,我是分模块来说。我的模块里所列出所有的一些建议或者意见,都是摘自OpenStack社区安全建云手册,里面列出了我们应该做的安全防护措施,通过安全防护措施加固每个模块安全的等级,通过每个模块分组以后,来完善平台安全性。这里面列出了很多,比如提到访问首先用户端访问用户界面的时候,提到的一些方式。同时提到私有云配置的时候,可以通过一些主机登录到平台来进行防护,另外建议不采用二次域名的方式,因为有些用户是主域名下面有二次域名,这些域名是很容易被发现的,所以面临很多安全风险。这只是我总结的一部分,每个模块里都有很多的安全要求。
下面是认证,认证也提到很多,比如说要配置访问控制列表,要配置访问控制策略,包括过期时间也要配置,包括每次请求的大size也要配置,如果不配置的话,可能有一些黑客或者不法人员对整个访问造成堵塞。包括OpenStack和其他组件的访问,建议通过安全电路传输,通过安全协议来访问。这些都是在白皮书里所列到的,大家可以自己回去到OpenStack网站上查,专门有安全的文档,大家可以从文档里面看到非常细的介绍。包括计算也提到很多,包括操作系统层,虚拟机层也需要做加固,这里面也提到很多加固的措施。在存储方面,也提到了很多点,一个是配置文件的读写,控制权限,包括建议我们启动删除的功能,当你把卷删除的时候能够触发底层机制进行删除,保证数据可靠。同时建议需要增加一些和卷加密相关的机制,来对存储在数据卷上的数据或者文件进行加密保护。另外在规划的时候,书里面也提到建议我们配置多后端存储,给不同租户把他的数据放在不同存储说,实现物理隔离,这个其实是社区对Cinder的要求和建议。
网络服务也包括配置文件、权限、访问控制、每个组件安全访问协议的配置,包括要去对端口做一些安全防护,包括做一些配置限额,包括用户访问需要先经过验证,然后再进行后台访问。在镜像方面提到要对镜像卷进行加密,同时对镜像做数字签名,这样规避一些风险。后面是一些对象存储,包括我们在OpenStack平台里除了刚才提到的OpenStack自身的一些项目之外,我们还会使用到一些数据库,相对列,在数据库、相对列社区给到一些建议,比如相对列建议配置相对列隔离机制,我们其实是吸收了社区很好的建议,同时基于我们的理解我们也做了一定强化,我们推出了OpenStack针对ESCloud多层面、多维度云安全体系,在这个体系里,我们看到不光包括安全,还包括数据保护,还包括监控。基本来说我们架构整体分成几个层次,首先是底层系统层,包括操作系统、虚拟机、内核。第二层是数据层,存储在OpenStack不管是对象层,还是块层,这些数据怎么做保护。另外是传输层,包括内部传输,包括内部对外部的传输。然后是接入层,用户登录平台的时候我们也做一些安全防护,刚才谈到更多是一些横向,纵向我们贯穿每一层包括监控、日志管理,对安全的风险管理,包括数据备份,包括平台容灾点在里面。所以这个其实是我们EasyStack针对OpenStack提供的一整套安全防控体系。每一层我们都用了哪些技术呢?
首先看接入层,用户访问OpenStack的时候,可以通过命令行,可以通过API和用户功能界面。在访问层我们做了一些工作,比如要求客户,包括客户端访问OpenStackUI的时候,我们建议必须通过HTS进行访问。第二,我们做了一些访问站点安全加固,提升安全的效果。第三,我们用社区帮助你做身份认证和授权,但是基于我们之前服务的一些企业,对客户的需求,我们自己设计的一个四层组织架构,我们做到了企业、部门、项目、用户,针对每一层我们都提供相应的安全防护策略。另外我们也提供多租户隔离,包括用户配置申请也好,调整也好,都是通过流程化方式进行批复。同时用户在平台里做的任何一项操作,我们都是有日志的,可以做后台审计。另外是虚拟机访问的时候,我们会通过加密机制,让用户访问OpenStack平台所提供的云主机安全防控。这个更多是在接入层,在用户界面层提供一些跟安全相关的东西。
在传输层面,我们也加了很多,除了社区提供的安全组、防火墙之外,我们还提供了很多功能,比如在规划层面,帮助用户设计逻辑格局或者物理格局安全域,通过安全域隔离风险,包括网络也会提供不同网络的保护数据。另外EasyStack有自己一些擅长的领域,安全范围很大,我们不可能包罗万象,我们也会借助第三方力量完善我们解决方案。在传输层结合第三方解决方案,为网络服务加固,包括我们也会结合第三方解决方案来进行有网络安全行为的分析,包括预警功能在里面。在部署的时候,如果我们结合第三方方案的时候,我们在部署的时候会有很多种部署方式,包括纯软方式,包括软硬结合的方式,来满足不同场景。
数据层方面首先会对数据卷加密,如果用户可以提供高端商业化存储的话,商业化存储是有自己内置安全机制在里面的,我们会对于存储在商业存储里面的文件进行加密。同时在分布式存储方面,我们通过对数据链进行加密。另外我们会借助社区的项目,对于数据库、配置文件、日志当中核心敏感数据做加密存储。另外我们建议有能力的客户尽量配置多后端存储,把敏感数据放在相互隔离的存储上,这样会稍微好一些。
在系统层面,因为我们专门有一个团队,系统工程团队,他们主要是做操作系统,然后做内核,包括做虚拟化的。所以他们会定期发布一些针对操作系统也好,针对虚拟机也好的安全补丁,我们把安全补丁打在我们自己虚拟机平台里,去做一些安全防护。除此之外,我们在操作层里也开启很多功能,包括对系统文件做保护,对账号做控制,包括我们会开启审计功能,包括开启操作系统跟安全相关的功能,我们也会打开。这样在操作系统层面和虚拟机层面,我们尽量保证底层统一性。同时我们会联合第三方合作伙伴,来实现操作系统层面的杀毒功能,包括漏洞扫描功能,同时也会跟第三方合作伙伴结合在一起,加入一些主机监控功能,包括主机防护功能等等。你会发现我们整体方案一部分是通过自研方式实现,一部分借助生态,和合作伙伴一起把底层做牢固。
在日志管理和平台监控方面,基本上我们是follow社区一些开源标准,我们无非是在上面做一些改造。在数据备份方面,现在基本有两种思路,一种思路是我们会用社区备份通过对OpenStack控制节点数据、配置文件、主机来做备份恢复。我们也看到很多用户还留存着一些传统的商业化备份软件,我们在项目上也跟他们有合作的。平台高可用方面,我们基本上针对控制平面,计算平面,网络平面,存储都做了高可用性。前不久我们也在客户现场实际模拟机柜感知,我们宕了整个机柜,包括业务和访问都没有中断,当然这是跟可靠性相关的,但是我们恶化总额方案的时候,我们会把可靠性、数据保护,安全防护统统放在安全体系里考虑。最后一个是平台容灾,这个话题尤其金融行业经常会提到怎么做容灾,尤其OpenStack怎么做容灾,经过我们跟客户长期交流探讨,我们设置了基于OpenStack平台的灾备体系,灾备体系里我们主要是防控虚拟机和平台,当虚拟机出现问题的时候我们可以把虚拟机拉出来,当平台出现问题的时候,我们可以在备站点把平台拉起来。当然我们在容灾方面还是更多做数据层,对于IPU、ITO等等是有一些考虑在里面的,可能跟传统相比是稍微有一些差距。
这是我们当时设计的基于OpenStack平台的主备数据及灾备的流程,整体来说,我们会设计一个高敏组概念,把虚拟机放在高敏组里面以后,后台会自动触发虚拟机原数据和虚拟机跨站点的复制,复制以后会通知灾备平台,灾备平台就知道现在两家数据是一致的,当虚拟机做某个站点出问题的时候,我们可以直接把虚拟机拉起来。目前我们考虑的是主备的,下一步我们会考虑同城互备的数据灾备,这个要一点点往下走,等到把所有技术坑趟过以后你才会知道遇到什么问题。我们想法是两个站点做备份的时候,对数据库也好,对于存储也好,我们设计初衷是开放,完全开源,但是路到一步一步走,所以我们最开始的时候,在落地的时候基于SIF,SIF做数据复制的时候是需要单独链路做复制,还是需要一起走。这些都是我们趟过的坑,因为时间问题,我只是简单把我们在OpenStack层面,我们一些针对数据的防护,数据保护,安全防护一些思考和我们的一些实践,大概给大家分享一下。如果大家有兴趣,我们可以在台下一起交流。最后是我们公司微信号,大家如果感兴趣可以加一下,另外是我们开源社区的微信号,主要会发布OpenStack相关的文章。谢谢大家!