Java エージェントで、Javaを実行時のJVMプロパティに機密性が高いパラメーターが含まれている場合に難読化して送信できるようになりました。
本記事では今回のアップデートの詳細を紹介します。
概要
New RelicのAPMエージェントはアプリケーションの実行環境に関する情報を収集しており、言語のバージョンや実行OSの情報、どの様なパラメーターがアプリケーションに設定されているか確認することができます。
環境の情報はAPMの「Settings > Environment > Environment snapshot」の先で確認することが可能です。
Java エージェントの場合、Java 起動時に渡しているJVMのパラメーター値もUI上で確認することが出来ますが、Java エージェント v8.16.0から UI上で確認できるパラメーターを難読化して送信できるようになりました。
設定方法
下記のJavaの起動コマンドを例に設定方法を確認していきます。
sudo java -XX:+HeapDumpOnOutOfMemoryError \
-XX:ActiveProcessorCount=1 \
-Dprop.A=val1 \
-Dprop.B=val2 \
-DpropC=val3 \
-Dprop.B.other=val4 \
-Dprop.B.extended=val5 \
-javaagent:target/newrelic/newrelic.jar \
-jar target/*.jar
デフォルトでは-Dpropで指定したパラメーターは難読化されて送信されるようになっており、UI上では以下のようにJVMのパラメーターがobfuscatedとして表示されるようになっています。
エージェントの設定で難読化するパラメーターと難読化しないパラメーターの指定ができるようになっており、newrelic.ymlで設定する場合はnewrelic.config.obfuscate_jvm_props
の箇所で設定します。
設定方法については以下ドキュメントもご確認ください。
例えば、以下の設定で定義した場合のUI上の見え方について紹介します。
obfuscate_jvm_props:
enabled: true
# 難読化しないパラメーターを定義する
allow: -Dprop.A, -Dprop.B*
# 難読化するパラメーターをblockで定義する
block: -Dprop.B.extended
上記の設定で定義した場合、難読化する・しないの対象の判別は以下のようになります。
難読化対象のパラメーター | 難読化される/難読化されない理由 |
---|---|
-Dprop.A | 対象: allowで定義している-Dprop.Aにマッチするため |
-Dprop.B | 対象: allowで定義している-Dprop.B*にマッチするため |
-Dprop.C | 対象外: allowとblockのどちらの定義にもマッチしないためデフォルト設定で難読化される |
-Dprop.B.other | 対象: allowで定義している-Dprop.B*にマッチするため |
-Dprop.B.extended | 対象外: blockで定義している-Dprop.B.extendedにマッチするため |
UI上では下記の様にパラメーターが入ってくることになります。
デフォルトでは全てのパラメーターは難読化されて送信されますが、エージェントの設定で難読化するパラメーター、難読化しないパラメーターを定義できることを紹介させていただきました。
最新のアップデートの詳細はこちら
その他
New Relicでは、新しい機能やその活用方法について、QiitaやXで発信しています!
無料でアカウント作成も可能なのでぜひお試しください!
New Relic株式会社のX(旧Twitter) や Qiita OrganizationOrganizationでは、
新機能を含む活用方法を公開していますので、ぜひフォローをお願いします。
無料のアカウントで試してみよう!
New Relic フリープランで始めるオブザーバビリティ!