セキュリティ監査を目的として、Ruby エージェントは New Relic コレクターに送信されたすべてのデータを、人間が読める形式のログファイルに記録します。この機能は、Ruby エージェントのバージョン 3.5.5 以降で利用できます。
監査ログの設定
注意
この機能を有効にするのは、デバッグや監査のために送信内容に関する詳細な情報が必要な場合のみです。この機能を長時間有効にすると、監査ログファイルに負荷がかかることがあります。
監査ログはデフォルトでは無効になっていますので、手動で有効にする必要があります。有効にするには、 newrelic.yml ファイルに以下を追加してください。 audit_log.enabled: true
.
デフォルトでは、New Relic Ruby エージェントは監査ログを log/newrelic_audit.log の New Relic エージェントのメインログの隣にあるファイルに書き込みます。監査ログファイルの場所を制御するには、 audit_log.path
設定パラメータに、監査ログを作成するフルパスを設定してください。
監査ログの内容
監査ログファイルは、読むために特別なツールを必要としません。このファイルには、New Relic エージェントが New Relic コレクターにリクエストするごとに 2 行が含まれます。
- 1行目には、リクエストが行われたホストとURIパスが記載されています。
- 2行目には、人間が読める形式のリクエストボディの全内容が含まれています。
監査ログに記録されるリクエストボディは、New Relic コレクターに送信される前に何層ものエンコーディングが適用されている可能性があるため、New Relic コレクターに送信された正確なバイトシーケンスを表していません。しかし、監査ログにダンプされる際には、送信されるリクエストに他の情報は追加されません。
ヒント
生のリクエストボディをエンコードされた形でキャプチャするには、 tcpdump のようなパケットキャプチャツールを使用します。
リクエストボディのフォーマット
リクエストボディのフォーマットは、エージェントが使用する通信フォーマットによって異なります。
- 新しいバージョンのRubyでは、データのシリアライズにJSONを使用しているため、監査ログにはリクエストボディのJSON表現が含まれます。
- 古いRubyのバージョンでは、リクエストボディをシリアライズするためにRubyのネイティブなMarshalフォーマットを使用しています。これは不透明なフォーマットなので、監査ログには
Object#inspect
を呼び出した結果が含まれます。これは、シリアライズの直前のリクエスト・オブジェクト・グラフを人間が読めるように表現したものです。