Suivi avancé de l'usage
Le suivi d'utilisation avancé vous permet d'obtenir des informations sur les serveurs Java exécutés sur des instances gérées et sur les bibliothèques utilisées par vos applications Java, en mettant l'accent sur la sécurité en indiquant si les bibliothèques détectées contiennent des vulnérabilités connues.
Le suivi de l'utilisation avancé comprend :
- Analyser à la recherche des serveurs Java
- Analyser à la Recherche de bibliothèques Java
Analyser à la recherche des serveurs Java
Cette fonctionnalité vous permet de repérer les serveurs Java exécutés dans votre parc. JMS est actuellement en mesure de détecter les serveurs WebLogic, JBoss et Tomcat. Une fois le repérage réussi, vous pouvez trouver tous les serveurs Java détectés dans la section Serveurs Java de JMS Fleet.
Console OCI Cloud
- Connectez-vous à la console OCI en tant qu'administrateur.
- Ouvrez le menu de navigation, cliquez sur Observation et gestion, puis sur Parcours sous Java Management.
- Sélectionnez votre parc.
- Cliquez sur Actions et, dans le menu, sélectionnez Rechercher les serveurs Java.
- Cliquez sur Scanner.
- Une fois la demande de travail terminée, cliquez sur la section Serveurs Java du parc. Tous les serveurs Java détectés doivent être répertoriés
Interface de ligne de commande OCI
- Exécutez la commande suivante :
oci jms java-server-usage scan --fleet-id $FLEET_OCID
Remarques :
Vous pouvez indiquer une liste JSON d'instances gérées où l'analyse doit être exécutée avec le paramètre supplémentaire--managed-instance-ids
, sinon toutes les instances gérées du parc seront sélectionnées.
Exemple de charge utile JSON envoyé par le module d'extension JMS à l'objet de journal d'inventaire OCI lors de l'analyse des serveurs Java :
{
"datetime": 1749559306604,
"logContent": {
"id": "ac26cc41-de6d-4f8a-994b-909a3705d0db",
"time": "2025-06-10T12:41:46.604Z",
"oracle": {
"compartmentid": "ocid1.compartment.oc1..compartment-id",
"ingestedtime": "2025-06-10T12:42:08.158306651Z",
"instanceid": "ocid1.instance.oc1.eu-frankfurt-1.instance-id",
"loggroupid": "ocid1.loggroup.oc1.eu-frankfurt-1.log-group-id",
"logid": "ocid1.log.oc1.eu-frankfurt-1.log-id",
"tenantid": "ocid1.tenancy.oc1..tenant-id"
},
"source": "ocid1.instance.oc1.eu-frankfurt-1.instance-id",
"specversion": "1.0",
"subject": "Oracle JMS Plugin",
"type": "jms.javaserver.metadata.log",
"data": {
"data": {
"clusterName": "",
"committedHeap": 16252928,
"deployments": [],
"fleetId": "ocid1.jmsfleet.oc1.eu-frankfurt-1.fleet-id",
"initHeap": 16777216,
"javaDistribution": "Java(TM) SE Runtime Environment",
"javaHome": "/usr/lib/jvm/jdk-17.0.15-oracle-x64",
"javaMajorVersion": "17",
"javaVendor": "Oracle Corporation",
"javaVersion": "17.0.15",
"managedInstanceId": "ocid1.instance.oc1.eu-frankfurt-1.instance-id",
"maxHeap": 241303552,
"osArch": "amd64",
"osName": "Linux",
"osVersion": "5.15.0-306.177.4.el9uek.x86_64",
"productName": "Apache Tomcat",
"productVersion": "11.0.8.0",
"serverHome": "/home/opc/apache-tomcat-11.0.8",
"serverName": "N/A",
"serverPort": "8088",
"usedHeap": 13224344
},
"datacontenttype": "application/json",
"dataschema": "1.0",
"id": "5d1178ee-f8e9-4cd4-a463-5bb309c02b99",
"source": "ocid1.instance.oc1.eu-frankfurt-1.instance-id",
"specversion": "1.0",
"time": "2025-06-10T12:41:46.601Z",
"type": "jms.javaserver.metadata.log"
}
},
"regionId": "eu-frankfurt-1"
}
Analyser à la Recherche de bibliothèques Java
Cette fonctionnalité vous permet de disposer d'un rapport sur toutes les bibliothèques utilisées par vos applications Java dans une seule section de votre parc appelée bibliothèques Java.
Vous pouvez l'utiliser pour analyser les vulnérabilités connues dans les bibliothèques tierces Java et vous assurer qu'aucune bibliothèque indésirable n'est utilisée par vos applications Java. Pour une meilleure compréhension de ce que JMS est capable ou incapable de détecter, reportez-vous à la documentation officielle ici : Analyse des bibliothèques Java.
Console OCI Cloud
- Connectez-vous à la console OCI en tant qu'administrateur.
- Ouvrez le menu de navigation, cliquez sur Observation et gestion, puis sur Parcours sous Java Management.
- Sélectionnez votre parc.
- Cliquez sur Actions et, dans le menu, sélectionnez Rechercher les bibliothèques Java.
- Cliquez sur Scanner.
- Une fois la demande de travail terminée, cliquez sur la section des bibliothèques Java du parc. Toutes les bibliothèques Java détectées doivent être répertoriées
Interface de ligne de commande OCI
- Exécutez la commande suivante :
oci jms library-usage scan --fleet-id $FLEET_OCID
Remarques :
Vous pouvez indiquer une liste JSON d'instances gérées où l'analyse doit être exécutée avec le paramètre supplémentaire--managed-instance-ids
, sinon toutes les instances gérées du parc seront sélectionnées.
Exemple de charge utile JSON envoyé par le module d'extension JMS à l'objet de journal d'inventaire OCI lors de l'analyse des bibliothèques Java :
{
"datetime": 1749633185521,
"logContent": {
"id": "e7915f73-ac67-4ec7-9d4d-7798cb9e0ce0",
"time": "2025-06-11T09:13:05.521Z",
"oracle": {
"compartmentid": "ocid1.compartment.oc1..compartment-id",
"ingestedtime": "2025-06-11T09:14:53.129341509Z",
"instanceid": "ocid1.instance.oc1.eu-frankfurt-1.instance-id",
"loggroupid": "ocid1.loggroup.oc1.eu-frankfurt-1.log-group-id",
"logid": "ocid1.log.oc1.eu-frankfurt-1.log-id",
"tenantid": "ocid1.tenancy.oc1..tenant-id"
},
"source": "ocid1.instance.oc1.eu-frankfurt-1.instance-id",
"specversion": "1.0",
"subject": "Oracle JMS Plugin",
"type": "jms.javaserver.libraries.log",
"data": {
"data": {
"applicationSourcePath": "/var/lib/tomcat/webapps/java-webapp-demo-0.0.1-SNAPSHOT.war",
"clusterName": "",
"committedHeap": 25296896,
"deploymentName": "java-webapp-demo-0.0.1-SNAPSHOT",
"deploymentType": "war",
"fleetId": "ocid1.jmsfleet.oc1.eu-frankfurt-1.fleet-id",
"initHeap": 16777216,
"javaDistribution": "Java(TM) SE Runtime Environment",
"javaHome": "/opt/java/jdk-24.0.1",
"javaMajorVersion": "24",
"javaVendor": "Oracle Corporation",
"javaVersion": "24.0.1",
"libraries": [
"google llc:error_prone_annotations:2.30.0:com.google.errorprone",
"fasterxml:jackson-datatype-jsr310:2.19.0:com.fasterxml.jackson.datatype",
"fasterxml:jackson-core:2.19.0:com.fasterxml.jackson.core",
"the apache software foundation:log4j-to-slf4j:2.24.3:org.apache.logging.log4j",
"google gson project:gson:2.13.1:com.google.code.gson",
"slf4j.org:slf4j-api:2.0.17:org.slf4j",
"google llc:proto-google-common-protos:2.54.1:com.google.api.grpc",
"the apache software foundation:log4j-api:2.24.3:org.apache.logging.log4j",
"h2 group:h2:2.3.232:n/a",
"slf4j.org:jul-to-slf4j:2.0.17:org.slf4j",
"qos.ch:logback-classic:1.5.18:ch.qos.logback",
"fasterxml:jackson-annotations:2.19.0:com.fasterxml.jackson.core",
"fasterxml:jackson-module-parameter-names:2.19.0:com.fasterxml.jackson.module",
"fasterxml:jackson-databind:2.19.0:com.fasterxml.jackson.core",
"eclipse foundation:jakarta.annotation-api:2.1.1:jakarta.annotation",
"qos.ch:logback-core:1.5.18:ch.qos.logback"
],
"managedInstanceId": "ocid1.instance.oc1.eu-frankfurt-1.instance-id",
"maxHeap": 241303552,
"osArch": "amd64",
"osName": "Linux",
"osVersion": "5.15.0-306.177.4.el9uek.x86_64",
"productName": "Apache Tomcat",
"productVersion": "9.0.87.0",
"serverHome": "/usr/share/tomcat",
"serverName": "N/A",
"serverPort": "8080",
"usedHeap": 23623336
},
"datacontenttype": "application/json",
"dataschema": "1.0",
"id": "f725e769-aea1-4c46-9125-9bec280b75c6",
"source": "ocid1.instance.oc1.eu-frankfurt-1.instance-id",
"specversion": "1.0",
"time": "2025-06-11T09:13:05.518Z",
"type": "jms.javaserver.libraries.log"
}
},
"regionId": "eu-frankfurt-1"
}
Exemple
#!/usr/bin/env bash
# configuration variables
FLEET_OCID=ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta
MANAGED_INSTANCE_OCID=ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq
# execute library scan on specific managed instance within your fleet where example application is running
WORK_REQUEST_OCID=$(oci jms library-usage scan \
--fleet-id "$FLEET_OCID" \
--managed-instance-ids "[\"$MANAGED_INSTANCE_OCID\"]" | jq -r '."opc-work-request-id"')
echo $WORK_REQUEST_OCID
# additionally you can add your own logic to check if work request is finished
# sleep 600
# oci jms work-request get --work-request-id "$WORK_REQUEST_OCID" | jq .data.status
Une fois la demande de travail terminée et les données présentes dans JMS, nous pouvons vérifier si notre application contient des vulnérabilités à l'aide de la commande suivante :
#!/usr/bin/env bash
# configuration variables
FLEET_OCID=ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta
MANAGED_INSTANCE_OCID=ocid1.instance.oc1.eu-frankfurt-1.antheljtptiaquqcrjmnu7mxbjthm2jm5qzryu7xy4w27rfo56nxf4uwv6pq
# show first 1000 libraries and print those where JMS is aware of some CVE
oci jms library-usage summarize \
--fleet-id $FLEET_OCID \
--managed-instance-id $MANAGED_INSTANCE_OCID \
--limit 1000 \
--sort-by timeFirstSeen \
--sort-order desc | jq '.data.items|map(select(."cve-id" != null))'
[
{
"approximate-application-count": 0,
"approximate-deployed-application-count": 1,
"approximate-java-server-instance-count": 1,
"approximate-managed-instance-count": 1,
"cve-id": "CVE-2021-20190",
"cvss-score": 8.3,
"fleet-id": "ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta",
"library-key": "425505b8076ceac87cc479168829bd75d6a9b2a9e9a1546989b87622da59af39",
"library-name": "jackson-databind",
"library-version": "2.8.11.6",
"time-end": "2025-06-16T16:14:44.233000+00:00",
"time-first-seen": "2025-06-16T13:09:00+00:00",
"time-last-cve-refreshed": "2025-06-15T00:00:00+00:00",
"time-last-seen": "2025-06-16T13:09:00+00:00",
"time-start": "2025-06-09T00:00:00+00:00"
},
{
"approximate-application-count": 0,
"approximate-deployed-application-count": 1,
"approximate-java-server-instance-count": 1,
"approximate-managed-instance-count": 1,
"cve-id": "CVE-2021-36090",
"cvss-score": 5.0,
"fleet-id": "ocid1.jmsfleet.oc1.eu-frankfurt-1.amaaaaaaptiaquqa2qxxkco6hrguz7nyug2hcpgikhe5gz4d7uy6j6ilbtta",
"library-key": "6cdd56d2278eec9e4c31a9c50567821a06695341957496956d5a9defcfd3dd10",
"library-name": "commons-compress",
"library-version": "1.20",
"time-end": "2025-06-16T16:14:44.233000+00:00",
"time-first-seen": "2025-06-16T13:09:00+00:00",
"time-last-cve-refreshed": "2025-06-15T00:00:00+00:00",
"time-last-seen": "2025-06-16T13:09:00+00:00",
"time-start": "2025-06-09T00:00:00+00:00"
}
]
Dans l'exemple ci-dessus, nous pouvons voir que l'application a une dépendance sur la bibliothèque jackson-databind
de la version 2.8.11.6 qui doit être mise à jour à cause de CVE-2021-20190. Un résultat similaire concerne la dépendance commons-compress
de la version 1.20, qui a signalé la vulnérabilité CVE-2021-36090.