オープンソース追跡
Javaアプリケーションで使用するフレームワークやオープンソースライブラリをエージェントを介して追跡する設定方法を提供します。 これはJavaエージェント設定ファイル(whatap.conf)ファイルにweaving
オプションを追加して設定し、様々なフレームワークやライブラリバージョンに対応する方法を案内します。
たとえば、フレームワークやオープンソースでspring-boot-3.x、feign-client-11、okhttp3-4.4使用の際は、次のようにオプションを設定します。
weaving=spring-boot-3.0,feign-11,okhttp3-4.4
対応オープンソースの一覧
Javaエージェントを通じて追跡しているフレームワーク、またはオープンソースに対する設定方法は以下を参照してください。
フレームワーク/オープンソース | バージョン | 設定 | エージェント最低バージョン | 備考 |
---|---|---|---|---|
apache-camel-cxf | camel-cxf-3.15以降 | weaving=camel-cxf-3.15 | v2.2.27 | - |
apache-camel-netty | camel-netty4 2.25以降 | weaving=camel-netty4-2.25 | v2.2.42 | - |
apache-camel-seda | camel-seda-2.22以降 | weaving=camel-seda-2.22 | v2.2.20 | - |
camel-seda-3.2以降 | weaving=camel-seda-3.2 | v2.2.20 | - | |
db2 | db2-11.5以降 | weaving=db2-11.5 | v2.2.18 | - |
dynamodb | dynamodb-1.11 | weaving=dynamodb-1.11 | v2.2.39 | - |
dynamodb-2.25 | weaving=dynamodb-2.25 | v2.2.39 | - | |
feign-client | feign-11以降 | weaving=feign-11 | v2.2.6 | - |
hystrix | hystrix-1.5以降 | weaving=hystrix-1.5 | v2.0_21 | - |
kafka | kafka-clients-2.4.0以降 | weaving=kafka-clients-2.4.0 | v2.2.15 | - |
reactor-kafka-1.3以降 | weaving=reactor-kafka-1.3 | v2.2.5 | - | |
logback | logback-1.2.8以降 | weaving=logback-1.2.8 | v2.2.28 | 特定のappenderを除外するエージェントオプションを提供 |
log4j2 | log4j-2.17以降 | weaving=log4j-2.17 | v2.2.28 | 特定のappenderを除外するエージェントオプションを提供 |
mongodb、mongodb-reactive | mongodb-3.8.2以降 | weaving=mongodb-3.8.2 | v2.2.11 | - |
mongodb-4.0.3以降 | weaving=mongodb-4.0.3 | v2.2.11 | - | |
mongodb-4.4以降 | weaving=mongodb-4.4 | v2.2.11 | - | |
mongodb-4.8以降 | weaving=mongodb-4.8 | v2.2.11 | - | |
mule framework | mule-3.9.5以降 | weaving=mule-3.9.5 | v2.2.23 | - |
mule-4.5以降 | weaving=mule-4.5 | v2.2.23 | - | |
okhttp | okhttp-2.7以降 | weaving=okhttp-2.7 | v2.0_15 | - |
quarkus, quarkus-reactive | quarkus-reactive-1.13以降 | weaving=quarkus-reactive-1.13 | v2.2.19 | - |
quarkus-reactive-2.10以降 | weaving=quarkus-reactive-2.10 | v2.2.19 | - | |
redis(jedis) | jedis-2.9.3以降 | weaving=jedis-2.9.3 | v2.0_33 | - |
jedis-3.2以降 | weaving=jedis-3.2 | v2.0_09 | - | |
redis(lettuce) | lettuce-5.1以降 | weaving=lettuce-5.1 | v2.2.7 | - |
lettuce-6.2以降 | weaving=lettuce-6.2 | v2.2.16 | - | |
okhttp3以降 | weaving=okhttp3 | v2.0_15 | - | |
okhttp3-4.4 | weaving=okhttp3-4.4 | v2.2.9 | - | |
rabbitmq | reactor-rabbitmq-1.2以降 | weaving=reactor-rabbitmq-1.2 | v2.0_06 | - |
retrofit | retrofit-2.5以降 | weaving=retrofit-2.5 | v2.2.39 | okhttp設定と同時使用不可 |
ribbon | ribbon | weaving=ribbon | v2.2.10 | - |
spring-boot | spring-boot-2.1以降 | weaving=spring-boot-2.1 | v2.2.23 | kafka-clients、r2dbc-mysql、spring-cloud-gateway、spring-webflux、tomcat9、undertowを含む。 |
spring-boot-2.5以降 | weaving=spring-boot-2.5 | v2.2.9 | kafka-clients、r2dbc-mysql、redis(lettuce)、spring-cloud-gateway、spring-webflux、tomcat9、undertowを含む。 | |
spring-boot-2.7以降 | weaving=spring-boot-2.7 | v2.2.9 | jasync-r2dbc-mysql、kafka-clients、r2dbc-mysql、redis(lettuce)、spring-cloud-gateway、spring-webflux、tomcat9、undertowを含む。 | |
spring-boot-3.0以降 | weaving=spring-boot-3.0 | v2.2.9 | jasync-r2dbc-mysql、kafka-clients、r2dbc-mysql、redis(lettuce)、spring-cloud-gateway、spring-webflux、tomcat10、undertowを含む。 | |
spring-boot-3.2以降 | weaving=spring-boot-3.2 | v2.2.38 | jasync-r2dbc-mysql、spring-kafka、spring-kafka-batch、r2dbc-mysql、redis(lettuce)、spring-cloud-gateway、spring-webflux、tomcat10、undertowを含む。 | |
tomcat | tomcat9 | weaving=tomcat9 | v2.2.5 | - |
tomcat10 | weaving=tomcat10 | v2.2.5 | - | |
undertow | undertow-2.3以降 | weaving=undertow-2.3 | v2.2.14 | - |
undertow-2.2以降 | weaving=undertow-2.2 | v2.2.39 | - | |
vertx | vertx-3.5.3 | weaving=vertx-3.5.3 | v2.2.42 | - |
vertx-4.5 | weaving=vertx-4.5 | v2.2.39 | - |
JavaエージェントのCVE誤検知防止
JavaエージェントのCVE脆弱性の誤検知防止と不要なライブラリクラスの削除方法を案内します。
CVE脆弱性が検出されても、Javaエージェントが実際に脆弱ではない可能性があります。 Javaアプリケーションで使用するライブラリ情報をモニタリングするために、エージェントには様々なライブラリクラスが含まれていますが、実際に使用しないとロードされません。 Javaアプリケーションで特定のクラスがロードされる時だけ追跡クラスとメソッドが結合され、モニタリングが行われるからです。
従って、CVE脆弱性検査時にソフトウェアの名前とバージョンのみに基づいて警告が発生することがあります。 複数のライブラリが検出されても、実際にアプリケーションでそのライブラリを使用しなければ脆弱性がオープンされないため、必ずしも脆弱な状態ではありません。
もしJavaアプリケーションで該当バージョンを使用せずに追跡クラスを削除する場合は、以下のコマンドを実行してください。 ただし、Javaエージェントがアップデートされるたびに削除作業を再度実行する必要があります。
java -cp whatap.agent-X.Y.Z.jar whatap.agent.setup.RemoveWeaving -remove [weaving jar filename]
特定のライブラリクラスを削除するコマンドはJavaエージェント2.2.37バージョン以降で対応します。
使い方:java -cp whatap.agent-X.Y.Z.jar whatap.agent.setup.RemoveWeaving [arguments] [weaving jar filename]
java -cp whatap.agent-2.2.37.jar whatap.agent.setup.RemoveWeaving -remove spring-boot-2.5.jar spring-boot-2.7.jar
Arguments:
-
-r
または-remove
: Javaエージェントでweaving jarファイルを削除して、新しいJavaエージェントを作成します。 -
-l
または-list
: weaving jarのファイル一覧を出力します。 -
-d
または-debug
: デバッグロギング(debug logging)を有効にします。 -
-e
または-error
: エラーのフルスタックトレースの情報を表示します。 -
-h
または-help
: ヘルプを出力して終了します。