Skip to main content

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

GitHub Enterprise Cloud は、環境内の依存関係の理解から、それらの依存関係の脆弱性の把握やパッチの適用まで、サプライ チェーンをセキュリティで保護するのに役立ちます。

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

オープン ソースの使用が急速に進んでおり、ほとんどのプロジェクトは数百ものオープンソース依存関係を利用しています。 これにより、セキュリティ上の問題が浮上します。もしも、使用している依存関係に脆弱性があるとしたら、どうなるでしょうか、 ユーザーをサプライ チェーン攻撃のリスクにさらす可能性があります。 サプライ チェーンを保護するために行うことができる最も重要なことの 1 つは、脆弱な依存関係にパッチを適用したり、マルウェアを置き換えたりすることです。

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

GitHub Enterprise Cloud には、環境内の依存関係を理解し、それらの依存関係の脆弱性を把握してパッチを適用できるように、さまざまな機能が用意されています。

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

  • 依存関係グラフ
  • 依存関係レビュー
  • 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 Cloud 上でリポジトリのメイン ページを開いて [Insights](分析情報) タブに移動します。

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

依存関係グラフの詳細については、「依存関係グラフについて」を参照してください。

依存関係レビューとは

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

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

依存関係レビューの詳細については、「依存関係レビューについて」を参照してください。

Dependabot とは

Dependabot は、依存関係のセキュリティ脆弱性をユーザーに通知しすることで、ご使用の依存関係を最新状態に保ちます。また、自動的に pull request を開き、依存関係を次に使用可能なセキュア バージョン (Dependabot アラートがトリガーされたとき) または最新バージョン (リリースが公開されたとき) にアップグレードします。

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

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

Dependabot alerts、Dependabot security updates、Dependabot version updates は、GitHub Enterprise Cloud で実行するときに GitHub Actions を使用しません。 ただし、Dependabot によって開かれた pull request は、アクションを実行するワークフローをトリガーできます。 詳細については、「GitHub Actions による Dependabot の自動化」を参照してください。

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

Dependabot アラートとは

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

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

詳細については、「Dependabot alertsについて」を参照してください。

Dependabot 更新プログラムとは

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

Dependabot security updates:

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

Dependabot version updates:

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

Dependabot updatesの詳細については、「Dependabot security updatesについて」および「Dependabot version updatesについて」を参照してください。

使用可能な機能

パブリック リポジトリ:

  • 依存関係グラフ— 既定で有効になっており、無効にすることはできません。
  • 依存関係レビュー— 既定で有効になっており、無効にすることはできません。
  • Dependabot alerts — 既定で有効になっていません。 GitHub は、安全ではない依存関係を検出して依存関係グラフに情報を表示しますが、Dependabot alertsは既定では生成されません。 リポジトリの所有者または管理者アクセス権を持つユーザーは、Dependabot alertsを有効にすることができます。 また、ユーザーは自らのユーザー アカウントまたは組織が所有するすべてのリポジトリでも、Dependabot アラートを有効化または無効化できます。 詳細については、「ユーザー アカウントのセキュリティと分析の設定の管理」または「組織のセキュリティと分析の設定の管理」を参照してください。

プライベート リポジトリ:

  • 依存関係グラフ— 既定では有効になっていません。 この機能は、リポジトリ管理者が有効にすることができます。 詳細については、「ポジトリの依存関係を調べる」を参照してください。

  • 依存関係レビュー— ユーザーに GitHub Advanced Security のライセンスがあり、依存関係グラフが有効になっていれば、組織が所有するプライベート リポジトリでも利用できます。 詳細については、「GitHub Advanced Securityについて」および「リポジトリの依存関係を調べる」を参照してください。

  • Dependabot alerts — 既定で有効になっていません。 プライベートリポジトリの所有者、または管理アクセス権を持つユーザは、リポジトリの依存関係グラフと Dependabot alerts を有効にすることで、Dependabot alerts を有効化できます。 また、ユーザーは自らのユーザー アカウントまたは組織が所有するすべてのリポジトリでも、Dependabot アラートを有効化または無効化できます。 詳細については、「ユーザー アカウントのセキュリティと分析の設定の管理」または「組織のセキュリティと分析の設定の管理」を参照してください。

すべての種類のリポジトリ:

  • Dependabot security updates — 既定で有効になっていません。 Dependabot alerts と依存関係グラフを使用する任意のリポジトリで Dependabot security updates を有効にすることができます。 セキュリティ更新プログラムの有効化の詳細については、「Dependabot security updatesの構成」を参照してください。
  • Dependabot version updates — 既定で有効になっていません。 リポジトリへの書き込みアクセス許可を持つユーザーは、Dependabot version updatesを有効にすることができます。 セキュリティ更新プログラムの有効化の詳細については、「Dependabot version updates の構成」を参照してください。