WhiteSource Remediate


概要

WhiteSource Remediateは、WhiteSourceのリポジトリ統合の機能で、脆弱なオープンソースコンポーネントの修正プルリクエストを自動的に開き、脆弱性のない最も低いバージョンにアップグレードします。

WhiteSource Remediate は、WhiteSource for Developers の一部であり、 WhiteSource for GitHub.com、WhiteSource for GitHub Enterprise、 WhiteSource for Bitbucket Server、それから WhiteSource for GitLab と統合されています。

WhiteSource Remediate は次の機能を提供します。

  • リアルタイム監視継続的に実行して、利用可能な最新の修正を検出します。
  • シングルクリック修正:自動修正プルリクエストをオンデマンドで生成するか、カスタムワークフロールールを使用します。
  • カスタムワークフロールール:脆弱性の深刻度または CVSS スコアに基づいて、修正プルリクエストをオープンします。
  • 注釈:変更ログとコミット履歴が抽出され、利用可能な場合に含まれます。
  • 依存関係ファイルの検出:リポジトリ内のすべての依存関係ファイルを検出して処理します。
  • ロックファイルのサポート:プルリクエストがマージされるたびに競合を即座に解決するなど、同じコミットでロックファイルをシームレスに更新します。

修正プルリクエストは、リポジトリのデフォルトブランチで発見されたセキュリティ脆弱性、および直接の依存関係に対してのみ生成されます。

サポートされているパッケージマネージャ

パッケージマネージャー言語追加の詳細
MavenJavaなし
Go ModulesゴランWhiteSource Remediate は、 go.sumファイルだけでなく go.mod も、ベンダーのファイル群だけでなく vendor/ のディレクトリ以下も、両方更新します。
npm/YarnJavaScriptWhiteSource Remediate は、同じコミット/修正プルリクエストで、パッケージファイル(package.jsonなど)とロックファイル(yarn.lockなど)の両方を常に更新します。
その後、開発者がデフォルトブランチのいずれかのファイルを更新し、修正プルリクエストと git の競合が発生した場合、WhiteSource Remediate は修正のプルリクエストを更新して、脆弱性を修正しながらすべての競合を解決します。
NuGetネット

現在、SDKスタイルの .csproj ファイルのみがサポートされています。デフォルトでは、これには以下が含まれます。 

  • .NET Core 1.0以降
  • .NET標準クラスライブラリ
  • .csproj  ファイルに含まれる SDK スタイルの構文 

.NET Framework の .csproj を SDK スタイルのプロジェクトに変換するには、このガイドに従ってください。

pipPythonなし
setuptoolsPythonなし
ComposerPHPなし

:  WhiteSource for GitLab においてミラーリングされたリポジトリには対応していません。

WhiteSource ワークフロールール

WhiteSource Remediateは、カスタムワークフロールールを介して設定されます。WhiteSource 製品/プロジェクトのすべてまたは選択したリストにワークフロールールを設定するには、次の手順を実行します。

  1. WhiteSource Web アプリケーションから、[Integrate]タブをクリックし  ます。
  2. [WhiteSource for Developers] オプションを選択して展開します。
    1. 関連するリポジトリ統合設定から、[Manage Workflow Rules]をクリックします。[Workflow Rules]ページが表示されます。
  3. [Add Rule]をクリックします。 [Add Rule]ダイアログボックスが表示されます。


  4. [Scope]領域から製品および/またはプロジェクトのスコープを選択するか、デフォルトのままにします(すべての WhiteSource 製品およびプロジェクトに適用されます)。
  5. [Type]ドロップダウンメニューからルールタイプを選択します。
  6. [OK]をクリックし  てルールを作成します。

ワークフロールールを設定すると、WhiteSource Remediate 選択したリポジトリの脆弱な依存関係の監視を開始し、対応する修正プルリクエストを生成します。


WhiteSource Renovate 統合

WhiteSource Renovate の機能は WhiteSource Remediateで有効にできます。  現在  WhiteSource for GitHub Enterprise  と WhiteSource for GitLab  のみが対象です。

Renovate 機能を有効にすると、Remediateは脆弱な依存関係だけでなく、古い依存関係のプルリクエスト(マージリクエスト)も生成します。

Renovateは、主に次の理由により、依存関係を最新に保つことを目的とするユーザー向けに設計されています。

  • オープンソースライブラリからのすべてのバグ修正に追随する
  • バージョン番号の小さな増加は大きなバージョンよりもテストが容易であるため、脆弱なバージョンを急いで更新するリスクを減らす

Renovate 自体は、独自のドキュメントサイトを介して十分に文書化されています。Renovateドキュメントは、オープンソースのRenovateリポジトリに基づいて自動的に生成されるため、ここで完全に複製する必要はありませんが、WhiteSource Remediateのユーザー向けに、例と説明を以下に示します。

 Renovate の設定

Renovateはさまざまなファイル名をサポートしていますが、Wh​​iteSource Remediate統合では.whitesource 構成ファイルのみが使用されます。Renovateはデフォルトでは無効になっているので、次のようにremediateSettings.enableRenovate = trueを設定することで有効になります。

{ 
"remediateSettings":{
"enableRenovate":true
}
}

remediateSettings オブジェクト内に renovate.json 配置した構成は、Renovate が通常構成ファイルを使用する方法と同様に、Remediate によって使用されます。したがって、 renovate.json リポジトリに既存のファイルがあるが、WhiteSource Remediate に移行する場合は remediateSettings renovate.json ファイルを削除する前にその内容をコピーして内部に貼り付けます。

推奨される開始時の設定

Renovateを初めて使用する場合は、config:baseプリセット構成から始めることをお勧めします。これにより、1時間あたり最大2つの依存関係更新プルリクエストなどの機能や、よく知られている monorepo 依存関係をグループ化できます。

{ 
"
remediateSettings ":{ "enableRenovate":true、
"extends":["config:base"]
}
}

修復が利用可能な場合の処理

脆弱性の修正も同時に必要であると同時に、利用可能な更新でRenovateを有効にしている場合、Remediateがどのように機能するかを理解することは役に立ちます。パッケージの依存関係に脆弱性の修正が必要な場合、修正では修正されたバージョンのリストを読み取り、既知のすべてのCVEを解決する最小バージョンを決定し  ます。これは、そのパッケージの修復PR / MRがないことを強制するために、パッケージのルールを使用して  いませんパッケージのすべてのオープンCVEを解決できる最新バージョンに更新することを提案し、代わりに最低バージョンに更新することを提案します。既存のPR / MRが存在し、最新バージョンへの更新を提案しているが、最小フィックスがそれより低い場合、既存のPR / MRは修復によって自動的に閉じられ、代わりに最小フィックスPR / MRに置き換えられます。これは、(a)チームが優先度の高い修復のPR / MRに集中できるようにするためであり、(b)修復によって変更が最小限になるため、検証とテストがより簡単になります。

一般的な構成オプションと例

Renovateは多くのオプションを使用して高度に構成可能であるため、最初に確認するために最も一般的に使用されるオプションを以下に示します。

  • schedule::これを使用して、平日の夜や週末などの限られた時間に依存関係更新のプルリクエストを発生させます。タイムゾーンと組み合わせて、UTCではなく現地時間でスケジュールを書き込むことができます。
  • groupRules と packageRules:複数のパッケージを照合して groupName を割り当てると、それらは単一のプルリクエストにグループ化されます。これは、特定のパッケージを常に一緒にアップグレードする必要がある場合、またはプルリククエストの総数を減らしたい場合に役立ちます。
  • assignees and reviewers:レビューのプルリクエストに割り当てられているか、またはリクエストされた設定するには、次のフィールドを使用します(注:修復のプルリクエストにも適用されます)
  • automerge:信頼できる依存関係でこれを(理想的には packageRules を使用して)有効にし、テストに合格するとRemediateによって自動的にマージされるようにします。

特定の構成オプションについて質問がある場合、またはその使用例を探している場合は、GitHub の Renovate の Config ヘルプリポジトリ で既存の問題を検索すると役立つ場合があります。