View a markdown version of this page

查看拉取请求中的代码安全发现 - AWS 安全代理

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

查看拉取请求中的代码安全发现

为您的存储库启用拉取请求的代码审查后,AWS Security Agent 会自动分析拉取请求并将安全发现直接发布到您的源代码控制提供商中。这使开发人员无需离开拉取请求即可在正常工作流程中解决安全问题。

注意

此页面适用于 GitHub 拉取请求、 GitLab 合并请求和 Bitbucket 拉取请求。所有提供商的体验都差不多。

代码审查在拉取请求中的工作原理

当您在启用了代码审查的存储库中提交拉取请求(或合并请求 GitLab)时,AWS 安全代理会自动开始分析。

  1. 拉取请求分析触发器-在您启用了代码审查功能的存储库中,拉取请求被标记为 “准备审阅” 时,就会触发代码审查。不分析拉取请求草稿。

  2. 分析确认-当 AWS Security Agent 开始分析您的拉取请求时,它会发布一条初步评论:“AWS 安全代理正在分析您的代码...” 这可以让您知道分析已经开始并正在进行中。

  3. 审查完成-分析完成后,AWS Security Agent 会将审查结果发布到您的拉取请求中。所有安全发现都会在一次审查中批量整理,以使您的拉取请求井井有条,并最大限度地减少通知。

了解代码审查结果

AWS Security Agent 会根据其在分析期间发现的内容提供不同类型的结果。

当发现安全问题时

如果 AWS Security Agent 发现您的代码更改中存在安全问题,它会发布一份包含以下内容的评论:

  • 摘要-对所有安全发现的高级概述,描述所发现问题的类型及其潜在影响

  • 个人调查结果-详细的安全调查结果以主题评论的形式显示在主要审查下,每项发现包括:

    • 安全问题描述

    • 代码中发现问题的位置

    • 解释如何解决问题的补救指南

    • 基于您的代码审查设置的相关上下文(违反安全要求、常见漏洞或两者兼而有之)

注意

分析的安全问题类型取决于您的代码审查设置。如果您配置了安全要求验证,则发现结果将参考您组织的自定义安全要求。如果您配置了安全漏洞发现,则发现结果将识别出常见的安全漏洞。有关代码审查设置的更多信息,请参阅为 GitHub 仓库启用拉取请求代码审查

未发现任何安全问题时

如果 AWS Security Agent 完成分析后发现您的代码更改中没有安全问题,则会发布一条评论:“未发现任何问题。” 这确认审查已成功完成,并且根据您配置的代码审查设置,您的代码更改未触发任何安全发现。

回应安全调查结果

查看 AWS 安全代理发布的安全发现后,您可以直接在源代码控制提供商处采取行动。

  • 解决发现问题-根据调查结果中提供的补救指南更新您的代码,然后将新的提交推送到拉取请求。AWS 安全代理将分析更新的代码。

  • 解决对话-解决安全发现后,将对话标记为已解决以跟踪您的进度。

提示

每项发现都包括针对所发现的安全问题量身定制的具体补救指南。请仔细阅读本指南,了解安全风险以及如何有效解决该风险。

筛选代码审查结果

您可以通过向存储库添加filtering.md文件来自定义 AWS 安全代理分析代码的方式。此文件允许您通过提供有关代码库的上下文以及将文件或文件夹排除在分析范围之外,从而减少误报。

创建筛选文件

filtering.md在存储库根.awssecurityagent目录下创建一个名为的文件:

.awssecurityagent/filtering.md

在分析拉取请求时,AWS Security Agent 会从存储库的主分支(例如mainmainline)读取此文件。

文件结构

filtering.md文件使用标准 Markdown 格式,具有 AWS 安全代理可以识别的特定部分。文件必须包含Code Review标题,后跟以下一个或两个部分:IgnorePatternsContextHints(无空格)。

以下示例显示了filtering.md文件的完整结构:

# filtering.md

## Code Review

### IgnorePatterns

**/*.md

/myapp/src/**/*.snap

/myapp/config/README

### ContextHints

- The backend is a trusted system and won't return non-standard protocols.
- URL is generated from server with presigned token, so no SSRF security vulnerabilities.
- AppSec has verified that we are allowed to use cache with an eviction policy.

忽略模式

IgnorePatterns部分指定了 AWS 安全代理在代码审查期间应跳过的文件和文件夹。用于定义glob patterns要从分析中排除哪些路径。

格式要求:

  • 每个图案都必须位于自己的线上。

  • 用空线分隔每个图案。这样可以确保在 GitHub 或代码审查工具中查看文件时可以正确呈现。

  • 模式遵循标准的 glob 格式。例如,**/*.md匹配所有 markdown 文件,/myapp/src/**/*.snap匹配根目录下/myapp/src/文件夹内的所有.snap文件。

  • 在本节中,我们最多支持 1000 个忽略模式。

上下文提示

ContextHints节提供了有关您的代码库的其他背景信息,可帮助 AWS 安全代理进行更准确的评估。使用上下文提示来解释架构决策、安全异常或其他可能影响结果解释方式的信息。

格式要求:

  • 每个提示都必须以短划线 (-) 开头,后跟一个空格。

  • 将每个提示写成一行不超过 500 个字符的自由格式文本。

  • 每个提示都应描述有关您的代码库的一个特定上下文。

  • 在本节中,我们最多支持 20 个上下文提示。

在 AWS Security Agent 完成其初始分析后应用上下文提示,这有助于筛选不适用于您的特定用例的发现。

后续步骤

查看代码安全发现后:

  • 根据补救指南更新您的代码

  • 推送新提交以触发对更改的重新分析

  • 如果需要,调整代码审查设置(请参阅为 GitHub 仓库启用拉取请求代码审查

  • 查看贵组织的安全要求以了解验证标准

  • 考虑进行渗透测试,对已部署的应用程序进行全面的安全验证