Node.jsエージェント

Contrast Node.jsエージェントは、トランスコンパイルなどの確立された技術を駆使して、Node.js Webアプリケーションの動作を解析し、実行前のアプリケーションにContrastのセンサーを追加します。

Contrast Node.jsエージェントは、セマンティックバージョニング(major.minor.patch)に従います。エージェントは、こちらのサポート対象テクノロジシステム要件で最適に動作します。

Node.jsエージェントは、Babelコンパイラを使用してアプリケーションの起動前にアプリケーションコードを変換します。起動後、エージェントはサポート対象のフレームワークやモジュールに必要な関数をパッチします。

Node.jsエージェントをインストールすると、 アプリケーションの動作を監視するために、2つの主要なソースコード変換が行われます。

  • AST変換は、エージェントによって作成されたコード本体の抽象的な構文ツリーを操作し、この構文ツリーに基づいて新しいソースコードを作成するプロセスです。エージェントはこのプロセスによって、関数フックが機能しない状況を処理します。例えば、変換によってContrastはJavaScriptに演算子のオーバーロードを追加できるため、信頼されないデータの流れを適切に追跡できるようになります。

  • 関数フックは、child_process.execなど特定の関数の実行を引き継ぎ、その引数や戻り値に関するデータを収集し、エージェントの解析部分にこのデータを送信します。その結果、エージェントは特定の関数について報告できるようになります。

Contrastサービス

Contrastサービスは、Node.jsエージェント内にパッケージ化された実行可能ファイルで、別のプロセスで実行されます。エージェントのバージョン4.x.xでは、Contrastサービスはエージェントと一緒に自動的に起動します。

このサービスによって、Node.jsエージェントとContrastサーバ間の通信が可能になります。エージェントと同様に、環境変数YAML設定ファイル設定できます。Contrastサービスは、エージェントとContrast間のHTTP通信に、デフォルトで30555番ポートを使用します。

エージェントとContrast間のポートおよび通信プロトコルは設定できます。利用可能なプロトコルは、HTTP、Linuxソケット(ファイル記述子)、gRPCです。サービスは、エージェントと1対1でデプロイすることも、複数のコンテナをホストする単一のサーバ上のエージェントを1つのグループとして共有することもできます。