Service SQL IBM i (AS/400) · Fonction table
SYSTOOLS.AUDIT_JOURNAL_PW
Journal d'audit : mots de passe invalides (PW)
Lit les entrées PW du journal d'audit : mots de passe ou profils invalides, avec le type de violation, l'unité, l'interface et l'origine de la connexion.
À quoi ça sert
Cette fonction de table lit les entrées de type PW du journal d'audit, écrites lors d'une tentative de connexion avec un mot de passe ou un profil incorrect. VIOLATION_TYPE et VIOLATION_TYPE_DETAIL donnent la raison. AUDIT_USER_NAME, DEVICE_NAME, INTERFACE_NAME et les colonnes de localisation indiquent qui a tenté de se connecter, depuis où et par quelle interface.
C'est l'outil de base pour détecter une attaque par force brute ou des comptes verrouillés à répétition. Le SQL permet de compter par type, par adresse ou par profil. L'exemple d'IBM compte chaque type de violation depuis hier, en appelant la fonction sans paramètre.
Appelée sans paramètre, la fonction renvoie la période par défaut. Les paramètres sont facultatifs et communs aux fonctions d'audit.
Résultat réel sur un IBM i 7.5
Ce que nous avons exécuté :
SELECT VIOLATION_TYPE CONCAT ' - ' CONCAT VIOLATION_TYPE_DETAIL,
COUNT(*) AS VIOLATION_COUNT
FROM TABLE (
SYSTOOLS.AUDIT_JOURNAL_PW ( ) )
GROUP BY VIOLATION_TYPE CONCAT ' - ' CONCAT VIOLATION_TYPE_DETAIL
ORDER BY 2 DESC
Ce que l'IBM i a renvoyé le 01/10/2026 (3 lignes au plus) :
| 00001 | VIOLATION_COUNT |
|---|---|
| P - Mot de passe non valide | 13 |
| Q - Echec ouverture de session (authentification util) car profil utilisateur désactivé | 3 |
| U - Nom dutilisateur non valide | 3 |
Données anonymisées : les noms de système, de profils, de
bibliothèques, de postes et les adresses IP ont été remplacés. Les objets du schéma
JOBISQL sont des objets de démonstration créés pour ce site.
L'exemple d'IBM
Pour toutes les entrées d'audit de mots de passe d'hier et d'aujourd'hui, compter le nombre de chaque type de violation.
-- Description: For all the password audit journal entries from yesterday and today,
-- list the number of each type of audit violation.
SELECT VIOLATION_TYPE CONCAT ' - ' CONCAT VIOLATION_TYPE_DETAIL,
COUNT(*) AS VIOLATION_COUNT
FROM TABLE (
SYSTOOLS.AUDIT_JOURNAL_PW ( ) )
GROUP BY VIOLATION_TYPE CONCAT ' - ' CONCAT VIOLATION_TYPE_DETAIL
ORDER BY 2 DESC;
Bon à savoir
Regroupez aussi par REMOTE_LOCATION pour repérer une même source qui essaie plusieurs profils. Ces entrées dépendent de l'audit des échecs d'autorisation.
Paramètres
| Paramètre | Type | Par défaut | Signification |
|---|---|---|---|
STARTING_RECEIVER_NAME |
VARCHAR(10) | '*CURAVLCHN' | Nom du récepteur de journal de départ |
ENDING_RECEIVER_NAME |
VARCHAR(10) | '*CURRENT' | Nom du récepteur de journal de fin |
STARTING_TIMESTAMP |
TIMESTAMP | NULL | Horodatage de début |
ENDING_TIMESTAMP |
TIMESTAMP | NULL | Horodatage de fin |
USER_NAME |
VARCHAR(10) | '*ALL' | Nom du profil utilisateur |
JOB |
VARCHAR(28) | '*ALL' | Nom qualifié du travail |
PROGRAM |
VARCHAR(10) | '*ALL' | Programme |
STARTING_SEQUENCE |
DECIMAL(21, 0) | NULL | Numéro de séquence de départ |
ENDING_SEQUENCE |
DECIMAL(21, 0) | NULL | Numéro de séquence de fin |
STARTING_RECEIVER_LIBRARY |
VARCHAR(10) | '*CURRENT' | Bibliothèque du récepteur de journal de départ |
ENDING_RECEIVER_LIBRARY |
VARCHAR(10) | '*CURRENT' | Bibliothèque du récepteur de journal de fin |
Colonnes renvoyées (35)
Afficher les 35 colonnes
| Colonne | Type | Signification |
|---|---|---|
ENTRY_TIMESTAMP |
TIMESTAMP | Horodatage de l'entrée |
SEQUENCE_NUMBER |
DECIMAL(21, 0) | Numéro de séquence |
USER_NAME |
VARCHAR(10) | Nom du profil utilisateur |
QUALIFIED_JOB_NAME |
VARCHAR(28) | Nom qualifié du travail |
JOB_NAME |
VARCHAR(10) | Nom du travail |
JOB_USER |
VARCHAR(10) | Profil utilisateur du travail |
JOB_NUMBER |
VARCHAR(6) | Numéro du travail |
THREAD |
BIGINT | Unité d'exécution (thread) |
PROGRAM_LIBRARY |
VARCHAR(10) | Bibliothèque du programme |
PROGRAM_NAME |
VARCHAR(10) | Nom du programme |
PROGRAM_LIBRARY_ASP_DEVICE |
VARCHAR(10) | Unité ASP de la bibliothèque du programme |
PROGRAM_LIBRARY_ASP_NUMBER |
INTEGER | Numéro de l'ASP de la bibliothèque du programme |
REMOTE_PORT |
INTEGER | Port distant |
REMOTE_ADDRESS |
VARCHAR(46) | Adresse distante |
SYSTEM_NAME |
VARCHAR(8) | Nom du système |
SYSTEM_SEQUENCE_NUMBER |
DECIMAL(21, 0) | Numéro de séquence système |
RECEIVER_LIBRARY |
VARCHAR(10) | Bibliothèque du récepteur de journal |
RECEIVER_NAME |
VARCHAR(10) | Nom du récepteur de journal |
RECEIVER_ASP_DEVICE |
VARCHAR(10) | Unité ASP du récepteur de journal |
RECEIVER_ASP_NUMBER |
INTEGER | Numéro d'ASP du récepteur de journal |
ARM_NUMBER |
INTEGER | Numéro ARM |
VIOLATION_TYPE |
CHAR(1) | Type de violation |
VIOLATION_TYPE_DETAIL |
VARCHAR(200) | Détail du type de violation |
AUDIT_USER_NAME |
VARCHAR(10) | Nom du profil utilisateur audité |
DEVICE_NAME |
VARCHAR(40) | Nom de l'unité |
INTERFACE_NAME |
VARCHAR(40) | Nom de l'interface |
REMOTE_LOCATION |
VARCHAR(8) | Emplacement distant |
LOCAL_LOCATION |
VARCHAR(8) | Emplacement local |
NETWORK_ID |
VARCHAR(8) | Identifiant du réseau |
DECRYPT_HOST_VARIABLE |
VARCHAR(3) | Variable hôte de déchiffrement |
DECRYPT_OBJECT_LIBRARY |
VARCHAR(10) | Bibliothèque de l'objet de déchiffrement |
DECRYPT_OBJECT_NAME |
VARCHAR(10) | Nom de l'objet de déchiffrement |
DECRYPT_OBJECT_TYPE |
VARCHAR(8) | Type de l'objet de déchiffrement |
DECRYPT_OBJECT_ASP_NAME |
VARCHAR(10) | Nom de l'ASP de l'objet de déchiffrement |
DECRYPT_OBJECT_ASP_NUMBER |
INTEGER | Numéro de l'ASP de l'objet de déchiffrement |