使用 AWS 开发工具实现早期反馈循环,

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

重点总结

Key Takeaways

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

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

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

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

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

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

工作流程不断向开发者及其实践转移,旨在实现以下目标:

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

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

解决方案前提

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

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

解决方案概述

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

删除)

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

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

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

早期反馈 – 安全工具用法许可证
, ,基础设施语法检查和验证, ,
CodeGuru,Python
CodeGuruJava
,npm 库

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

![Bandit 在 CodeBuild删除)

操作指南

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

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

部署解决方案

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

部署解决方案

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

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

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

![Cloud9删除)

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

![Cloud9删除)

将 CodeGuru Reviewer 与代码库关联

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

将 CodeGuru Reviewer 与代码库关联

  1. 打开 ,在左侧导航窗格中,选择 Reviewer 下的 Repositories
  2. Repositories 部分,选择 Associate repository and run analysis
  3. Associate repository 部分,执行以下操作:
  4. 对于 Select source provider ,选择 AWS CodeCommit
  5. 对于 Repository location ,选择 shift-left-sample-app-python
  6. Run a repository analysis 部分,执行以下操作,如图 5 所示:
  7. 对于 Source branch ,选择 main
  8. 对于 Code review name – optional ,输入名称。
  9. 对于 Tags – optional ,保留默认设置。
  10. 点击 Associate repository and run analysis

![CodeGuru删除)

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

![CodeGuru删除)

创建拉取请求

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

创建新分支

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

bash cd ~/environment/shift-left-sample-app-python git checkout -b python- test

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

bash git branch -v

![Cloud9 IDE删除)

创建新文件并将其推送到代码库

  1. 创建一个名为 sample.py 的新文件。

bash touch sample.py

  1. 复制以下示例代码,将其粘贴到 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

Required fields are marked *