プロジェクトのNPMパッケージおよび依存関係のセキュリティ脆弱性の確認
セキュリティ監査は、セキュリティ脆弱性についてパッケージの依存関係を評価するプロセスです。 セキュリティ監査は、データ損失、サービスの停止、機密情報への不正アクセス、またはその他の問題を引き起こす可能性のある依存関係の既知の脆弱性を検出して解決するのに役立つため、パッケージを使用するユーザーを保護するのに役立ちます。
npm audit
コマンドは、プロジェクト・パッケージに構成されている依存関係の説明をプロジェクトの組込みNPMレジストリに送信し、既知の脆弱性のレポートを要求します。 脆弱性が見つかった場合は、影響および適切な修正が計算されます。 監査レポートには、影響を受けるパッケージ名、脆弱性の重大度と説明、パスおよびその他の情報、および脆弱性を解決するためのパッチを適用するコマンド(使用可能な場合)が含まれます。
npm audit fix
を実行して、修正をパッケージ・ツリーに自動的に適用します。- 推奨されるコマンドを個別に実行して、脆弱な依存関係に対する更新を手動でインストールします。
識別された脆弱性に使用可能なパッチがない場合、監査レポートには脆弱性に関する情報が表示され、さらに調査するのに役立ちます。
セキュリティ脆弱性が見つからなかった場合は、既知の脆弱性を持つパッケージがパッケージの依存関係ツリーに見つからなかったことを意味します。 ただし、アドバイザ・データベースはいつでも更新できるため、npm audit
を定期的に手動で実行するか(「npm監査の手動実行」を参照)、npm audit
を含むビルド・ステップを継続的な統合プロセスに追加する必要があります。
npm install
を使用してパッケージをインストールすると、デフォルトでnpm audit
が自動的に実行されますが、必要に応じてパッケージのインストールでnpm audit
をオフにすることもできます:
- 単一のパッケージのインストール時に
npm audit
をオフにするには、--no-audit
フラグを使用します:npm install <package-name> --no-audit
- すべてのパッケージのインストール時に
npm audit
を無効にするには、ユーザーおよびグローバルnpmrc構成ファイルでaudit
設定をfalse
に設定します:npm set audit false
npm監査の手動実行
npm audit
を手動で実行する方法を次に示します:
- コマンドラインで、
cd path/to/your-package-name
と入力してパッケージ・ディレクトリに移動し、Enterを押します。 - パッケージに
package.json
およびpackage-lock.json
ファイルが含まれていることを確認します。 npm audit
と入力し、Enterを押します。- 監査レポートを確認し、推奨コマンドを実行するか、必要に応じてさらに調査します。
npm監査終了コードの理解
脆弱性が見つからない場合、npm audit
コマンドは0の終了コードで終了し、脆弱性が見つかった場合は0以外のコードで終了します。 脆弱性が見つからない場合、または修正によってすべての脆弱性が正常に修正できる場合は、npm audit fix
コマンドは終了コード0で終了します。 脆弱性が見つかった場合、終了コードは監査レベルの構成設定によって異なります。 CI環境では、--audit-level
引数を含めて、コマンドが失敗する原因となる最小の脆弱性レベルを指定できます。 このオプションはレポート出力をフィルタせず、コマンド失敗のしきい値を変更するだけです。
例
$ npm audit
$ npm audit fix --dry-run --json
dry-run
オプションは、NPMに変更を加えないこと、およびNPMが実行した内容のみを報告することを示します。 これは、インストール、更新、アンインストール、パック、公開など、ローカル・インストールを変更する任意のコマンドに渡すことができます。 json
オプションは、通常の出力ではなく、JSONデータを出力するかどうかを示します。
$ npm audit fix
$ npm audit --audit-level=moderate
audit-level
オプションは、npm audit
がゼロ以外の終了コードで終了する脆弱性の最小レベル(「info」、「low」、「moderate」、「high」、「critical」、または「none」)を示します。