View a markdown version of this page

创建代码审查 - AWS 安全代理

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建代码审查

在 AWS 安全代理 Web 应用程序中创建代码审查,以扫描您的源代码存储库和 S3 源代码是否存在安全漏洞。代码审查会对整个代码库进行全面的静态分析,识别安全问题并提供补救指导。

与分析单个代码更改的基于拉取请求的代码审查不同(参见查看拉取请求中的代码安全发现),按需代码审查会扫描您的完整源代码以识别安全漏洞并验证是否符合组织的安全要求。

在此过程中,您将通过选择源代码输入、配置权限并运行审查来创建代码审查。

先决条件

在开始之前,请确保您满足以下条件:

  • 访问 AWS 安全代理 Web 应用程序

  • 您的代理空间中至少有一个已连接的存储 GitHub 库或 S3 存储桶

提示

如果您已经将 GitHub 存储库连接到 Agent Space,则代码审查已准备就绪,无需进行其他设置。从 Agent Space 页面的代码审查卡片中选择 “在 We b 应用程序中启动”,或者直接启动 Web 应用程序。

如果您需要连接其他源或配置 S3 存储桶,请参阅启用代码审查

访问代码审查页面

导航到 Web 应用程序中的代码审查部分。

  1. 登录 AWS 安全代理 Web 应用程序。

  2. 在左侧边栏中,选择代码审查

  3. 您会看到现有代码审查的列表及其源信息、上次运行状态和结果摘要。

创建代码审查

通过配置其源代码输入和权限来设置新的代码审查。

  1. 代码审查页面上,选择创建代码审查

配置代码审查详细信息

提供标题并选择要查看的源代码。

  1. 在标字段中,输入代码审查的描述性名称。

    提示

    使用标识应用程序、存储库或审查范围的名称。例如,“计费服务安全审查” 或 “基础架构代码审计”。

  2. 在 “来源” 部分,选择此评论的源代码输入。从两个选项卡中选择:

GitHub 存储库

从连接到您的代理空间的存储库中进行选择。

  1. 选择 “GitHub 存储库” 选项卡。

  2. 在 “集成存储库” 表格中,选中要包含在审阅中的每个存储库旁边的复选框。

  3. 使用搜索字段按名称查找特定的存储库。

注意

此处仅显示通过代码审查配置连接到代理空间的存储库。要添加更多存储库,请在管理控制台中选择 “管理” 或要求管理员更新 Agent Space 配置。

S3 来源

从连接到您的代理空间的 S3 存储桶中选择 ZIP 文件。您的 Agent Space 管理员可以配置哪些 S3 存储桶可用。存储在其中一个存储桶中的任何 ZIP 文件都可用作代码审查的来源。

  1. 选择 S 3 源选项卡。

  2. 输入您要包含在审阅中的每个 ZIP 文件的 S3 URI。您最多可以添加 30 个 S3 源。

注意

S3 源必须是存储在连接到代理空间的 S3 存储桶中的 ZIP 文件。要提供更多存储桶,请参阅启用代码审查

配置 权限

为此代码审查选择 IAM 服务角色和可选 CloudWatch 日志组。

  1. 在 “权限” 部分中,找到 “服务角色” 下拉列表。

  2. 从您配置的服务角色中选择 IAM 角色。

    注意

    服务角色必须有权访问 S3 中的源代码并写入 CloudWatch 日志,以及代码审查所需的任何其他 AWS 资源。服务角色是在 AWS 管理控制台中的代码审查设置期间配置的。

  3. (可选)在CloudWatch 日志组下拉列表中,选择用于存储代码审查执行日志的日志组。

    注意

    如果您未选择日志组,AWS 安全代理会创建一个用于存储代码审查日志的默认日志组。

配置自动代码修复

启用自动修复,让 AWS Security Agent 在审查完成后立即为所有发现生成代码修复。

  1. 在 “自动代码修复” 部分,选中 “启用自动代码修复” 复选框。

AWS 安全代理如何提供修复取决于来源:

  • 私有 GitHub 存储库 — AWS 安全代理向存储库提交包含修复的拉取请求。

  • 公共 GitHub 存储库 — 为了避免在漏洞修复之前将其泄露,AWS 安全代理不会打开拉取请求。取而代之的是,它在发现结果中附上了建议的差异,你可以从网络应用程序下载并私下申请。

  • S3 源-代码补救不可用。查看发现的详细信息并手动应用修复程序。

重要

所有具有读取权限的人都可以看到提交到私有仓库的修复拉取请求。合并前请查看更改。仅当选择 GitHub 存储库作为源时,自动代码修复才可用。

注意

禁用后,您仍然可以在审查完成后手动触发针对单个 GitHub-sourced 发现的代码修复。

配置模拟验证

启用模拟验证以动态确认发现的漏洞是否可在正在运行的应用程序中被利用。

  1. 在 “模拟验证” 部分,选中 “启用模拟验证” 复选框。

启用后,AWS 安全代理会在静态分析完成后配置模拟环境。它加载您的源代码,启动环境内部的服务,并尝试利用扫描期间发现的漏洞。然后,使用验证状态更新调查结果,表明该漏洞是否已成功利用。

注意

模拟验证目前仅适用于独立的 dockeriable 应用程序。当选择多个存储库作为来源时,模拟验证不可用。

重要

模拟验证会增加代码审查运行的处理时间。验证步骤预置环境并运行漏洞利用尝试。这通常需要 1-3 个小时,具体取决于发现的数量和应用程序的复杂性。

允许的网络目的地

模拟环境的出站网络访问权限仅限于预定义的许可名单。在验证期间,您的应用程序可以访问以下域:

下表列出了允许的域名及其用途。

域: 用途

.amazonaws.com, .aws.amazon.com

AWS 服务

.public.ecr.aws

Amazon ECR Public

.docker.com, .docker.io

Docker Hub

.github.com, .githubusercontent.com

GitHub

.gitlab.com

GitLab

.npmjs.com, .npmjs.org

npm 注册表

.pypi.org, .pypi.python.org, .pythonhosted.org

Python 包索引

.crates.io, .rustup.rs

Rust 软件包

.maven.org, .gradle.org

Java/Gradle 包裹

.nuget.org

.NET 包

.rubygems.org, .ruby-lang.org

Ruby 软件包

.golang.org, .pkg.go.dev, .goproxy.io

Go 套餐

.nodejs.org, .yarnpkg.com

Node.js

.alpinelinux.org, .debian.org, .ubuntu.com, .centos.org, .fedoraproject.org

Linux 发行版本库

.cloudfront.net

CloudFront 分布

.google.com, .googleapis.com

谷歌 API

.microsoft.com, .visualstudio.com

微软服务

.sourceforge.net, .bitbucket.org

源托管

注意

如果您的应用程序需要网络访问不在此列表中的域,则网络防火墙将阻止该连接。依赖上面未列出的外部 API 或服务的应用程序可能无法在模拟环境中正确启动。

创建代码审查

  1. 检查您的配置以确保准确性。

  2. 选择 “创建代码审查”。

您将被重定向到代码审查详细信息页面,您可以在其中开始审核。

运行代码审查

创建代码审查后,开始运行以开始分析。

  1. 在代码审查详细信息页面上,选择开始审查

  2. AWS 安全代理开始分析您的源代码。

您也可以从 “代码审查” 列表页面开始审阅,方法是选择要运行的代码审查旁边的 “开始审阅”。

监控代码审查的运行情况

跟踪代码审查的执行进度。

查看运行阶段

代码审查运行会经历以下阶段,显示为进度指示器:

  1. 预检 — AWS 安全代理会验证您的源代码访问权限并设置测试环境。预检检查包括:

    • 服务基础设施设置

    • S3 源访问验证

    • 设置测试环境

  2. 静态分析 — AWS 安全代理会扫描您的源代码中是否存在安全漏洞和违反要求的情况。

  3. 模拟验证(可选)— 如果启用了模拟验证,AWS Security Agent 将配置模拟环境并部署您的应用程序。然后,它会尝试利用静态分析期间发现的漏洞。此步骤确认目标运行时发现的结果是否可被利用。只有当您在创建代码审查期间启用模拟验证时,才会出现此阶段。

  4. 最终确定 — AWS 安全代理汇编调查结果并生成结果摘要。

查看运行详情

在运行详细信息页面上,在选项卡之间导航以监控进度:

  • 代码审查运行-查看运行摘要,包括运行 ID、创建时间、状态、持续时间、任务时长、严重级别细分和风险类型图表。

  • 印前检查-查看每个验证步骤的印前检查进度和状态。

  • 代码审查日志 — 查看 AWS Security Agent 在审查期间确定和执行的任务,以及每个步骤的详细任务日志。

  • 模拟验证-启用模拟验证后,查看配置状态、单个发现的验证任务及其结果。

  • 调查结果-审查完成后查看安全调查结果(请参阅查看代码审查的结果)。

运行历史记录

每次代码审查都会保留所有运行的历史记录。在代码审查详情页面上:

  • 最新运行” 部分显示最近的运行及其开始时间、状态、持续时间和 ID。

  • 所有运行” 表列出了之前的所有运行及其开始时间、状态、持续时间、结果摘要和 ID。

  • 选择 “监控运行” 以查看最新活动运行的详细信息。

  • 选择任何跑步的开始时间链接以查看其完整详细信息。

后续步骤

运行代码审查后:

  • 查看安全调查结果及其补救指南(请参阅查看代码审查的结果

  • 通过自动拉取请求或手动修复来修复发现(请参阅修复代码审查结果

  • 实施修复后再进行审查以验证补救措施

  • 随着代码库的发展,调整代码审查配置或源代码