# 自定义你的依赖项审查操作配置

了解如何为依赖项评审操作配置添加基本自定义。

## 介绍

依赖项审查操作 会扫描你的拉取请求中的依赖项变更，如果发现任何新的依赖项存在已知漏洞，则会报错。 安装后，如果工作流运行被标记为必需，引入已知易受攻击包的拉取请求将被阻止合并。

本指南向你展示如何添加三种非常常见的自定义：基于漏洞严重性级别、依赖项许可证和范围使构建失败。

### 先决条件

本指南假定：

* 为存储库启用了依赖项关系图。 有关详细信息，请参阅“[启用依赖项关系图](/zh/code-security/how-tos/secure-your-supply-chain/secure-your-dependencies/enable-dependency-graph#enabling-the-dependency-graph-for-a-repository)”。
* 已为该存储库启用 GitHub Actions。 有关详细信息，请参阅“[管理存储库的GitHub Actions设置](/zh/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository)”。

## 步骤 1：添加依赖项评审操作

在此步骤中，我们将向存储库添加依赖项评审工作流。

1. 在 GitHub 上，导航到存储库的主页面。
2. 在仓库名称下，单击“<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-play" aria-label="play" role="img"><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path></svg> Actions”\*\*\*\*。

   ![“github/docs”存储库的选项卡的屏幕截图。 “操作”选项卡以橙色边框突出显示。](/assets/images/help/repository/actions-tab-global-nav-update.png)
3. 在“开始使用 GitHub Actions”下，找到“安全性”类别，然后单击“ **全部查看**”。
4. 找到“依赖项评审”，然后单击“**配置**”。 或者，使用搜索栏搜索“依赖项评审”。
5. 这将打开依赖项评审的GitHub Actions工作流文件。 `dependency-review.yml` 它应该包含以下内容：

   ```yaml copy
   name: 'Dependency review'
   on:
     pull_request:
       branches: [ "main" ]

   permissions:
     contents: read

   jobs:
     dependency-review:
       runs-on: ubuntu-latest
       steps:
         - name: 'Checkout repository'
           uses: actions/checkout@v6
         - name: 'Dependency Review'
           uses: actions/dependency-review-action@v4
   ```

## 步骤 2：更改严重性

通过将 依赖项审查操作 设为必需，可以阻止包含易受攻击依赖项的代码被合并。 然而，值得注意的是，在某些情况下阻止低风险漏洞可能过于严格。 在此步骤中，我们将使用 `fail-on-severity` 选项更改导致生成失败的漏洞的严重性。

1. 将 `fail-on-severity` 选项添加到 `dependency-review.yml` 文件末尾：

   ```yaml copy
         - name: 'Dependency Review'
           uses: actions/dependency-review-action@v4
           with:
             fail-on-severity: moderate
   ```

## 步骤 3：将许可证添加到阻止列表中

漏洞并不是你可能想要阻止依赖项的唯一原因。 如果组织对可以使用的许可证类型有限制，则可以使用依赖项评审通过 `deny-licenses` 选项来强制实施这些策略。 在此步骤中，我们将添加一个自定义项，如果拉取请求引入包含 LGPL-2.0 或 BSD-2-Clause 许可证的依赖项，则该自定义项将中断构建。

1. 将 `deny-licenses` 选项添加到 `dependency-review.yml` 文件末尾：

   ```yaml copy
         - name: 'Dependency Review'
           uses: actions/dependency-review-action@v4
           with:
             fail-on-severity: moderate
             deny-licenses: LGPL-2.0, BSD-2-Clause
   ```

## 步骤 4：添加范围

最后，我们将使用 `fail-on-scopes` 选项来防止将易受攻击的依赖项合并到特定部署环境，在本例中为开发环境。

1. 将 `fail-on-scopes` 选项添加到 `dependency-review.yml` 文件末尾：

   ```yaml copy
         - name: 'Dependency Review'
           uses: actions/dependency-review-action@v4
           with:
             fail-on-severity: moderate
             deny-licenses: LGPL-2.0, BSD-2-Clause
             fail-on-scopes: development
   ```

## 步骤 5：检查配置

`dependency-review.yml` 文件现应如下所示：

```yaml copy

name: 'Dependency Review'
on: [pull_request]

permissions:
  contents: read

jobs:
  dependency-review:
    runs-on: ubuntu-latest
    steps:
      - name: 'Checkout Repository'
        uses: actions/checkout@v6
      - name: Dependency Review
        uses: actions/dependency-review-action@v4
        with:
          fail-on-severity: moderate
          deny-licenses: LGPL-2.0, BSD-2-Clause
          fail-on-scopes: development
```

可以使用此配置作为你自己的自定义配置的模板。

有关所有可能的自定义选项的详细信息，请参阅依赖项评审操作文档中的 [README](https://github.com/actions/dependency-review-action/blob/main/README.md#configuration)。

## 最佳做法

自定义依赖项评审配置时，可遵循一些最佳做法：

* 选择阻止列表而不是允许列表。 编译要阻止的“非常糟糕”的依赖项列表比创建要允许的所有库包容性列表更为实用。

* 选择阻止许可证而不是指定允许哪些许可证。 许可证种类繁多，因此，排除已知与当前许可证不兼容的许可证通常比编译完整的兼容许可证列表更为实用。

* 选择 `fail-on-severity`。 根据漏洞严重性来决定构建是否失败，是在满足安全需求与为开发者创造低摩擦体验之间取得平衡的好方法。

## 延伸阅读

* [配置依赖项评审操作](/zh/code-security/how-tos/secure-your-supply-chain/manage-your-dependency-security/configure-dependency-review-action)
* [在整个组织内强制执行依赖项审查](/zh/code-security/how-tos/secure-at-scale/configure-organization-security/configure-specific-tools/enforce-dependency-review)