Skip to main content

Node.jsエージェントのアップデート

ContrastのNode.jsエージェントを自動的に更新するのに最も信頼性が高く効果的な方法は、Node.jsのnpmパッケージマネージャを使用し、利用可能な最新バージョンをダウンロードしてインストールすることです。

npmは通常、Node.jsアプリケーションのすべての依存関係を管理するため、すでにビルド環境の一部として利用可能になっているはずです。Node.jsエージェントを更新する頻度と更新の取得先は、組織の設定とContrastの実装(SaaS版またはオンプレミス版)によって異なります。

エージェントのアップデートは、手動または自動のどちらでも行うことができます。

開始する前に

設定を開始する前に、以下が必要です。

  • DevOpsの実践とNodeのnpmパッケージマネージャにある程度の知識があること。

  • Contrastエージェントのnpmリポジトリへアクセスできること。

  • Node.jsアプリケーションがContrastエージェントなしで想定どおりに機能すること。

  • 事前にContrastのNode.jsエージェントが正常にインストールされていること。

  • 変更管理ポリシーと使用する環境に基づいて、エージェントをアップデートする方法とタイミングを決めていること。

重要

Contrastサポートからのアドバイスがない限り、Contrastインスタンスで利用できるバージョンよりも先行したバージョンのNode.jsエージェントを使用しないでください。

手順

  1. Node.jsエージェントをnpmのパブリック(またはプライベート)リポジトリからインストールします。Contrastの利用状況に応じて、いずれかまたは両方のソースを使用して最新のNode.jsエージェントを取得します。

    • SaaS版:npmからエージェントの最新バージョンを入手します。 エージェントを使用する前に検証を必要とする場合、承認されたバージョンのみがあるプライベートのnpmリポジトリを使用することもできます。

    • オンプレミス(EOP)版:Mオンプレミス版を利用しているお客様の多くが、Contrastで新しいソフトウェアがリリースされても、コアソフトウェアやエージェントをすぐには更新しません。通常、パブリックリポジトリ(npmなど)は、新しいバージョンのエージェントを提供しますが、新しいバージョンのエージェントは、古いバージョンのContrastで動作するように設計やテストされていません。オンプレミス版をご利用の場合は、インストールしたオンプレミス版のContrastと一致するエージェントのバージョンのみを保存するプライベートnpmリポジトリから、エージェントの更新を取得してください。

  2. エージェントをインストールし、スクリプトにより最適な方法で自動アップデートを行います。

    • package.jsonを使う:このファイルには、npm(パブリックまたはプライベート)からのアーティファクトを使用して、Node.jsアプリケーションをビルドするたびに自動的に解決する依存関係を指定します。ここにContrastのNode.jsエージェントを含めることで、アプリケーションの新しいビルドを常に最新バージョンのエージェントに合わせることが簡単にできます。例:

      {
        "name": "sample_application",
        "version": "1.0.0",
        "description": "",
        "main": "index.js",
        "scripts": {
          "start": "nodemon",
          "contrast": "node --import @contrast/agent index.js"
        },
        "keywords": [],
        "author": "",
        "license": "ISC",
        "dependencies": {
          "express": "^4.17.1",
          "@contrast/agent": "latest",
        },
        "devDependencies": {
          "nodemon": "^1.19.2"
        }
      }

      そして、アプリケーションをビルドする際には常に$ npm updateコマンドを使用します。これにより、Node.jsエージェントがnpmからNode.jsアプリケーションに自動的にダウンロードされ、追加または更新されます。

    • コマンドラインによる手動インストールおよび更新:組織によっては、package.jsonファイルが環境間で一貫している必要がある場合や、すべての環境にContrastのNode.jsエージェントをインストールする予定がない場合があります。このような場合、手動でエージェントをインストールします。Node.jsのビルドプロセスの一部として手動でエージェントを更新できます。

      次のコマンドを使用して、ContrastのNode.jsエージェントを手動で取得し、npm(パブリックまたはプライベート)からNode.jsアプリケーションに追加または更新します。

      $ npm install @contrast/agent
  3. いずれの方法でインストールしても、インストール後に以下のような出力が表示されます。

    $ npm install @contrast/agent
    
    > grpc@1.24.4 install /Users/<aUserName>/Documents/test-apps/juice-shop/node_modules/grpc> node-pre-gyp install --fallback-to-build --library=static_library
    
    node-pre-gyp WARN Using request for node-pre-gyp https download[grpc] Success: "/Users/<aUserName>/Documents/test-apps/juice-shop/node_modules/grpc/src/node/extension_binary/node-v72-darwin-x64-unknown/grpc_node.node" is installed via remotenpm WARN jest-config@26.6.1 requires a peer of ts-node@>=9.0.0 but none is installed. You must install peer dependencies yourself.npm WARN jsdom@16.4.0 requires a peer of canvas@^2.5.0 but none is installed. You must install peer dependencies yourself.npm WARN ws@7.3.1 requires a peer of bufferutil@^4.0.1 but none is installed. You must install peer dependencies yourself.npm WARN ws@7.3.1 requires a peer of utf-8-validate@^5.0.2 but none is installed. You must install peer dependencies yourself.
    
    + @contrast/agent@3.4.0added 19 packages from 43 contributors, updated 5 packages and audited 1995 packages in 14.904sfound 19 vulnerabilities (5 low, 7 moderate, 4 high, 3 critical)
      run `npm audit fix` to fix them, or `npm audit` for details
  4. インストール/アップデートが成功したかどうかを確認するには、次のコマンドを実行して、出力結果を確認してください。

    $ npm list | grep contrast
    ├─┬ @contrast/agent@3.4.0
    │ ├─┬ @contrast/distringuish-prebuilt@2.0.0
    │ ├─┬ @contrast/escodegen@1.16.0
    │ ├── @contrast/esprima@4.1.1
    │ ├── @contrast/estraverse@5.1.0
    │ ├── @contrast/flat@4.2.0
    │ ├── @contrast/fn-inspect@2.3.0
    │ ├─┬ @contrast/heapdump@1.0.0
    │ ├─┬ @contrast/protobuf-api@2.2.3
    │ ├─┬ @contrast/require-hook@1.1.2
    │ ├─┬ @contrast/synchronous-source-maps@1.1.0

関連項目