云端 DevSecOps 中使用 AWS
尽管 DevOps 具有诸多优势,例如更快的软件交付和更高的代码质量,但许多安全负责人出于可以理解的原因对使用 DevOps 仍持谨慎态度。如果部署的是存在漏洞的软件,那么持续交付周期有多快都无济于事。然而,DevOps 严重缺乏的一个领域就是网络安全。
DevSecOps 是一种开发范式,它将安全放在软件开发生命周期 (SDLC) 的左侧。DevSecOps 强调在最早阶段纳入安全检查的必要性。
在本文中,我们将讨论将安全纳入 DevOps 的优势、实施 DevSecOps 的主要障碍以及使用 Amazon 服务实施 DevSecOps 的最佳实践。
为什么 DevOps 不安全?
DevOps 是一套工具、流程和文化理念,使 IT 企业能够加快软件开发过程。这是通过消除开发、测试和运营之间传统的障碍来实现的。DevOps 原则利用自动化和监控所有软件开发操作,使企业能够实现持续集成 (CI) 和持续交付 (CD)。DevOps 可以与区块链、AI、嵌入式、移动和其他类型的技术相结合。
构建有效的 CI/CD 管道可以显着加快开发活动和产品交付速度,从而为解决方案供应商节省时间和金钱。
但是,IT 公司不再仅仅满足于使用更快、更具创新性的软件开发方法。他们还必须考虑网络安全。DevOps 出于多种原因缺乏安全设计 −
传统上,信息安全是在软件开发生命周期的后期处理的,导致发现必须在严格的时间限制内消除的安全缺陷。以传统方式保护每次发布对于 DevOps 方法来说将花费太长时间。
DevOps 通常使用云优先架构和容器化进行实施。这两者都会导致更大的攻击面和更多新的漏洞。
对于每次迭代,都必须更新安全机制或至少对其进行测试。然而,为了达到交付期限,发布团队可能会忽略这些建议。
幸运的是,我们有 DevSecOps:一种向左迁移的理念,其中安全是共同的责任,需要开发人员和 IT 运维专家都考虑安全要求。让我们看看 DevSecOps 与 DevOps 的区别以及它提供的优势。
什么是 DevSecOps?
DevSecOps 在软件开发生命周期的早期实施持续且自动化的安全方法,并在整个过程中确保安全。安全现在成为团队文化和流程的内在组成部分,而不是特定部门的责任。
将安全纳入您的 DevOps 团队可以为您的企业带来以下优势 −
使用 DevSecOps 方法的优势
使用 DevSecOps,您可以将更多时间用于为客户创造价值,并减少在事后或产品使用期间修复发现的漏洞所花费的时间和金钱。但是,向左迁移有其局限性。让我们看看您可能遇到的主要挑战。
实施 DevSecOps 的困难
将安全纳入 DevOps 需要一些企业在流程上进行重大更改。它不仅影响组织和业务流程,还影响网络安全系统。最好提前做好应对这些挑战的准备,因为此类转变几乎总是伴随着一些挑战。让我们看看四个主要的挑战。
转变现有的企业文化
企业最常遇到的问题是采用 DevSecOps 所需的文化转变。在过渡到 DevSecOps 时,您的团队将需要学习很多关于网络安全的知识,对工作挑战更加坦诚,并将安全流程融入他们的日常工作中。
集成 DevSecOps 和敏捷
另一个问题是,一些公司试图完全用 DevSecOps 取代敏捷工作流程。由于他们的失败,他们意识到 DevSecOps 不是适合他们的领域。真正的挑战在于为您的组织找到最佳的敏捷和 DevSecOps 融合方式。
遵守政府法规
对于医疗保健、制造和金融服务等网络安全标准严格的行业的公司来说,采用 DevSecOps 更加困难。这些行业的规定不够灵活,无法让企业充分利用 DevSecOps 技术。
结合传统、DevOps 和 DevSecOps 工具
采用 DevSecOps 还带来了技术障碍。为了将 DevOps、DevSecOps 和传统安全措施(如防火墙和防病毒软件)集成到一个系统中,组织的基础设施必须进行重大更改。您需要使 CI/CD 管道、二进制库、静态应用程序安全测试、软件成分分析等多种技术协同工作。
内置 SDK
Amazon Simple Workflow Service (SWF) 提供了一个完全托管的解决方案,用于集成和改进工作流程和流程。通过 SDK 可以使用 AWS Lambda、Amazon Workspaces、Amazon S3、Amazon DynamoDB、AWS WMS 等服务。
AWS CodeSnippets 是一种符号语言,用于在代码中管理和实施复杂、重复和可重用的操作。该集合包含用于函数、指令和过滤器的操作。
过渡到 DevSecOps 时,您应该使用哪些 AWS 服务?
使用来自多个供应商的工具开发完整的 CI/CD 管道非常困难,因为您必须考虑连接器、数据收集和兼容性以及保护每个工具的工作。每次工具升级也可能使您的工作量增加并损害您的软件基础设施或自动化流程。这就是为什么我们更喜欢使用 AWS 工具和服务来保护 DevOps,这些工具和服务有助于我们构建一致且安全的管道。AWS 虚拟基础设施包含一套用于自动化代码测试的工具,特别是用于在整个代码开发和质量保证过程中执行安全检查。
AWS 服务目录
AWS 为其服务提供了一个集成的服务目录,例如 Amazon API Gateway、AWS Lambda(AWS Lambda)和 AWS Elastic Beanstalk。
除了目录服务之外,AWS 还包括许多其他工具,这些工具通常会被集成。您经常使用的其他 Amazon 服务如下 −
Amazon SNS
Amazon Connect
AWS Snowball Edge
AWS Security Hub
AWS Automation 命令行界面 (AWS Automation CLI) 是一个用于连接到 AWS Automation 服务的图形界面。AWS Kinesis Firehose 是一种完全托管的流处理服务,在 Amazon AWS 云中运行,并允许从传感器、物联网、日志文件、文本和其他文件、云存储和其他来源收集数据。您可能遇到的挑战之一是维护 Amazon Elastic Computing Cloud 上的 HTTP 服务器卷 (EC2)。借助 AWS Elasticache,您可以更好地控制 HTTP 服务器卷并读取服务器日志。
构建可靠的 CI/CD 管道
您可以使用以下 AWS 工具和服务将安全集成到 DevOps 管道中,以实现自动化代码生成、部署和分析 −
Amazon CloudFormation – 用于自动安全地指定和供应基础设施资源的服务。DevSecOps 专业人员可以使用此服务为演示流程构建安全的模板。
AWS Lambda – 一种无服务器计算平台,它会自动响应检测到的触发器来运行您的代码。对于范围内的安全组,您可以使用它来执行静态代码分析和动态堆栈验证。
Amazon Systems Manager 参数存储 – AWS Systems Manager 的一项功能,允许您安全地保存配置和管理机密。Parameter Store 使 Amazon 架构变得透明且易于管理。
AWS CodeBuild 是一种用于编译源代码、运行测试和准备软件包以进行分发的服务。
AWS CodeCommit – 一种用于托管基于 Git 的安全存储库的源代码控制服务。您的 DevSecOps 团队必须设置其 Git 客户端以与 AWS CodeCommit 存储库通信才能使用它。
Amazon CodeDeploy — 用于自动将代码部署到基于 AWS 的、本地和第三方计算服务的服务。
AWS CodePipeline – 一款强大的 CI/CD 工具,使 DevOps 开发人员能够自动化预防性和调查性安全控制。AWS CodePipeline 的 DevSecOps 实施提供了快速、安全的软件更新。
结论
总之,DevOps 通过实现更快、更有效的产品交付,彻底改变了软件开发。安全检查通常在软件开发周期的最后阶段进行,因此安全性一直是被忽略的要素。一种称为 DevSecOps 的左移方法侧重于从一开始就将安全集成到开发过程中。它确保开发人员和 IT 运维专家共同承担安全责任,培养一种将安全作为组织日常运营不可分割部分的文化。