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エージェント内にパッケージ化された実行可能ファイルで、別のプロセスで実行されます。エージェントのバージョン4.x.xでは、Contrastサービスはエージェントと一緒に自動的に起動します。
このサービスによって、Node.jsエージェントとContrastサーバ間の通信が可能になります。エージェントと同様に、環境変数やYAML設定ファイルで設定できます。Contrastサービスは、エージェントとContrast間のHTTP通信に、デフォルトで30555番ポートを使用します。
エージェントとContrast間のポートおよび通信プロトコルは設定できます。利用可能なプロトコルは、HTTP、Linuxソケット(ファイル記述子)、gRPCです。サービスは、エージェントと1対1でデプロイすることも、複数のコンテナをホストする単一のサーバ上のエージェントを1つのグループとして共有することもできます。