Ruby エージェントの監査ログ

セキュリティ監査用に、Ruby エージェント は New Relic サーバーに送信されたすべてのデータを、人間が判読可能な形式でログファイルに記録できます。この機能は、Ruby エージェントバージョン 3.5.5 以降で利用可能です。

監査ログの設定

デバッグや監査目的で、送信内容に関する詳細情報が必要な場合のみ、この機能を有効にしてください。この機能を長時間有効にすると、監査ログファイルが過負荷の現認になる可能性があります。

監査ログは、デフォルトでは無効になっており、手動で有効にする必要があります。有効にするには、
newrelic.yml ファイルに次の行を追加します。audit_log.enabled: true

デフォルトでは、New Relic Ruby エージェントは、メインの New Relic エージェントログの横にあるファイル
log/newrelic_audit.log に監査ログを書き込みます。監査ログファイルのパスを変更したい場合は、audit_log.path 構成パラメーターを監査ログを生成した場所へのフルパスに設定します。

監査ログの内容

監査ログファイルには特別なツールは必要ありません。New Relic エージェントが New Relic サーバーに対して送信されるリクエストに以下の2行が含まれます。

  • 最初の行には、リクエストが行われたホストと URI のパスがリストされています。
  • 2行目には、リクエスト本文の内容が人間が判読可能な形式で含まれています。

監査ログ内のリクエスト本体は、New Relic サーバーに送信される前に、いくつかのエンコーディングレイヤーが適用される可能性があるため、New Relic サーバーに送信される正確なバイトシーケンスを表していません。ただし、それらが監査ログにダンプされると、他の情報は送信要求に追加されません。

生のリクエストボディをエンコードされた形式で取得するには、tcpdump
などのパケットキャプチャツールを使ってください。

リクエストボディのフォーマット

リクエストボディのフォーマットは、以下のようにエージェントの通信形式によって異なります。

  • 新しい目の Ruby バージョンではデータのシリアル化に JSON を使います。そのため、監査ログにはリクエストボディの JSON 表現が含まれます。
  • 古い Ruby バージョンでは、Ruby のネイティブの Marshal フォーマットを使ってリクエストボディをシリアライズしています。これは不透明な形式なので、監査ログには Object#inspect を呼び出した結果が含まれます。これにより、シリアライズ直前に、リクエストのオブジェクトグラフの人間が読める形式のデータが生成されます。