
Introduction
On passe des années à protéger nos bases, mais combien de fois avons-nous pu le démontrer noir sur blanc ? Pour moi, la réponse a changé le jour où j’ai commencé à utiliser DBSAT.
C’est un outil gratuit d’Oracle qui examine votre base, vous dit ce qui ne va pas, et permet ensuite de prouver ce qui a été corrigé. Je vous explique comment je m’en sers sur une base 19c.
Comment ça marche
DBSAT fait son travail en trois temps. Le Collector lit la configuration de la base : comptes, privilèges, profils, paramètres, audit, chiffrement. Le Reporter transforme ces données en rapport, avec des constats classés par niveau de risque. Le Discoverer cherche les données sensibles dans les colonnes.
L’outil est gratuit pour les clients Oracle qui ont un contrat de support actif. Il se télécharge sur My Oracle Support (Note 2138254.1). Vous y récupérez une archive zip, qu’il suffit de décompresser.
Il est recommandé de l’installez dans un répertoire à part, par exemple /u01/tools/dbsat.
Décompressez et lancez DBSAT avec l’utilisateur OS Oracle
# Avec le user root
mkdir -p /u01/tools/dbsat /u01/dbsat/out
chown -R oracle:oinstall /u01/tools/dbsat /u01/dbsat
# Avec le user oracle
unzip /tmp/dbsat.zip -d /u01/tools/dbsat
chmod 700 /u01/dbsat/outLangage du code : PHP (php)DBSAT a besoin de Java 17 au minimum. Sur mon serveur, j’avais une version obsolète de Java , j’ai installé une nouvelle version avec la commande suivante:
dnf install -y java-17-openjdk-headlessJe repère ensuite le chemin d’installation et je vérifie la version actuelle:
ls -d /usr/lib/jvm/*
/usr/lib/jvm/jre-17-openjdk/bin/java -versionIl ne faut modifier ni le JAVA_HOME du profil de l’utilisateur OS oracle ni celui par défaut du serveur, le profil de l’utilisateur OS Oracle sert aussi à lancer nos bases et nos outils Oracle, et on n’a pas envie qu’un changement de Java les perturbe. Je limite donc la nouvelle version de Java installé à DBSAT avec un petit script de lancement que j’enregistre sous le nom dbsat.sh
#!/bin/bash
export JAVA_HOME=/usr/lib/jvm/jre-17-openjdk
export PATH=$JAVA_HOME/bin:$PATH
cd /u01/tools/dbsat
./dbsat "$@"Langage du code : JavaScript (javascript)J’ajoute les droits d’exécution pour le script
chmod +x dbsat.shLangage du code : CSS (css)Pour le compte BDD Oracle qui sera utilisé pour lancer l’outil DBSAT, il est recommandé de créer un compte dédié avec des privilèges accordés un par un et un mot de passe solide. Le guide officiel d’Oracle fournit un script d’exemple avec la liste exacte des privilèges nécessaires.
La collecte
On se connecte avec le user OS Oracle :
./dbsat.sh collect dbsat_user@PDB_APPLI /u01/dbsat/out/PDB_APPLI_2026-10
Database Security Assessment Tool version 4.2 (Mar 2026)
This tool is intended to assist you in securing your Oracle database
system. You are solely responsible for your system and the effect and
results of the execution of this tool (including, without limitation,
any damage or data loss). Further, the output generated by this tool may
include potentially sensitive system configuration data and information
that could be used by a skilled attacker to penetrate your system. You
are solely responsible for ensuring that the output of this tool,
including any generated reports, is handled in accordance with your
company's policies.
Connecting to the target Oracle database...
................................................
................................................
DBSAT Collector completed successfully.
Encrypting PDB_APPLI_2026-10.json...
Enter an encryption key:
Re-enter the encryption key:
Encryption completed successfully.Langage du code : PHP (php)DBSAT demande le mot de passe du compte, interroge la base, puis nous demande une clé de chiffrement pour protéger le fichier produit. On note cette clé car elle nous sera redemandée à l’étape suivante. Le mot de passe n’apparaît nulle part dans la commande, ce qui est recommandé par Oracle.
On lance bien sûr la collecte sur le serveur de la base, sinon les contrôles du système d’exploitation sont ignorés et nous verrons apparaître l’erreur ORA-20002, sans gravité mais le rapport sera moins complet.
Le rapport
On passe ensuite le résultat dans le Reporter, avec le même script :
./dbsat.sh report /u01/dbsat/out/PDB_APPLI_2026-10Le Reporter demande d’abord la clé utilisée pendant la collecte, puis une nouvelle clé pour chiffrer le rapport lui-même, qui est produit dans un fichier .dbsat. Pour l’ouvrir, il faut l’extraire :
./dbsat.sh extract /u01/dbsat/out/PDB_APPLI_2026-10_report
Database Security Assessment Tool version 4.2 (Mar 2026)
This tool is intended to assist you in securing your Oracle database
system. You are solely responsible for your system and the effect and
results of the execution of this tool (including, without limitation,
any damage or data loss). Further, the output generated by this tool may
include potentially sensitive system configuration data and information
that could be used by a skilled attacker to penetrate your system. You
are solely responsible for ensuring that the output of this tool,
including any generated reports, is handled in accordance with your
company's policies.
Enter an encryption key:
Extracted: PDB_APPLI_2026-10_report.txt
Extracted: PDB_APPLI_2026-10_report.html
Extracted: PDB_APPLI_2026-10_report.xlsx
Extracted: PDB_APPLI_2026-10_report.json
Decompression complete.Langage du code : PHP (php)ls -lrt
total 1500
-rw------- 1 oracle oinstall 111780 May 6 19:54 PDB_APPLI_2026-10.dbsat
-rw------- 1 oracle oinstall 240612 May 6 19:56 PDB_APPLI_2026-10_report.dbsat
-rw------- 1 oracle oinstall 460309 May 6 19:57 PDB_APPLI_2026-10_report.html
-rw------- 1 oracle oinstall 46102 May 6 19:57 PDB_APPLI_2026-10_report.xlsx
-rw------- 1 oracle oinstall 291347 May 6 19:57 PDB_APPLI_2026-10_report.txt
-rw------- 1 oracle oinstall 369780 May 6 19:57 PDB_APPLI_2026-10_report.jsonLangage du code : CSS (css)Le rapport sort en HTML, Excel, JSON et texte. Je garde le HTML pour lire, et le JSON pour conserver une trace exploitable.
Le rapport s’ouvre sur un résumé qui compte les constats par niveau : High Risk, Medium Risk, Low Risk, puis Evaluate, Advisory et Pass. Je le lis toujours dans le même ordre. Je commence par les High Risk, que je traite sans discuter. Je passe ensuite aux constats Evaluate, où je me demande si la situation est normale pour cette base. Les Advisory, je les planifie sans m’y jeter.
Chaque constat vient avec une explication, une recommandation et, selon le cas, une référence vers les STIG, le CIS Benchmark ou le RGPD. Face à un auditeur, c’est pratique : vous renvoyez vers la référence au lieu de défendre votre avis.
Ci-après quelques extraits du contenu du rapport HTML



Le Discoverer
Le Discoverer répond à une question que beaucoup de bases laissent sans réponse : où sont vraiment les données personnelles ? Il fonctionne seul, sans avoir besoin du Collector ni du Reporter. Il se connecte à la base et cherche dans les noms des colonnes des mots qui révèlent des données sensibles : numéro de pièce d’identité, carte bancaire, RIB, date de naissance, adresse, et ainsi de suite. Il ne lit pas le contenu des tables, seulement leur structure.
Tout se passe dans le dossier Discover/conf de DBSAT. On copie le fichier d’exemple sous un autre nom:
cd /u01/tools/dbsat/Discover/conf
cp sample_dbsat.config custom_dbsat.config
vi custom_dbsat.configDans le fichier, la seule partie obligatoire à remplir est la connexion à la base, dans la section [Database] :
DB_HOSTNAME = srvdb01
DB_PORT = 1521
DB_SERVICE_NAME = PDB_APPLIOn lance la découverte
./dbsat.sh discover -c Discover/conf/custom_dbsat.config /u01/dbsat/out/PDB_APPLI_2026-10
Database Security Assessment Tool version 4.2 (Mar 2026)
This tool is intended to assist you in securing your Oracle database
system. You are solely responsible for your system and the effect and
results of the execution of this tool (including, without limitation,
any damage or data loss). Further, the output generated by this tool may
include potentially sensitive system configuration data and information
that could be used by a skilled attacker to penetrate your system. You
are solely responsible for ensuring that the output of this tool,
including any generated reports, is handled in accordance with your
company's policies.
Enter username: system
Enter password:
DBSAT Discover ran successfully.
Encrypting the generated reports…
Enter an encryption key:
Re-enter the encryption key:
Encryption completed successfully.Langage du code : PHP (php)Le Discoverer demande le nom d’utilisateur et le mot de passe du compte de la base, puis une clé de chiffrement pour protéger le résultat. Il faut que les statistiques de la base soient à jour avant de lancer le script car il s’appuie sur ces statistiques pour compter les lignes des tables, donc des statistiques anciennes donnent des chiffres faux.
Le résultat est un fichier chiffré, comme pour le rapport. Il faut l’extraire avant de l’ouvrir :
./dbsat.sh extract /u01/dbsat/out/PDB_APPLI_2026-10_discoverOn obtient ensuite un rapport HTML, un fichier CSV , et un fichier JSON.
ls -lrt
total 1868
-rw------- 1 oracle oinstall 111780 May 6 20:54 PDB_APPLI_2026-10.dbsat
-rw------- 1 oracle oinstall 240612 May 6 20:56 PDB_APPLI_2026-10_report.dbsat
-rw------- 1 oracle oinstall 460309 May 6 20:57 PDB_APPLI_2026-10_report.html
-rw------- 1 oracle oinstall 46102 May 6 20:57 PDB_APPLI_2026-10_report.xlsx
-rw------- 1 oracle oinstall 291347 May 6 20:57 PDB_APPLI_2026-10_report.txt
-rw------- 1 oracle oinstall 369780 May 6 20:57 PDB_APPLI_2026-10_report.json
-rw------- 1 oracle oinstall 34788 May 6 20:12 PDB_APPLI_2026-10_discover.dbsat
-rw------- 1 oracle oinstall 119267 May 6 20:13 PDB_APPLI_2026-10_discover.json
-rw------- 1 oracle oinstall 146229 May 6 20:13 PDB_APPLI_2026-10_discover.html
-rw------- 1 oracle oinstall 66955 May 6 20:13 PDB_APPLI_2026-10_discover.csv
Langage du code : CSS (css)Le rapport liste les schémas, les tables et les colonnes concernés, avec le nombre de lignes. J’y ai retrouvé plus d’une fois des colonnes oubliées dans des tables de test.
Ci-après un extrait du rapport HTML:


Poster un Commentaire