译者 | 李睿
审校 | 孙淑娟
企业不应该期望开发人员成为安全专家,因为安全不是他们的本职工作,也不是他们的擅长的领域。与其相反,企业应该让应用安全团队为开发人员提供支持,让他们可以访问安全的框架、库和默认设置,使最安全的选项成为最简单的选择。安全护栏旨在帮助企业做到这一点。
可视化安全护栏将如何使企业的开发人员和安全团队受益,这将帮助员工入门。本文提供了一些可以实施的基本步骤,以将安全护栏引入其应用安全程序。
当提供通过将安全工具无缝集成到应用开发工作流中来编排安全工具的安全护栏时,开发人员有权创建安全代码。他们通过保持低干扰的政策和控制来保持生产力,并且只报告影响很大的相关安全问题。
采用安全护栏可以确保开发团队在不需要安全团队积极参与的情况下快速运行。同样,应用安全程序团队可以通过在开发人员的工作流程中自动化安全控制来进行扩展,确保执行而不是人工执行审查以及跟踪错误修复来扩展。
当控件被纳入开发过程时,开发团队不太可能忽视和绕过安全性。他们不必采取额外的步骤联系安全团队。安全护栏确保最快的部署路径也是最安全的路径。
1、如何将安全护栏带入应用安全程序
Netflix和Airbnb等公司承认有必要让开发人员团队能够构建安全的软件,同时为他们提供做出适当安全决策的灵活性。这些企业和许多其他企业已经在持续集成(CI)/持续交付(CD)中实施了安全护栏。以下一些步骤可以帮助企业开始为开发人员提供一致、可操作的自助式安全治理和控制。
(1)定义护栏:企业可以在开发人员工作流程中实施许多不同类型的安全护栏。对于技术企业内的安全团队来说,从良好的安全策略开始都是至关重要的。应用安全团队已经与开发人员进行交流的安全控制就是一个很好的起点。这些可以是定义软件工件的所有权、遵循特定的依赖许可策略、使用内部工件注册表、使用或不使用特定库、代码审查控制等。
(2)设置范围:并不是所有的代码库都是平等创建的,根据项目的业务风险和关键性,不同的安全护栏可能适用于不同的代码库。一旦知道要实施哪些安全护栏来构建适当的安全性,就可以确定在哪里应用这些安全护栏。
(3)定义触发器:根据为其应用防护机制的基础资产(即代码库、依赖项、拉取请求、容器、EC2实例等),可以在何处以及如何使用它可能会有所不同。例如,可以在创建代码存储库、合并拉取请求、部署容器或每天晚上作为日程安排时使用一些护栏。可以在任何这些事件中触发护栏,以便开发人员可以在适当的时间采取适当的行动。
(4)采取适当的行动:根据设计,护栏可以是预防性的或反应性的,对违规行为可能采取的行动取决于是否打算采取预防性或反应性措施。可以使用反应式护栏按预定义的时间表运行,识别各种护栏的违规行为,并通知相应的所有者。例如,每周找出未配置依赖项扫描和SAST工具的关键代码库,并将违规情况通知所有者。
预防性护栏实时识别违规行为,并通知开发人员。例如,如果未在该存储库上启用依赖扫描,则自动对拉取请求进行注释或使构建失败,或者如果容器不是来自批准的容器注册表,则阻止在Kubernetes中部署容器。
(5)报告:定期报告企业对护栏的遵守情况。护栏的报告消除了许多关于这个安全问题是否必要的非生产性辩论,并使安全风险二元化。决策变得与底层软件资产是否满足预期控制一样简单,而不需要进一步的安全策略或FUD(恐惧、不确定性和怀疑)。
2、为什么安全护栏是应用安全程序的未来
工程和安全团队已经解决了在DevOps期间实施安全的复杂问题。企业往往缺乏安全可见性,开发人员工作流中的安全检查不足,无法以DevOps的速度扩展应用安全程序。安全护栏简化了关联特定于场景的安全策略和控件,这些策略和控件可以在开发人员工作流中定义和应用。这种策略是应用安全程序的未来,因为企业必须授权开发人员在不受安全把关影响的情况下生成安全代码。
安全护栏是确保开发团队在现代软件开发生命周期(SDLC)中采用安全策略和控制的唯一方法。这种采用消除了开发人员与安全团队之间的摩擦,并确保开发人员能够快速且安全地开发应用程序。
通过应用自动化的安全护栏,企业可以降低安全风险,并使部署路径尽可能安全。安全护栏让开发人员能够完全自主地实现与时间相关的关键性能指标,同时让安全团队的瓶颈最小化,与此同时让安全团队腾出时间将他们的知识和技能应用于最紧迫的事项。
安全护栏代表了最终的安全转变,使开发人员能够安全地从代码到云平台。借助持续集成(CI)/持续交付(CD)中预先构建的、场景相关的实时安全策略和控制,企业可以影响开发人员的行为并在软件开发生命周期(SDLC)中构建安全性。
原文链接:https://dzone.com/articles/how-to-bring-the-power-of-security-guardrails-to-y