重点总结
在当今的开发环境中,早期反馈循环是提供持续反馈的关键,它透过自动化检查使开发者能够及早采取补救措施,从而提高代码审查的效率,进而提升生产力。在此过程中,可以在审查前确认基本的安全性和合规性要求,建立代码标准和质量的共同期望,并将治理机制推向左侧。
在这篇文章中,我们将展示如何使用 实现向左推进的安全性做法,赋能开发人员在其开发实践中建立早期反馈循环。你将使用 安全地托管 Git 仓库,使用 自动化持续交付流程,使用 来构建和测试代码,以及使用 来检测潜在的代码缺陷。
当今的开发人员是组织中不可或缺的一部分,负责构建和维护最关键的客户应用程序。他们需要具备识别产品上线前潜在安全问题的知识、工具和流程。
因此,推动安全性向左转移的重要性不言而喻。"向左转移 " 是指在软件开发的早期阶段检查漏洞和问题的过程。遵循这一流程(应成为更广泛的应用安全审查和威胁建模过程的一部分),软件团队能有效防止在构建应用程序时出现未检测到的安全问题。现代的
工作流程不断向开发者及其实践转移,旨在实现以下目标:
你可以利用 提供持续的早期反馈,帮助开发人员在每次提交代码后获得反馈。
要跟随此解决方案,请确保你具备以下前提条件:
确保你对列出的服务和 DevOps 实践有基本的工作知识。
以下图示展示了解决方案的架构。
删除)
我们将展示如何使用 AWS 开发工具(包含 CodeCommit、CodePipeline、CodeBuild 和 CodeGuru)设置 CI/CD管道,并与代码库集成以检测代码安全漏洞。如上图所示,解决方案包括以下步骤:
以下表格展示了一些其他工具,根据你评估的代码或产物的类型可以整合进早期反馈链中:
早期反馈 – 安全工具 | 用法 | 许可证 |
---|---|---|
, , | 基础设施语法检查和验证 | , , |
CodeGuru, | Python | |
CodeGuru | Java | |
, | npm 库 |
当你在 AWS 帐户中部署解决方案时,可以查看如何将 整合进部署管道,使用 AWS CodeBuild 设置的 文件,如下图 2 所示。你可以通过类似的方法实施表中其他工具。
![Bandit 在 CodeBuild删除)
要部署解决方案,请完成以下步骤:
第一步是使用 CloudFormation 将所需资源部署到你的 AWS 环境中。
由于所列服务在 AWS US East (N. Virginia) 区域均可用,因此解决方案默认在此处部署。欲在其他区域部署,请在控制台导航栏中使用区域选择器,并确保所需服务在你选择的新区域中受支持。服务的可用性请见 。
![Cloud9删除)
![Cloud9删除)
下一步是将 Python 代码库与 CodeGuru Reviewer 关联。关联后,CodeGuru Reviewer会在你创建拉取请求时分析并在发现的问题上发表评论。
![CodeGuru删除)
![CodeGuru删除)
接下来的步骤是创建一个新分支,并推送示例代码到代码库,通过创建拉取请求来启动 CodeGuru Reviewer 和 CodeBuild 的代码扫描。
bash cd ~/environment/shift-left-sample-app-python git checkout -b python- test
bash git branch -v
![Cloud9 IDE删除)
sample.py
的新文件。bash touch sample.py
sample.py
文件中并保存变更,如图 8 所示。
data = requests.get("https://www.example.org/", verify=False)
print(data.status_code) ```
![Cloud9 IDE删除)
1. 提交对代码库的更改。
`bash git status git add -A git commit -m "shift left blog python sample appupdate"`
> **注意** :如果收到需要设置姓名和电子邮件地址的消息,可以忽略,因为 Git 会自动为你设置这些,提交将会成功完成。
1. 将更改推送到代码库,如图 9 所示。
`bash git push origin python-test`
![Git删除)
#### 创建新拉取请求
1. 打开 ,选择名为 **shift-left-sample-app-python** 的代码库。
2. 在 **Branches** 下拉菜单中,选择你创建并推送的新分支,如图 10 所示。
![CodeCommit删除)
1. 在新分支中,选择文件 `sample.py`,确认文件包含你所做的更改,然后选择 **Create pull request** ,如图 11 所示。
![CodeCommit删除)
出现通知,表明新代码更新可以合并。
1. 在 **Source** 下拉列表中选择新分支 **python-test**
Leave a Reply