在当今世界中,如果组织不采取足够可靠的信息安全措施,可能会导致严重的后果。信息安全需要成为持续交付流程中不可分割的一部分,这就是为什么DevSecOps概念变得越来越流行的原因。
DevOps提供了一种保持敏捷性并以极高的效率运行的方法,但是提高效率绝不能以牺牲安全性为代价。要优化DevOps安全性,将其作为CI/CD流水线的集成部分,你可以采纳以下10个步骤。
1.安全编码
成功优化DevOps安全性的第一步是实施安全的编码实践。为了使其余CI/CD流水线绝对安全,软件代码本身就需要抵抗安全威胁。
最好的解决方法是建立组织中所有开发人员都可以遵循的编码标准。更重要的是,这些编码标准需要作为CI流水线的一部分加以实施。
2.自动执行代码审查
将新的代码行推送到存储库时,需要对其进行检查,然后再进行进一步处理。如果手动执行此步骤会很慢,这就需要自动化。
借助可用的代码分析工具,代码审查可以完全自动化。在采取进一步措施之前,将根据已知漏洞检查代码。这样可以防止将错误的代码提交到最新版本。
3.获得整个团队支持
前面的两个步骤需要一个重要的要素:团队中每个人的参与。为了使代码标准和自动代码审查保持有效,开发和部署过程中涉及到的每成员都要必须意识到安全性。
最好的做法是将开发人员,DevOps专家和安全团队整合在一起。安全不能再仅仅被视为运维或安全专家的事情,而也应被视为开发过程的重要组成部分。
4.CI/CD流水线
安全即代码( Security as code )是一个相对较新的概念,但是自动化工具和最佳实践的集成使该方法非常适合提高安全性和DevOps的敏捷性。
CI/CD流水线分为几个阶段,包括预提交和构建。除非新的更新通过软件组件分析,否则永远不会成功构建。不仅代码需要遵循严格的准则,而且其中的软件包和模块还必须根据已知的漏洞和安全标准进行测试。
5.采用成熟的安全标准
真正的挑战是要遵循的一致的安全标准,而克服此挑战的最佳方法是对CI/CD流水线采用久经考验的安全合规性标准。DevOps依靠可重复的流程来保持敏捷,因此也要使安全性成为可重复的过程。
当你仔细研究AWS CodePipeline等部署工具时,你会发现集成经过测试的安全标准比你想象的要容易。而且,诸如CodePipeline之类的工具甚至可以采用更大,更全面的漏洞库测试你的代码。
6.模拟演练
当你尝试优化DevOps安全性时,模拟演练成为该过程的重要组成部分。通过此,整个过程可以变得更加敏捷。
模拟演练弥补了快速迭代需求与更高安全性需求之间的鸿沟。通过在临时环境中进行临时部署,可以增加额外的安全性,而不必冒着对生产环境进行不安全部署的风险。
7.减少攻击面
生产环境是接下来要关注的部分。组织希望能够主动地减少攻击面,这意味着要坚持云安全最佳实践,例如对访问管理保持谨慎,并确保授予最少要求的特权。
其他(例如入口和端口管理)也是如此。Kubernetes及其许多工具使减少攻击面变得更加容易。例如,你可以使用服务网格进行Pod到Pod的通信,而无需开放整个集群的网络。
8.监控和弹性伸缩
安全是一个持续的过程;从来没有一次过的事情。你不能期望在安全的环境中部署安全的代码然后就可以置之不理,仍然需要监视。幸运的是,你现在能够监视一个过程更为直观,并可以做到弹性伸缩。
例如,借助自动化工具和服务(例如CloudWatch),使日志和服务器活动监视变得更加容易。你可以定义触发器,并在检测到恶意活动时向你发送警报。这使你可以更快地做出反应并进一步扩展安全性。
9.审查和完善
在集成和优化DevOps安全性时要牢记的一件事:开始时会遇到软件开发和部署速度变慢的情况。在对CI/CD流水线进行更改时,你不能期望保持相同的敏捷性。在这里,不断进行评估和改进变得很重要,组织的敏捷度因此也将会提高。
随着安全性成为软件开发流程中不可分割的一部分,并且开发周期中的每个人都更加了解安全性要求,你将看到新的迭代可以更快地完成安全性检查。
10.保持警报级别
查看通过安全检查的代码的感觉是很棒的,但是你绝对不应放松警惕。时刻谨记,DevOps中的安全性是一个持续的过程。组织也将会不断找到新的方法来提高安全性,简化流程,并在实施过程中更好地将两者结合在一起。
总之,正确实施这些步骤,你将拥有完全安全的DevOps方法,而所有这些都可以帮助组织实现更高的安全性。
译文链接: https://caylent.com/10-steps-to-optimizing-devops-and-security
登录后评论
立即登录 注册