为什么开发者要对安全负责?
今日关注
开发者的工作不再是简单地编写代码,DevOps运动的兴起和对于云原生技术(cloud-native technologies)的需求,如Containers和Serverless,大大地提高了开发者在IT公司中的作用。这一变化意味着,开发者不仅要承担责任,发布易于管理和扩展的安全代码,而且从安全角度来说,还对开发者充满新的期望。
企业如何保证他们的开发者具有必备的安全技能,从而帮助团队开发和部署安全代码?除了编写代码,开发者还应该做哪些事来协助企业对于安全方面的需求?
我们可以通过当前的云原生技术来回答这些问题。
1
开发者的角色转变
在过去,开发者只负责写代码,然后将这些代码上交给团队进行测试、构建、部署、监控、然后进行安全处理。
大多数企业都改变了这一过程,其中一个很大的原因是DevOps的出现。DevOps鼓励开发者和IT Ops团队之间持续合作,这一驱动理念是,当开发者和IT Ops持续交流和合作时,他们能够更好地了解对方的痛点,然后一同解决问题。
DevOps也有类似的运动,如QAOps,这个运动强调将QA团队融入到DevOps工作流的剩余部分和DevSecOps中,能够将安全测试和操作集成到软件交付周期的剩余阶段中。
与此同时,新云原生技术的出现赋予了开发者新的责任和义务。为了使编写的应用程序能够在复杂的环境中(如Container和Serverless平台)稳定、安全地运行,开发者需要深度了解这些环境的特定要求。只编写代码,或者认为IT Ops团队能够在任何时候都能部署这些代码,是远远不够的。开发者也必须意识到部署的基础设施和目标,并对他们的工作进行相应地调整。
2
让开发者提高安全性
这也是典型企业开发者工作的转变方式。我们现在要特别关注安全性,以及开发者是如何提高它们在安全操作过程中的角色作用,从而为整个企业创造效益。
让开发者参与到安全性中的第一步就是使用DevSecOps模型(上面提到过)。DevSecOps不仅要求安全工程师同开发者和IT Ops开展密切的合作,也要提高开发者对于安全方面的专业知识。
开发者是否知道企业使用的部署技术所引发的一些典型的安全难题?他们是否知道如多层次(multi-layered)防御和白名单等IT安全策略?他们是否知道不同种类的安全威胁会影响到他们的应用程序?
如果这些问题的答案都是不知道,那么你就应该让开发者学习安全知识,因为这是实现完整DevSecOps工作流的唯一方法。
同时,开发者能够通过承担更多的安全归属责任,从而担任安全领域中的一个重要角色。换句话说,当发现有漏洞时,除了追究安全工程师的责任,也要追究开发者的责任。如果代码是由开发者编写的,并且在代码中发现安全漏洞,那么开发者就要负责。企业应该将漏洞和一致性检测直接集成到构建管线中,检查每一个构建的版本,并且配置最低安全基线。虽然安全工程师应该对代码进行测试,以及在生产中对其进行监控,但是承担安全责任的不应该只有他们。
最后,让开发者在编写和处理安全测试,以及监控安全团队部署的规则时担负起重要的角色。即使安全测试和监控不是开发者的主要义务,但是让开发者参与到这些过程中能够帮助他们时刻意识到他们编写的每一个应用程序的安全状态,并且你也可以提供其它的角度和代码专业知识,让整个安全团队受益。
笔者并不是认为开发者是承担安全风险的唯一角色,或者让他们替代勤勤恳恳的安全团队,任何有大型IT团队的企业都应该继续聘用安全领域的专家。
当然,事实上,我们生活在一个复杂、云原生的环境之下,仅凭安全工程师并不能完全发现和解决所有的安全问题,开发者在安全方面的重要性不容小觑。通过赋予开发者更多的能力,让他们在和安全相关的问题上实现人尽其才,企业应该简化安全操作,保证安全性处于应用程序交付开始阶段中最重要的位置。
原文作者:John Morello
编译:信息化观察网
往期精选
围观
热文