DevOps是软件开发中最热门的趋势之一。这一切都是为了帮助企业实现敏捷的服务交付——也就是说,尽可能快地将应用程序从开发到测试再到部署。
快速的应用程序部署似乎与健壮的安全实践不一致,健壮的安全实践通常对新的或更改过的应用程序采取缓慢的方法,以便在允许应用程序接触实时数据或业务网络(或暴露给Internet或客户)之前验证应用程序是安全的。
幸运的是,DevOps和敏捷服务交付本身没有风险,只要创建并遵循正确的安全策略,并且自动化消除了确保遵从性的不必要延迟。
什么是DevOps ?
DevOps,或者开发人员操作,是两种趋势的混合体,一种是将敏捷软件开发方法应用于管理IT操作,另一种是改进开发人员和IT人员之间的协作。DevOps运动认识到,开发人员在一个“竖井”中编写软件,然后把它扔到另一个“竖井”中,由管理员管理应用程序的时代已经过去了。在DevOps模型中,从概念到设计,从编码到测试,从实现到管理,从增强到迁移,最后从替换到退役,每个人都为完整的软件生命周期一起工作。
在实践中,DevOps经常被专门用来指应用程序管理的操作端——换句话说,除了软件架构师、设计人员、程序员和测试人员之外的所有人。这就是我们在这里使用DevOps的方式,它指的是应用程序生命周期的非开发人员功能,包括安全管理。
这里有一个关于DevOps的很好的入门:开始使用devops的3个关键布兰登·巴特勒(Brandon Butler)著。这里有一个关于它的挑战的好段子:为什么每个人都讨厌DevOps弗雷德里克·保罗(Fredric Paul)著。
DevOps通常与云相关联,但它也适用于非云活动。当然,DevOps的兴起恰逢基于云的PaaS(平台即服务)和IaaS(基础设施即服务)的流行,因为传统的IT团队不需要管理开发和部署服务,比如亚马逊Web服务或微软Azure。然而,DevOps中没有任何固有的东西不能应用于在传统数据中心中开发、测试和部署的应用程序。2020欧洲杯预赛
虽然看上去安全策略必须减缓DevOps,事实是,安全不需要产生负面影响,特别是在开发人员和DevOps避免不必要的连接需求变更,以免引发不必要的安全审查,如果DevOps把正确的测试基础设施和网络规则自动化安全测试和政策变化的情况下,连通性变化是必需的。
设置环境
在过去,一切都很慢。传统的应用程序部署流程很长,并且是由流程驱动的。在每个发布之前都要进行一次人为的安全审查。相反,DevOps是一个敏捷的过程,其目标是迭代软件特性增强和快速构建。这种敏捷性部分来自于开发运维人员对这些应用程序的自动化部署。
那么,那些非常重要的安全检查怎么办呢?通过一些前期工作,您可以在不牺牲灵活性或敏捷性的情况下将安全性直接集成到DevOps中。
首先使用防火墙和虚拟局域网创建具有相同配置的安全开发、测试和生产环境。是否适用于云计算或数据中心,开发人员在一个环境相匹配的生产环境,交通方面的权限数据离开应用服务器,2020欧洲杯预赛应用服务器,数据库,访问内部和外部api,所驱动的负载平衡器和内容过滤器,和等等。
是否在开发过程中进行安全检查
确保这些环境被严格锁定——而开发人员甚至没有他们的开发环境的密钥。如果他们想让应用程序和服务器访问资源,比如那些本地数据库或基于云的api,他们需要记录这些请求并提交它们以进行安全审查。这意味着与企业数据安全团队一起记录和验证api和uri、本地IP地址和端口等等。
一旦安全检查完成,企业数据安全人员就会打开端口,启用虚拟隧道,并根据需要重新编写防火墙规则。关键是:在开发、测试和生产环境中同时进行相同的修改。这样的话,如果新的安全规则不起作用,每个人在开发过程中都会知道——如果安全规范在开发中起作用,那么它们在测试和生产中也会起作用。
应用程序部署现在不需要进行安全检查
根据定义,如果在开发过程中对网络资源和路径进行安全检查,那么它应该有利于部署。这要求IT安全团队认真对待安全审查,检查一切:入侵、数据泄漏、是否符合HIPAA和PCI,等等。当然,在开发期间这并不是严格必要的,但是如果第一次就彻底地执行了安全检查,那么就不需要第二次了。
DevOps的一个关键部分是敏捷开发和部署:应用程序永远不会完成,但会不断地发展,比如在开发过程中进行为期两周的sprintScrum开发方法。一般来说,应用程序的连通性要求不应该每周都改变。但是当他们这样做时——比如添加新特性时——开发人员可以在该特性的开发冲刺阶段引入安全审查团队。
例如,应用程序涉众要求应用程序实时映射零售商店位置。这可能意味着开发人员将开始使用谷歌地图API。默认情况下,开发、测试和生产环境中的锁定应用程序服务器无法访问该API;尝试与它对话将会失败,因为防火墙或VLAN不允许通信。这是良好的安全。
一旦开发人员通知IT安全人员应用程序需要访问谷歌Maps API,安全团队就可以验证API的安全性,确定将流量导向到/从谷歌服务器的最佳方式,并对网络安全设置进行正确的更改。瞧!开发人员可以编写和测试他们的代码,DevOps可以自动部署代码,知道它是安全的,不会违反安全策略,不会因为连接失败而崩溃。(安全审查还提供了审查合法许可条件的机会——这是开发人员经常忘记做的事情。)
启用安全DevOps的四个关键步骤
开发人员希望以光速编码,DevOps希望支持代码的快速创建、测试和部署。开发、测试和部署环境是否在云中并不重要。使用DevOps确保敏捷服务交付的秘密是:
- 相同地配置开发、测试和部署环境。
- 在开发过程中执行所有重要的连接安全性检查。
- 根据需要对所有三个环境进行主动更改。
- 确保只有IT安全团队可以调整网络连接、VLAN和防火墙。
遵循所有这些步骤,DevOps将是快速、安全、可靠的。