Azure DevOps Services
npm audit コマンドは、プロジェクトを徹底的にスキャンし、潜在的なセキュリティの脆弱性を特定し、見つかった問題を強調表示する詳細なレポートを生成します。 セキュリティ監査の実施は、プロジェクトの依存関係内の脆弱性を認識して解決するための重要なステップです。 npm audit fix コマンドは、検出された脆弱性に自動的に対処し、セキュリティで保護されていないパッケージのバージョンを最新のセキュリティで保護されたリリースに更新します。 これらの脆弱性に対処することは、データの損失、サービスの中断、機密情報への不正アクセスなどの潜在的な問題を防ぐために重要です。
Warnung
npm 監査を実行すると、package.json で指定されたすべてのパッケージの名前がパブリック レジストリに送信されます。
npm 監査をローカルで実行する
npm audit は、フィードで認証する必要なくローカルで実行できます。 これにより、プロジェクトで脆弱性をスキャンし、検出されたセキュリティの問題とその重大度に関する詳細なレポートを受け取ることができます。
検出された脆弱性を修正する場合は、 npm audit fixを実行できますが、そのためにはフィードで認証する必要があります。 このコマンドは、セキュリティで保護されていないパッケージバージョンを最新のセキュリティで保護されたリリースに更新します。
npm 監査修正を実行すると、ローカル プロジェクトの package.json と package-lock.json が更新されるだけでなく、これらの変更が関連する Azure Artifacts フィードと同期されます。 新しくセキュリティで保護されたバージョンのパッケージは、フィードで自動的に使用できるようになります。
この同期により、同じフィードを共有する他のプロジェクトでも、これらの更新プログラムのメリットが得られます。 これは、すべてのプロジェクトで一貫性のある安全なパッケージ バージョンのセットを維持するのに役立ちます。
プロジェクト ディレクトリで次のコマンドを実行して、npm 監査を実行します。
npm audit脆弱でないパッケージ バージョンへのアップグレードを試みる場合は、まず フィードに接続 していることを確認してから、プロジェクト ディレクトリで次のコマンドを実行します。
npm audit fix
npm 監査の修正を実行した後、アプリケーションで徹底的なテストを実行して、更新によって重大な変更が発生していないことを確認してください。 修正プログラムでメジャー バージョンの更新が必要な場合は、パッケージのリリース ノートで破壊的変更の可能性を確認することをお勧めします。 パブリックに脆弱な依存関係を持つプライベート パッケージは脆弱性アラートを受け取りますが、 npm 監査修正を通じて修正プログラムを受け取ることはありません。
注
npm 監査 は npm インストールの実行ごとに自動的に実行されますが、パブリック パッケージに対してのみ機能します。
パイプラインから npm 監査を実行する
Azure Pipelines では現在、 npm 監査はサポートされていません。 パイプラインで通常の npm audit コマンドを使用しようとすると、失敗します。 代わりに、--registry 引数を指定して npm audit を実行し、フィードのソース URL を指定します。
Azure DevOps 組織にサインインしてから、プロジェクトに移動します。
[ パイプライン] を選択し、パイプラインを選択し、[ 編集] を選択して変更します。
パイプライン定義から、
+記号を選択して新しいタスクを追加します。npm タスクを検索し、[追加] を選択してパイプラインに追加します。
タスクの表示名を入力し、[コマンド] ドロップダウン メニューからカスタムを選択します。
[ コマンドと引数 ] テキスト ボックスにカスタム コマンドを貼り付けます。
npm 監査を実行し、パッケージの脆弱性をスキャンするには、次のコマンドを使用します。 プレースホルダーをフィードのソース URL に置き換えます。
audit --registry=<FEED_SOURCE_URL>脆弱性のないパッケージ バージョンへのアップグレードを試みる場合は、次のコマンドを使用します。 プレースホルダーをフィードのソース URL に置き換えます。
audit fix --registry=<FEED_SOURCE_URL>
関連資料
- npmjs.com のパッケージを使用する
- npm パッケージ (YAML/クラシック) を発行する
- Azure Artifacts で Npm スコープを使用する