什么是 DevSecOps?
DevSecOps 是在软件开发过程的每个阶段集成安全测试的实践。它包括鼓励开发人员、安全专家和运营团队之间协作的工具和流程,以构建既高效又安全的软件。DevSecOps 带来了文化转型,使安全成为开发软件的每个人的共同责任。
DevSecOps 代表什么?
DevSecOps 代表开发、安全和运营。它是 DevOps 实践的延伸。每个术语分别定义了软件团队在构建软件应用程序时的不同角色和职责。
开发
开发是规划、编码、构建和测试应用程序的过程。
安全性
安全性意味着在软件开发周期的早期引入安全性。例如,程序员确保代码没有安全漏洞,安全从业人员在公司发布软件之前对其进行进一步测试。
运维
运营团队会发布、监控和修复软件引起的任何问题。
为什么 DevSecOps 很重要?
DevSecOps 旨在帮助开发团队高效地解决安全问题。它是旧版软件安全实践的替代方案,后者难以满足更紧迫的时间表和快速软件更新的需求。为了理解 DevSecOps 的重要性,我们将简要回顾一下软件开发流程。
软件开发生命周期
软件开发生命周期 (SDLC) 是一个结构化的流程,用于指导软件团队制作高质量的应用程序。软件团队使用 SDLC 来降低成本、最大限度地减少错误,并确保软件始终与项目目标保持一致。软件开发生命周期将使软件团队经历以下阶段:
- 需求分析
- 计划
- 建筑设计
- 软件开发
- 测试
- 部署
SDLC 中的 DevSecOps
在传统的软件开发方法中,安全测试是与 SDLC 分开的过程。安全团队只是在构建软件后才发现安全漏洞。DevSecOps 框架通过检测整个软件开发和交付过程中的漏洞来改进 SDLC。
这样做有哪些好处?
践行 DevSecOps 有几个好处:
尽早发现软件漏洞
软件团队将重点放在整个开发过程的安全控制上。他们会在每个阶段进行检查。而不是等到软件完成再进行检查。软件团队可以在早期阶段检测到安全问题,并减少修复漏洞所需的成本和时间。因此,应用程序生成后,用户将体验到最少的中断和更高的安全性。
缩短上市时间
借助 DevSecOps,软件团队可以自动执行安全测试并减少人为错误。它还可以防止安全评估成为开发过程中的瓶颈。
确保法规合规性
软件团队使用 DevSecOps,通过采用专业的安全实践和技术来遵守法规要求。他们将确定系统中的数据保护和安全要求。例如,软件团队使用 AWS Security Hub 根据行业标准自动执行安全检查。
建立安全意识文化
软件团队在开发应用程序时更加了解安全最佳实践。他们能更主动地发现代码、模块或其他用于构建应用程序的技术中的潜在安全问题。
安全地开发新功能
DevSecOps 鼓励开发、运营和安全团队之间灵活协作。他们对软件安全有着相同的理解,并使用常用工具自动执行评估和报告。每个人都关注在不影响安全性的前提下为客户增加更多价值的方法。
DevSecOps 的工作原理
要实施 DevSecOps,软件团队必须首先实施 DevOps 和持续集成。
开发运营
DevOps 文化是一种将开发和运营团队聚集在一起的软件开发实践。它使用工具和自动化来促进两个团队之间实现更好的协作、沟通和透明度。因此,公司可以缩短软件开发时间,同时仍能灵活应对变化。
持续集成
持续集成和持续交付(CI/CD)是一种现代软件开发实践,它使用自动化的构建和测试步骤来可靠高效地交付对应用程序的微小更改。开发人员使用 CI/CD 工具发布应用程序的新版本,并在应用程序可供用户使用后快速响应问题。例如,AWS CodePipeline 是一种可用于部署和管理应用程序的工具。
DevSecOps
DevSecOps 通过在整个 CI/CD 流程中集成安全评估,将安全性引入 DevOps 实践。它使安全成为参与软件构建的所有团队成员的共同责任。在安全团队编写任何代码之前,开发团队会与他们协作。同样,运营团队也会在部署软件后继续监视软件是否存在安全问题。因此,公司可以更快地交付安全软件,同时确保合规性。
DevSecOps 与 DevOps 的对比
DevOps 专注于尽快将应用程序推向市场。在 DevOps 中,安全测试是一个单独的流程,它发生在应用程序开发结束时,即部署之前。通常,由单独的团队对软件进行测试并强制执行安全性。例如,安全团队会设置防火墙,在应用程序构建后测试对应用程序的入侵。
DevSecOps 则将安全测试作为应用程序开发过程本身的一部分。安全团队和开发人员协作保护用户免受软件漏洞的侵害。例如,安全团队设置防火墙,程序员设计代码以防止漏洞,测试人员测试所有更改以防止未经授权的第三方访问。
DevSecOps 有哪些组件?
DevSecOps 实践的成功实施包括以下组成部分:
代码分析
代码分析是调查应用程序源代码中是否存在漏洞并确保其遵循安全最佳实践的过程。
变更管理
软件团队使用变更管理工具来跟踪、管理和报告与软件或要求相关的更改。这样可以防止由于软件更改而导致的意外安全漏洞。
合规性管理
软件团队确保软件符合法规要求。例如,开发人员可以使用 AWS CloudHSM 来证明其符合安全、隐私和防篡改法规,例如 HIPAA、FedRAMP 和 PCI。
威胁建模
DevSecOps 团队会调查在部署应用程序之前和之后可能出现的安全问题。他们会修复所有已知问题并发布应用程序的更新版本。
安全培训
安全培训包括对软件开发人员和运营团队进行最新安全指南的培训。这样,开发和运营团队就可以在构建和部署应用程序时做出独立的安全决策。
DevSecOps 文化是什么?
DevSecOps 文化结合了沟通、人员、技术和流程。
交流
公司通过促进从高层开始的文化变革来实施 DevSecOps。高级领导者将向 DevOps 团队解释采用安全实践的重要性和好处。软件开发人员和运营团队需要适当的工具、系统和鼓励来采用 DevSecOps 实践。
人员
DevSecOps 将带来涉及软件团队的文化转型。软件开发人员不再拘泥于构建、测试和部署代码的传统角色。借助 DevSecOps,软件开发人员和运营团队与安全专家紧密合作,提高整个开发过程中的安全性。
技术
软件团队将在开发过程中使用技术执行自动化安全测试。DevOps 团队使用它来检查应用程序是否存在安全漏洞,而不会影响交付时间表。例如,软件团队使用 Amazon Inspector 大规模实现自动、持续的漏洞管理。
流程
DevSecOps 改变了构建软件的传统流程。借助 DevSecOps,软件团队可以在开发的每个阶段执行安全测试和评估。软件开发人员会在编写代码时检查是否存在安全漏洞。然后,安全团队会测试预发布应用程序是否存在安全漏洞。例如,他们可能会检查以下内容:
- 授权,使用户只能访问他们需要的内容
- 输入验证,以便软件在收到异常数据时正常运行
然后,软件团队会在将最终应用程序发布给最终用户之前修复所有缺陷。
安全测试不会在应用程序上线后结束。运营团队将继续监视潜在问题,进行修改,并与安全和开发团队合作发布应用程序的更新版本。例如,他们可能会使用 Amazon CodeGuru Reviewer 检测安全漏洞、泄露的机密、资源泄漏、并发问题、不正确的输入验证以及与使用 AWS API 和 SDK 的最佳实践的偏差。
DevSecOps 的最佳实践是什么?
公司使用以下方法,通过 DevSecOps 来支持数字化转型。
左移
左移是在软件开发的早期阶段检查漏洞的过程。通过遵循该流程,软件团队可以在构建应用程序时防止未检测到的安全问题。例如,开发人员在 DevSecOps 流程中创建安全代码。
右移
右移指示部署应用程序后重点关注安全性的重要性。某些漏洞可能会逃避先前的安全检查,只有在客户使用该软件时才会显现出来。
使用自动化安全工具
DevSecOps 团队可能需要在一天之内进行多次修订。为此,他们需要将安全扫描工具集成到 CI/CD 流程中。这可以防止安全评估减慢开发速度。
提高安全意识
在构建软件时,公司将安全意识作为其核心价值观的一部分。在开发应用程序中发挥作用的每个团队成员都必须分担保护软件用户免受安全威胁的责任。
常见的 DevSecOps 工具有哪些?
软件团队使用以下 DevSecOps 工具在软件开发过程中评估、检测和报告安全漏洞。
静态应用程序安全性测试
静态应用程序安全测试(SAST)工具可以分析和发现专有源代码中的漏洞。
软件组成分析
软件组成分析(SCA)是自动了解开源软件(OSS)使用情况,以实现风险管理、安全性和许可证合规性的过程。
交互式应用程序安全测试
DevSecOps 团队使用交互式应用程序安全测试(IAST)工具来评估应用程序在生产环境中的潜在漏洞。IAST 由从应用程序内部运行的特殊安全监视器组成。
动态应用程序安全性测试
动态应用程序安全测试(DAST)工具通过从网络外部测试应用程序的安全性来模拟黑客。
敏捷开发领域的 DevSecOps 是什么?
敏捷是一种帮助软件团队更高效地构建应用程序和响应变化的思维方式。软件团队过去常常在一系列不灵活的阶段中构建整个系统。借助敏捷框架,软件团队可以在连续的循环工作流中工作。他们使用敏捷的流程来收集持续的反馈,并在短暂的迭代开发周期内改进应用程序。
DevSecOps 与敏捷开发的对比
DevSecOps 和敏捷并不互斥。敏捷使软件团队能够迅速对变更请求采取行动。同时,DevSecOps 在敏捷开发的每个迭代周期中引入了安全实践。借助 DevSecOps,软件团队可以使用敏捷开发方法生成更安全的代码。
实施 DevSecOps 面临哪些挑战?
公司在向其软件团队推出 DevSecOps 时可能会遇到以下挑战:
文化转变的阻力
多年来,软件和安全团队一直遵循传统的软件构建实践。公司可能会发现他们的 IT 团队很难快速采用 DevSecOps 思维方式。软件团队专注于构建、测试和部署应用程序。同时,安全团队将重点放在确保应用程序安全上。因此,最高领导层需要让两个团队在软件安全实践和及时交付的重要性方面保持一致。
复杂工具集成
软件团队使用不同类型的工具来构建应用程序并测试其安全性。将来自不同供应商的工具集成到持续交付流程中是一个难题。传统的安全扫描程序可能不支持现代开发实践。
AWS 如何支持您的 DevSecOps 实施?
AWS 支持现代 DevSecOps 实践,因此软件团队可以自动执行应用程序的安全性、合规性和数据保护。例如,您可以执行以下操作:
- 使用 Amazon Inspector 大规模实现自动化、持续的漏洞管理。
- 使用 AWS CodeCommit 管理源代码控制并对应用程序进行增量更改。
- 借助 AWS Secrets Manager,您可以轻松地在整个生命周期内轮换、管理和检索数据库凭证、API 密钥和其他密钥。
立即 创建 AWS 账户,开始使用 AWS 上的 DevSecOps。