Skip to main content

依存関係レビューの構成

依存関係レビューを使用して、脆弱性がプロジェクトに追加される前に捕捉できます。

この機能を使用できるユーザーについて

リポジトリの所有者、組織の所有者、セキュリティ マネージャー、および 管理者 ロールを持つユーザー

依存関係の確認について

依存関係レビューを使うと、すべてのPull Reqeustにおける以下の変更による依存関係の変化とセキュリティについての影響を理解しやすくなります。pull request の [Files Changed](変更されたファイル) タブ上のリッチ diff で依存関係の変更をわかりやすく視覚化できます。 依存関係レビューは、以下のことを知らせます:

  • リリース日と合わせて、追加、削除、更新された依存関係。
  • これらのコンポーネントを使うプロジェクトの数。
  • これらの依存関係に関する脆弱性のデータ。

詳細については、「依存関係の確認について」および「プルリクエスト内の依存関係の変更をレビューする」を参照してください。

依存関係レビューの構成について

依存関係レビューは、パブリック リポジトリの GitHub Enterprise Cloud に含まれています。 組織が所有するプライベート リポジトリで依存関係レビューを使うには、GitHub Advanced Security のライセンスがあり、依存関係グラフを有効にする必要があります。

リポジトリ管理者は、プライベート リポジトリまたは内部リポジトリの依存関係グラフを有効または無効にすることができます。

ユーザーアカウントが所有するすべてのリポジトリの依存関係グラフを有効または無効にすることができます。 詳しくは、「個人アカウントのセキュリティと分析設定を管理する」をご覧ください。

組織内の複数のリポジトリに対して同時に依存関係グラフを有効にすることもできます。 詳しくは、「組織のセキュリティ」 をご覧ください。

  1. GitHub で、リポジトリのメイン ページに移動します。

  2. リポジトリ名の下にある [設定] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。

    タブを示すリポジトリ ヘッダーのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で強調表示されています。

  3. サイドバーの [セキュリティ] セクションで、 [コードのセキュリティと分析] をクリックします。

  4. リポジトリ データへの読み取りアクセスを GitHub Enterprise Cloud に許可して依存関係グラフを有効にすることに関するメッセージを読んだうえで、[依存関係グラフ] の隣にある [有効] をクリックします。

    リポジトリの依存関係グラフを有効にする方法を示すスクリーンショット。 [有効] ボタンが濃いオレンジ色の枠線で強調表示されています。

    [コードのセキュリティと分析] の設定ページで、[依存関係グラフ] の横にある [無効] をクリックすることで、いつでも依存関係グラフを無効にできます。

  5. ページを下にスクロールし、[GitHub Advanced Security] が有効になっていない場合は、機能の横にある [有効] をクリックします。

依存関係レビュー アクション の構成について

依存関係レビュー アクション では、pull request で依存関係の変更をスキャンし、新しい依存関係に既知の脆弱性がある場合にエラーを発生させます。 このアクションは、2 つのリビジョン間の依存関係を比較し、相違点を報告する API エンドポイントによってサポートされます。

アクションと API エンドポイントについて詳しくは、dependency-review-action のドキュメントと、「依存関係レビュー用の REST API エンドポイント」をご覧ください。

組織の所有者は、組織内のリポジトリ全体で 依存関係レビュー アクション の使用を実施することで、依存関係レビューを大規模にロールアウトできます。 これには、必要なワークフローとして 依存関係レビュー アクション を設定するためのリポジトリ ルールセットの使用が含まれます。つまり、pull requestは、ワークフローが必要なすべてのチェックに合格した後にのみ統合できます。 詳しくは、「組織全体で依存関係レビューを実施する」を参照してください。

一般的な構成オプションの一覧を示します。 詳細とオプションの完全な一覧については、GitHub Marketplace の「依存関係レビュー」を参照してください。

オプション必須使用法
fail-on-severity重大度レベル (lowmoderatehighcritical) のしきい値を定義します。
アクションは、指定した重大度レベル以上の脆弱性を引き起こす pull request で失敗します。
allow-licenses許可されているライセンスのリストが含まれています。 このパラメーターに使用できる値は、API ドキュメントの「ライセンス」のページで確認できます。
アクションは、リストに一致しないライセンスを持つ依存関係を導入する pull request で失敗します。
deny-licenses禁止されているライセンスのリストが含まれています。 このパラメーターに使用できる値は、API ドキュメントの「ライセンス」のページで確認できます。
アクションは、リストに一致するライセンスを持つ依存関係を導入する pull request で失敗します。
fail-on-scopesサポートするビルド環境 (developmentruntimeunknown) を表す文字列のリストが含まれます。
このアクションは、リストに一致する範囲に脆弱性をもたらす pull request によって失敗します。
comment-summary-in-prpull request で、レビュー概要のレポートをコメントとして有効または無効にします。 有効にした場合は、ワークフローまたはジョブに pull-requests: write アクセス許可を付与する必要があります。
allow-ghsas検出中にスキップできる GitHub Advisory Database ID のリストが含まれています。 このパラメーターに指定できる値は、GitHub Advisory Database で見つけることができます。
config-file構成ファイルのパスを指定します。 構成ファイルは、リポジトリに対してローカルにすることも、外部リポジトリにあるファイルにすることもできます。
external-repo-tokenファイルがプライベート外部リポジトリに存在する場合に、構成ファイルをフェッチするためのトークンを指定します。 トークンには、リポジトリへの読み取りアクセスが必要です。

ヒント: オプション allow-licensesdeny-licenses は同時に指定できません。

依存関係レビュー アクション の構成について

依存関係レビュー アクション を構成する方法は 2 つあります。

  • ワークフロー ファイル内に構成オプションをインライン化する。
  • ワークフロー ファイル内で構成オプションを参照する。

すべての例で、アクションに対して、semver リリース番号 (v3.0.8 など) ではなく、短いバージョン番号 (v3) が使われています。 これにより、アクションの最新のマイナー バージョンを使うことができます。

インライン構成を使って 依存関係レビュー アクション を設定する

  1. .github/workflows フォルダーに新しい YAML ワークフローを追加します。

    YAML
    name: 'Dependency Review'
    on: [pull_request]
    
    permissions:
      contents: read
    
    jobs:
      dependency-review:
        runs-on: ubuntu-latest
        steps:
         - name: 'Checkout Repository'
           uses: actions/checkout@v4
         - name: Dependency Review
           uses: actions/dependency-review-action@v4
    
  2. 必要に応じて設定を変更します。

    この 依存関係レビュー アクション サンプル ファイルは、利用可能な構成オプションの使用方法を示しています。

    YAML
    name: 'Dependency Review'
    on: [pull_request]
    
    permissions:
      contents: read
    
    jobs:
      dependency-review:
        runs-on: ubuntu-latest
        steps:
        - name: 'Checkout Repository'
          uses: actions/checkout@v4
        - name: Dependency Review
          uses: actions/dependency-review-action@v4
          with:
            # Possible values: "critical", "high", "moderate", "low"
            fail-on-severity: critical
    
            
            # You can only include one of these two options: `allow-licenses` and `deny-licenses`
            # ([String]). Only allow these licenses (optional)
            # Possible values: Any SPDX-compliant license identifiers or expressions from https://spdx.org/licenses/
            allow-licenses: GPL-3.0, BSD-3-Clause, MIT
            # ([String]). Block the pull request on these licenses (optional)
            # Possible values: Any SPDX-compliant license identifiers or expressions from https://spdx.org/licenses/
            deny-licenses: LGPL-2.0, BSD-2-Clause
            
            # ([String]). Skip these GitHub Advisory Database IDs during detection (optional)
            # Possible values: Any valid GitHub Advisory Database ID from https://github.com/advisories
            allow-ghsas: GHSA-abcd-1234-5679, GHSA-efgh-1234-5679
            # ([String]). Block pull requests that introduce vulnerabilities in the scopes that match this list (optional)
            # Possible values: "development", "runtime", "unknown"
            fail-on-scopes: development, runtime
    

構成ファイルを使って 依存関係レビュー アクション を設定する

  1. .github/workflows フォルダーに新しい YAML ワークフローを追加し、config-file を使って構成ファイルを使用していることを指定します。

    YAML
    name: 'Dependency Review'
    on: [pull_request]
    
    permissions:
     contents: read
    
    jobs:
      dependency-review:
        runs-on: ubuntu-latest
        steps:
        - name: 'Checkout Repository'
          uses: actions/checkout@v4
        - name: Dependency Review
          uses: actions/dependency-review-action@v4
          with:
           # ([String]). Representing a path to a configuration file local to the repository or in an external repository.
           # Possible values: An absolute path to a local file or an external file.
           config-file: './.github/dependency-review-config.yml'
           # Optional alternative syntax for an external file: OWNER/REPOSITORY/FILENAME@BRANCH (uncomment if preferred)
           # config-file: 'github/octorepo/dependency-review-config.yml@main'
    
           # ([Token]) Use if your configuration file resides in a private external repository.
           # Possible values: Any GitHub token with read access to the private external repository.
           external-repo-token: 'ghp_123456789abcde'
    
  2. 指定したパスに構成ファイルを作成します。

    この YAML ファイルの例は、利用可能な構成オプションの使用方法を示しています。

    YAML
      # Possible values: "critical", "high", "moderate", "low"
      fail-on-severity: critical
    
      # You can only include one of these two options: `allow-licenses` and `deny-licenses`
      # ([String]). Only allow these licenses (optional)
      # Possible values: Any SPDX-compliant license identifiers or expressions from https://spdx.org/licenses/
      allow-licenses:
        - GPL-3.0
        - BSD-3-Clause
        - MIT
       # ([String]). Block the pull request on these licenses (optional)
       # Possible values: Any SPDX-compliant license identifiers or expressions from https://spdx.org/licenses/
      deny-licenses:
        - LGPL-2.0
        - BSD-2-Clause
    
       # ([String]). Skip these GitHub Advisory Database IDs during detection (optional)
       # Possible values: Any valid GitHub Advisory Database ID from https://github.com/advisories
      allow-ghsas:
        - GHSA-abcd-1234-5679
        - GHSA-efgh-1234-5679
       # ([String]). Block pull requests that introduce vulnerabilities in the scopes that match this list (optional)
       # Possible values: "development", "runtime", "unknown"
      fail-on-scopes:
        - development
        - runtime
    

構成オプションの詳細については、「dependency-review-action」を参照してください。

参考資料