精品项目

  • 首页Our Projects使用 AWS 开发工具实现早期反馈循环,以将安全性向左移动 安全博客

使用 AWS 开发工具实现早期反馈循环,以将安全性向左移动 安全博客

2026-01-27 12:58:34 5

在 AWS 开发工具中实现早期反馈循环以推动安全性向左转移

重点总结

Key Takeaways

早期反馈循环能透过自动化检查为开发人员提供持续的反馈,提升代码审查效率和开发人员生产力。采用推动安全性向左转移的做法,帮助开发团队在产品正式上线前识别潜在的安全问题。利用 AWS 开发工具如 CodeCommit、CodePipeline、CodeBuild 和 CodeGuru,可实现自动化的安全检查流程,促进开发工作中的安全意识。

在当今的开发环境中,早期反馈循环是提供持续反馈的关键,它透过自动化检查使开发者能够及早采取补救措施,从而提高代码审查的效率,进而提升生产力。在此过程中,可以在审查前确认基本的安全性和合规性要求,建立代码标准和质量的共同期望,并将治理机制推向左侧。

在这篇文章中,我们将展示如何使用 AWS 开发工具 实现向左推进的安全性做法,赋能开发人员在其开发实践中建立早期反馈循环。你将使用 AWS CodeCommit 安全地托管 Git 仓库,使用 AWS CodePipeline 自动化持续交付流程,使用 AWS CodeBuild 来构建和测试代码,以及使用 Amazon CodeGuru Reviewer 来检测潜在的代码缺陷。

为什么推动安全性向左转移非常重要

当今的开发人员是组织中不可或缺的一部分,负责构建和维护最关键的客户应用程序。他们需要具备识别产品上线前潜在安全问题的知识、工具和流程。

因此,推动安全性向左转移的重要性不言而喻。向左转移 是指在软件开发的早期阶段检查漏洞和问题的过程。遵循这一流程应成为更广泛的应用安全审查和威胁建模过程的一部分,软件团队能有效防止在构建应用程序时出现未检测到的安全问题。现代的 DevSecOps 工作流程不断向开发者及其实践转移,旨在实现以下目标:

在开发人员之间促进对其代码安全性的责任。赋予开发团队提前修复问题的能力,并能以自己的节奏进行。透过早期反馈循环提高风险管理,实现潜在安全问题的早期可见性。

你可以利用 AWS 开发工具 提供持续的早期反馈,帮助开发人员在每次提交代码后获得反馈。

使用 AWS 开发工具实现早期反馈循环,以将安全性向左移动 安全博客

解决方案前提

要跟随此解决方案,请确保你具备以下前提条件:

拥有一个 AWS 帐户可以访问以下 AWS 服务:AWS Cloud9AWS CloudFormationAWS CodeBuildAWS CodeCommitAmazon CodeGuruAWS CodePipelineAWS 身份与访问管理 (IAM)AWS Lambda

确保你对列出的服务和 DevOps 实践有基本的工作知识。

解决方案概述

以下图示展示了解决方案的架构。

我们将展示如何使用 AWS 开发工具包含 CodeCommit、CodePipeline、CodeBuild 和 CodeGuru设置 CI/CD 管道,并与代码库集成以检测代码安全漏洞。如上图所示,解决方案包括以下步骤:

开发人员将新分支提交到代码库。开发人员为主分支创建拉取请求。拉取请求会启动两个工作:一个 Amazon CodeGuru Reviewer 代码扫描和一个 CodeBuild 工作。CodeGuru Reviewer 使用程序分析和机器学习来帮助检测 Java 和 Python 代码中的潜在缺陷,并提供改善建议。它能够帮助发现安全漏洞、秘密资料、资源泄漏、并发问题、无效的输入验证,以及偏离 AWS APIs 和 SDK 的最佳实践。你可以使用配置的第三方工具例如 Bandit来检测 Python 代码中的安全问题。CodeGuru Reviewer 或 CodeBuild 将代码扫描的结果写入拉取请求,为开发人员提供一个统一的位置来审查与其代码更新相关的发现。

以下表格展示了一些其他工具,根据你评估的代码或产物的类型可以整合进早期反馈链中:

早期反馈 安全工具用法许可证cfnguard cfnnag cfnlint基础设施语法检查和验证cfnguard 许可证 cfnnag 许可证 cfnlint 许可证CodeGuru BanditPythonBandit 许可证CodeGuruJavanpmaudit Dependabotnpm 库Dependabot 许可证

当你在 AWS 帐户中部署解决方案时,可以查看如何将 Bandit 整合进部署管道,使用 AWS CodeBuild 设置的 buildspec 文件,如下图 2 所示。你可以通过类似的方法实施表中其他工具。

操作指南

要部署解决方案,请完成以下步骤:

使用 CloudFormation 模板部署解决方案将 CodeGuru 与代码库关联创建对代码库的拉取请求审查拉取请求中的代码扫描结果并处理发现

部署解决方案

第一步是使用 CloudFormation 将所需资源部署到你的 AWS 环境中。

部署解决方案点击以下的 Launch Stack 按钮来部署解决方案的 CloudFormation 模板:

由于所列服务在 AWS US East (N Virginia) 区域均可用,因此解决方案默认在此处部署。欲在其他区域部署,请在控制台导航栏中使用区域选择器,并确保所需服务在你选择的新区域中受支持。服务的可用性请见 AWS 服务按区域。

在 Quick Create Stack 页面上,执行以下操作:保留提供的参数默认值。滚动至底部,在 Capabilities 部分,选择 I acknowledge that AWS CloudFormation might create IAM resources with custom names。点击 Create Stack。当 CloudFormation 模板完成时,打开 AWS Cloud9 控制台。在 Environments 表中,对于 provisioned shiftleftblogcloud9ide 环境,选择 Open,如图 3 所示。

Provisioned 的 Cloud9 环境将在新标签页中开启。等待 Cloud9 初始化两个示例代码库:shiftleftsampleappjava 和 shiftleftsampleapppython,如图 4 所示。在本文中,你将仅使用 Python 示例代码库 shiftleftsampleapppython,但我们所述的步骤也适用于 Java 的代码库。

将 CodeGuru Reviewer 与代码库关联

下一步是将 Python 代码库与 CodeGuru Reviewer 关联。关联后,CodeGuru Reviewer 会在你创建拉取请求时分析并在发现的问题上发表评论。

将 CodeGuru Reviewer 与代码库关联打开 CodeGuru 控制台,在左侧导航窗格中,选择 Reviewer 下的 Repositories。在 Repositories 部分,选择 Associate repository and run analysis。在 Associate repository 部分,执行以下操作:对于 Select source provider,选择 AWS CodeCommit。对于 Repository location,选择 shiftleftsampleapppython。在 Run a repository analysis 部分,执行以下操作,如图 5 所示:对于 Source branch,选择 main。对于 Code review name optional,输入名称。对于 Tags optional,保留默认设置。点击 Associate repository and run analysis。

CodeGuru 会启动 Full repository analysis,其状态为 Pending,如图 6 所示。完整分析约需 5 分钟完成。等待状态从 Pending 变为 Completed。

创建拉取请求

接下来的步骤是创建一个新分支,并推送示例代码到代码库,通过创建拉取请求来启动 CodeGuru Reviewer 和 CodeBuild 的代码扫描。

创建新分支在 Cloud9 IDE 中,找到终端并运行以下命令创建新分支。

bash cd /environment/shiftleftsampleapppython git checkout b pythontest

确认你正在新分支上工作,该分支会在 Cloud9 IDE 终端中高亮显示,如图 7 所示。

bash git branch v

创建新文件并将其推送到代码库创建一个名为 samplepy 的新文件。

bash touch samplepy

复制以下示例代码,将其粘贴到 samplepy 文件中并保存变更,如图 8 所示。

python import requests

data = requestsget(https//wwwexampleorg/ verify=False) print(datastatuscode)

提交对代码库的更改。

bash git status git add A git commit m shift left blog python sample app update

注意:如果收到需要设置姓名和电子邮件地址的消息,可以忽略,因为 Git 会自动为你设置这些,提交将会成功完成。

将更改推送到代码库,如图 9 所示。

bash git push origin pythontest

创建新拉取请求打开 CodeCommit 控制台,选择名为 shiftleftsampleapppython 的代码库。在 Branches 下拉菜单中,选择你创建并推送的新分支,如图 10 所示。

飞鱼加速器官网地址在新分支中,选择文件 samplepy,确认文件包含你所做的更改,然后选择 Create pull request,如图 11 所示。

出现通知,表明新代码更新可以合并。

在 Source 下拉列表中选择新分支 pythontest

订阅我们的时事通讯

获取更多更新