亚马逊AWS官方博客

Amazon CodeGuru Reviewer 更新:全新的 Java 检测器和 CI/CD 与 GitHub 操作的集成

Amazon CodeGuru 让您可以自动进行代码审查并提高代码质量,并且得益于 4 月份推出的全新定价模式,您可以根据存储库的大小,以较低且固定的月费率开始使用(最多可节省 90% 的费用)。CodeGuru Reviewer 使用 Amazon Web Services管理控制台、Amazon Web Services 软件开发工具包和 Amazon CLI,帮助您检测在 Java 和 Python 应用程序中难以发现的潜在缺陷和错误。

今天,我很高兴地宣布,CodeGuru Reviewer 与您日常用于打包和部署代码的工具进行了原生集成。这种全新的 CI/CD 体验让您可以使用 GitHub 操作来触发代码质量和安全性分析,作为构建过程的一个步骤。

尽管 CodeGuru Reviewer 控制台仍然是您所有已注册存储库的分析中心,但新的 CI/CD 体验让您可以将 CodeGuru Reviewer 与您最喜欢的源代码管理和 CI/CD 工具进行更深入的集成。

不止如此! 今天,我们还发布了 20 个全新的 Java 安全检测器,以帮助您识别更多与安全性和 Amazon Web Services 最佳实践相关的问题。

CodeGuru Reviewer 的全新 CI/CD 体验
作为一个开发人员或开发团队,您每天都会推送新的代码,并希望在开发周期的早期阶段发现安全漏洞,最好是在每次推送时就能发现。在拉取请求 (PR) 审查期间,所有 CodeGuru 建议都将显示为评论,就像您有另一双眼睛盯着 PR 一样。这些评论包括帮助您解决问题的有用链接。

当您推送新代码或安排代码审查时,这些建议将显示在 GitHub 上的安全 > 代码扫描警报选项卡中。

让我们来看看,如何将 CodeGuru Reviewer 与 GitHub 操作集成起来。

首先,在 .github/workflows/ 下的存储库中创建一个 .yml 文件(或更新现有操作)。此文件将包含所有操作的步骤。让我们来了解一下每个步骤。

第一步是配置您的 Amazon Web Services 凭证。您可以使用配置 Amazon Web Services凭证操作来安全地执行此步骤,而无需在存储库代码中存储任何凭证。此操作让您可以配置一个 IAM 角色,GitHub 将使用该角色与 Amazon Web Services 服务进行交互。该角色需要一些与 CodeGuru Reviewer 和 Amazon S3 相关的权限。除了 s3: GetObjects3: PutObjects3: ListBucket 之外,您还可以将 AmazonCodeGuruReviewerFullAccess 托管策略附加到操作角色。

第一步如下所示:

- name: 配置 AWS 凭证
  uses: aws-actions/configure-aws-credentials@v1
  with:
    aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
    aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
    aws-region: eu-west-1

这些访问密钥和秘密密钥对应于您的 IAM 角色,将用于与 CodeGuru Reviewer 和 Amazon S3 进行交互。

接下来,您将添加 CodeGuru Reviewer 操作,并上传结果(最后一步):

- name: Amazon CodeGuru Reviewer 扫描
  uses: aws-actions/codeguru-reviewer
  if: ${{ always() }} 
  with:
    build_path: target # build artifact(s) directory
    s3_bucket: 'codeguru-reviewer-myactions-bucket'  # S3 Bucket starting with "codeguru-reviewer-*"
- name: 上传审查结果
  if: ${{ always() }}
  uses: github/codeql-action/upload-sarif@v1
  with:
    sarif_file: codeguru-results.sarif.json

CodeGuru Reviewer 操作需要两个输入参数:

  • build_path:您的构建工件在存储库中的位置。
  • s3_bucket:您之前创建的、用于上传构建工件和分析结果的 S3 存储桶的名称。这是一个客户所有的存储桶,因此您可以完全控制访问和权限,以防您需要与其他系统共享其内容。

现在,让我们把所有步骤结合起来。

您的 .yml 文件应如下所示:

name: CodeGuru Reviewer GitHub 操作集成
on: [pull_request, push, schedule]
jobs:
  CodeGuru-Reviewer-Actions:
    runs-on: ubuntu-latest
    steps:
      - name: 配置 AWS 凭证
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-east-2
	  - name: Amazon CodeGuru Reviewer 扫描
        uses: aws-actions/codeguru-reviewer
        if: ${{ always() }} 
        with:
          build_path: target # build artifact(s) directory
          s3_bucket: 'codeguru-reviewer-myactions-bucket'  # S3 Bucket starting with "codeguru-reviewer-*"
      - name: 上传审查结果
        if: ${{ always() }}
        uses: github/codeql-action/upload-sarif@v1
        with:
          sarif_file: codeguru-results.sarif.json

切记,S3 存储桶名称需要以 codeguru_reviewer- 开头,并且这些操作可以被配置为与 pull_requestpushschedule 触发一起运行(查看 GitHub 操作文档以获取触发工作流的完整事件列表)。另请记住,配置 GitHub 托管运行器和自托管运行器的方式存在细微差别,主要是在凭证配置步骤中。例如,如果您在已经有权访问 Amazon Web Services 凭证(例如,EC2 实例)的自托管运行器中运行您的 GitHub 操作,则您无需为此操作提供任何凭证(查看自托管运行器的完整文档)。

现在,当您推送更改或打开 PR 时,CodeGuru Reviewer 将立即评论您的代码更改并提供一些建议。

或者,您可以安排每日或每周一次的存储库扫描,并在安全 > 代码扫描警报选项卡中查看建议。

适用于 Java 的全新安全检测器
去年 12 月,我们针对 CodeGuru Reviewer 推出了 Java 安全检测器,以帮助您发现和修复 Java 应用程序中的潜在安全问题。这些检测器采用机器学习和自动推理技术构建,在 100,000 多个 Amazon 和开源代码存储库中进行了训练,并基于 Amazon 应用程序安全 (AppSec) 团队数十年的专业知识。

例如,其中一些检测器会通过过于冗长的日志记录、异常处理以及在内存中以明文形式存储密码,来检查敏感信息或凭证的潜在泄露。安全检测器还可以帮助您识别多个 Web 应用程序漏洞,诸如命令注入、弱加密、弱哈希、LDAP 注入、路径遍历、安全 cookie 标志、SQL 注入、XPATH 注入和 XSS(跨站脚本攻击)。

新的 Java 安全检测器可以识别 Java Servlet API 和 Web 框架(如 Spring)的安全问题。在使用 Amazon S3、IAM 和 Amazon Lambda 等服务以及 Apache ActiveMQ、LDAP 服务器、SAML 解析器和密码编码器等库和实用程序时,部分新的检测器还会帮助您获得 Amazon API 的安全最佳实践。

今天即可使用,无需额外费用
适用于 Java 的全新 CI/CD 集成和安全检测器现已免费提供,但不包括 S3 上的存储成本,该存储成本可根据您构建工件的大小和代码审查频率进行估算。查看 GitHub Marketplace 中的 CodeGuru Reviewer 操作Amazon CodeGuru 定价页面,以了解基于我们上个月推出的全新定价模式的定价示例。

我们期待收到您的反馈,以便我们推出更多检测器来帮助您识别潜在问题,并在未来与更多 CI/CD 工具集成。

您可以在技术文档中了解有关 CI/CD 体验和配置的更多信息。

Alex