Skip to main content

サプライ チェーンのセキュリティについて

GitHub Enterprise Serverは、環境内の依存関係の理解からそれらの依存関係の脆弱性を把握するところまで、サプライチェーンを確保してその脆弱性をパッチできるようにします。

GitHub でのサプライ チェーンのセキュリティについて

ソフトウェア プロジェクトを開発する場合、他のソフトウェアを使用して、オープンソース ライブラリ、フレームワーク、その他のツールなど、アプリケーションをビルドして実行することがあります。 これらのリソースは、プロジェクトが適切に機能するために依存しているため、まとめて [依存関係] と呼びます。 プロジェクトは、これらの依存関係の数百に依存して、[サプライ チェーン]と呼ばれるものを形成する可能性があります。

サプライ チェーンがセキュリティ上の問題を引き起こすことがあります。 依存関係の 1 つに既知のセキュリティ上の弱点やバグがある場合、悪意のあるアクターはこの脆弱性を悪用して、悪意のあるコード ([マルウェア]) を挿入したり、機密データを盗んだり、プロジェクトに他の種類の中断を引き起こしたりすることがあります。 この種の脅威は、[サプライ チェーン攻撃] と呼びます。 サプライ チェーンに脆弱な依存関係があれば、独自のプロジェクトのセキュリティが損なわれ、ユーザーも危険にさらされます。

サプライ チェーンを保護するために実行できる最も重要なことの 1 つは、脆弱性のある依存関係に対してパッチを適用し、マルウェアを置き換えることです。

依存関係をサプライ チェーンに直接追加するときは、マニフェスト ファイルまたはロックファイルで指定します。 依存関係は推移的に含めることもできます。つまり、特定の依存関係を指定しなくても、使用している依存関係が別の依存関係を使用している場合は、その依存関係にも依存することになります。

GitHub Enterprise Server は、環境内の依存関係を理解し、それらの依存関係の脆弱性を把握し、修正プログラムを適用するのに役立つさまざまな機能を提供します。

GitHub Enterprise Server のサプライ チェーン機能は次のとおりです。

  • 依存関係グラフ
  • 依存関係レビュー
  • Dependabot alerts
  • Dependabot updates
    • Dependabot security updates
    • Dependabot version updates

依存関係グラフは、サプライ チェーンのセキュリティの中心です。 依存関係グラフによって、リポジトリまたはパッケージについて、すべてのアップストリーム依存関係とパブリック ダウンストリーム依存関係が識別されます。 リポジトリの依存関係とそのプロパティの一部 (脆弱性情報など) を、そのリポジトリの依存関係グラフで確認できます。

GitHub の他のサプライ チェーン機能は、依存関係グラフで提供される情報を利用します。

  • 依存関係レビューは、依存関係グラフを使用して依存関係の変更を特定し、ユーザーが pull request を確認するときにそれらの変更がセキュリティに及ぼす影響を理解するのに役立ちます。
  • Dependabot は、依存関係グラフによって提供される依存関係データと GitHub Advisory Database に公開されているアドバイザリの一覧を相互参照し、依存関係をスキャンし、潜在的な脆弱性が検出されると Dependabot alertsを生成します。
  • Dependabot security updates依存関係グラフとDependabot alertsを使用し、リポジトリの依存関係を既知の脆弱性で更新できるようにします。

Dependabot version updates では、依存関係グラフは使用されません。代わりに依存関係のセマンティック バージョン管理が利用されます。 Dependabot version updates は、依存関係に脆弱性が含まれない場合でも、依存関係を最新状態に保つために役立ちます。

個人用アカウント、コード、ビルド プロセスの保護を含む、エンド ツー エンドのサプライ チェーン セキュリティに関するベスト プラクティス ガイドについては、「エンドツーエンドのサプライ チェーンのセキュリティ保護」をご覧ください。

機能の概要

依存関係グラフとは

依存関係グラフを生成するために、GitHub は、マニフェストやロックファイルで宣言されているリポジトリの明示的な依存関係を調べます。 有効にすると、依存関係グラフはリポジトリ内のすべての既知のパッケージ マニフェスト ファイルを自動的に解析し、これを使用して既知の依存関係の名前とバージョンを含むグラフを作成します。

  • 依存関係グラフには、"直接" 依存関係と "推移的" 依存関係の情報が含まれます。
  • 依存関係グラフが自動的に更新されるのは、サポートされるマニフェストまたはロック ファイルを既定ブランチに対して変更または追加するプッシュを GitHub にコミットするとき、およびご使用の依存関係のいずれかのリポジトリに対して任意のユーザーが変更をプッシュするときです。
  • 依存関係グラフを表示するには、GitHub Enterprise Server 上でリポジトリのメイン ページを開いて Insights タブに移動します。
  • 少なくともリポジトリへの読み取りアクセス権がある場合は、GitHub UI または GitHub REST API を使って、リポジトリの依存関係グラフを SPDX 互換のソフトウェア部品表 (SBOM) としてエクスポートできます。 詳しくは、「リポジトリのソフトウェア部品表のエクスポート」を参照してください。

さらに、依存関係送信 API を使用して、マニフェストやロック ファイルの分析で依存関係グラフがサポートされていないエコシステムであっても、任意のパッケージ マネージャーやエコシステムから依存関係を送信することができます。 依存関係送信 API を使用してプロジェクトに送信された依存関係には、送信に使用された検出機能と、それらが送信された日時が表示されます。 依存関係送信 API の詳細については、「Dependency Submission API を使用する」を参照してください。

依存関係グラフについて詳しくは、「依存関係グラフについて」をご覧ください。

依存関係レビューとは

依存関係レビューは、レビュー担当者と共同作成者が、すべての pull request における依存関係の変更とそのセキュリティへの影響を理解するのに役立ちます。

  • 依存関係レビューでは、pull request で追加、削除、または更新された依存関係がわかります。 リリース日、依存関係の評判、脆弱性情報を使用して、変更を受け入れるかどうかを判断できます。
  • pull request の依存関係レビューは、 Files Changed タブの詳しい差分を表示すると確認できます。

依存関係のレビューについて詳しくは、「依存関係の確認について」をご覧ください。

Dependabot とは

Dependabotは、依存関係のセキュリティ脆弱性をユーザーに通知しすることにより、依存関係を最新状態に保ち、Dependabotアラートがトリガーされたときに依存関係を次の利用可能でセキュリティ保護されたバージョンか、リリースが公開されたときに最新バージョンに更新する pull request を自動的に開きます。

「Dependabot」という用語には、次の機能が含まれます。

  • Dependabot alerts: リポジトリの [Security] タブとリポジトリの依存関係グラフに表示される通知。 アラートには、プロジェクト内で影響を受けるファイルへのリンクと、修正バージョンに関する情報が含まれています。
  • Dependabot updates:
    • Dependabot security updates: アラートがトリガーされたときに、依存関係をセキュリティで保護されたバージョンにアップグレードするためにトリガーされる更新。
    • Dependabot version updates: 依存関係を最新バージョンに保つようにスケジュールされた更新。

Dependabot security updates、Dependabot version updates は、GitHub Enterprise Server で実行するために GitHub Actions が必要です。 Dependabot alertsでは、GitHub Actions は必要ありません。 詳しくは、「エンタープライズ向けの Dependabot の有効化」をご覧ください。

Dependabot security updates を使うと、GitHub Actions の脆弱な依存関係を修正できます。 セキュリティ更新プログラムが有効になっている場合、ワークフローで使用されている脆弱な GitHub Actions を修正プログラムが適用された最小バージョンに更新するための pull request が、Dependabot によって自動的に生成されます。詳しくは、「Dependabot のセキュリティ アップデート」をご覧ください。

Dependabot アラートとは

Dependabot alertsでは、依存関係グラフと GitHub Advisory Database (既知の脆弱性に関するアドバイザリを含む) に基づいて、新たに検出された脆弱性の影響を受けるリポジトリを強調表示します。

  • Dependabot は、次の場合に、スキャンを実行して安全ではない依存関係を検出し、Dependabot alertsを送信します。
  • Dependabot alertsは、リポジトリの [セキュリティ] タブとリポジトリの依存関係グラフに表示されます。 アラートには、プロジェクト内で影響を受けるファイルへのリンクと、修正バージョンに関する情報が含まれています。

詳しくは、「Dependabot アラートについて」をご覧ください。

Dependabot 更新プログラムとは

2 種類の Dependabot updatesがあります。Dependabot "セキュリティ" 更新プログラムと "バージョン" 更新プログラムです。 Dependabot は、どちらのケースでも依存関係を更新するために自動 pull request を生成しますが、いくつかの違いがあります。

Dependabot security updates:

  • Dependabot アラートによってトリガーされます。
  • 既知の脆弱性を解決する最小バージョンに依存関係を更新します。
  • 依存関係グラフがサポートするエコシステムでサポートされます。
  • 構成ファイルは必要ありませんが、既定の動作をオーバーライドするために使用できます

Dependabot version updates:

  • 構成ファイルが必要です
  • 構成したスケジュールに従って実行します。
  • 構成と一致する最新バージョンに依存関係を更新します。
  • さまざまな一連のエコシステムでサポートされます。

Dependabot updates について詳しくは、「Dependabot のセキュリティ アップデート」と「GitHub Dependabot のバージョンアップデートについて」をご覧ください。

使用可能な機能

  • 依存関係グラフと Dependabot alerts: 既定では有効になっていません。 どちらの機能も、エンタープライズ所有者によってエンタープライズ レベルで構成されます。 詳しくは、「企業の依存関係グラフの有効化」と「エンタープライズ向けの Dependabot の有効化」をご覧ください。

  • 依存関係レビュー: インスタンスで依存関係グラフが有効になっており、organization またはリポジトリで Advanced Security が有効になっている場合に使用できます。 詳しくは、「GitHub Advanced Security について」をご覧ください。

  • Dependabot security updates: 既定では有効になっていません。 Dependabot alerts と依存関係グラフを使用する任意のリポジトリで Dependabot security updates を有効にすることができます。 セキュリティ更新プログラムの有効化については、「Configuring Dependabot security updates (Dependabot セキュリティ アップデートの構成)」をご覧ください。

  • Dependabot version updates: 既定では有効になっていません。 リポジトリへの書き込みアクセス許可を持つユーザーは、Dependabot version updatesを有効にすることができます。 バージョンの更新を有効にする方法については、「Dependabot のバージョン アップデートの設定」をご覧ください。