Share via


npm 監査を使用してパッケージの脆弱性を検出して修正する

Azure DevOps Services

npm audit コマンドは、プロジェクトを徹底的にスキャンし、潜在的なセキュリティの脆弱性を特定し、見つかった問題を強調表示する詳細なレポートを生成します。 セキュリティ監査の実施は、プロジェクトの依存関係内の脆弱性を認識して解決するための重要なステップです。 npm audit fix コマンドは、検出された脆弱性に自動的に対処し、セキュリティで保護されていないパッケージのバージョンを最新のセキュリティで保護されたリリースに更新します。 これらの脆弱性に対処することは、データの損失、サービスの中断、機密情報への不正アクセスなどの潜在的な問題を防ぐために重要です。

警告

npm 監査実行すると、package.json指定されたすべてのパッケージの名前がパブリック レジストリに送信されます。

npm 監査をローカルで実行する

npm audit は、フィードで認証する必要なくローカルで実行できます。 これにより、プロジェクトで脆弱性をスキャンし、検出されたセキュリティの問題とその重大度に関する詳細なレポートを受け取ることができます。

検出された脆弱性を修正する場合は実行できますが npm audit fix、そのためにはフィードで認証する必要があります。 このコマンドは、セキュリティで保護されていないパッケージバージョンを最新のセキュリティで保護されたリリースに更新します。

npm 監査修正を実行すると、ローカル プロジェクトのpackage.jsonとpackage-lock.jsonが更新されるだけでなく、これらの変更が関連する Azure Artifacts フィードと同期されます。 新しくセキュリティで保護されたバージョンのパッケージは、フィードで自動的に使用できるようになります。

この同期により、同じフィードを共有する他のプロジェクトでも、これらの更新プログラムのメリットが得られます。 これは、すべてのプロジェクトメイン一貫性のある安全なパッケージ バージョンのセットを維持するのに役立ちます。

  1. プロジェクト ディレクトリで次のコマンドを実行して、npm 監査を実行します。

    npm audit
    
  2. 脆弱でないパッケージ バージョンへのアップグレードを試みる場合は、まずフィードに接続していることを確認してから、プロジェクト ディレクトリで次のコマンドを実行します。

    npm audit fix
    

npm 監査の修正を実行した後、アプリケーションで徹底的なテストを実行して、更新によって重大な変更が発生していないことを確認してください。 修正プログラムでメジャー バージョンの更新が必要な場合は、パッケージのリリース ノートで破壊的変更の可能性を確認することをお勧めします。 パブリックに脆弱な依存関係を持つプライベート パッケージは脆弱性アラートを受け取りますが、npm 監査修正を通じて修正プログラムを受け取ることはありません。

Note

npm 監査は npm インストール実行ごとに自動的に実行されますが、パブリック パッケージに対してのみ機能します。

パイプラインから npm 監査を実行する

Azure Pipelines では現在、npm 監査はサポートされていません。 パイプラインで通常 の npm audit コマンドを使用しようとすると、失敗します。 代わりに、--registry 引数を指定して npm audit実行し、フィードのソース URL を指定します。

  1. Azure DevOps 組織にサインインしてから、プロジェクトに移動します。

  2. [パイプライン] を選択し、パイプラインを選択し、[編集] を選択して変更します。

  3. パイプライン定義から、新しいタスクを + 追加する記号を選択します。

  4. npm タスクを検索し、[追加] を選択してパイプラインに追加します。

  5. タスクの表示名を入力し、[コマンド] ドロップダウン メニューからカスタム選択します。

  6. [コマンドと引数] テキスト ボックスに カスタム コマンドを 貼り付けます。

    1. npm 監査を実行し、パッケージの脆弱性をスキャンするには、次のコマンドを使用します。 プレースホルダーをフィードのソース URL に置き換えます。

      audit --registry=<FEED_SOURCE_URL>
      
    2. 脆弱性のないパッケージ バージョンへのアップグレードを試みる場合は、次のコマンドを使用します。 プレースホルダーをフィードのソース URL に置き換えます。

    audit fix --registry=<FEED_SOURCE_URL>
    

    A screenshot showing the npm audit task in a classic pipeline.