Service SQL IBM i (AS/400) · Fonction table
SYSTOOLS.AUDIT_JOURNAL_ZR
Audit des objets lus (ZR)
Lit dans le journal d'audit les entrées ZR : lectures d'objets, de fichiers ou d'éléments de l'IFS, avec le profil, le travail et le programme à l'origine.
À quoi ça sert
Cette fonction de table extrait les entrées de type ZR du journal d'audit (QAUDJRN), qui enregistrent les accès en lecture à un objet. Chaque ligne donne l'horodatage, le profil USER_NAME, le travail, le programme, l'adresse distante éventuelle et l'objet lu (LIBRARY_NAME, OBJECT_NAME, OBJECT_TYPE ou PATH_NAME dans l'IFS).
On l'emploie pour savoir qui consulte des données sensibles (paie, clients) ou quels objets sont réellement lus. Les entrées ne sont produites que si l'audit en lecture est activé sur les objets ou les utilisateurs concernés, ce qui peut générer un gros volume.
Les paramètres permettent de borner la période (STARTING_TIMESTAMP, ENDING_TIMESTAMP) ou la plage de récepteurs et de séquences, et de filtrer par USER_NAME, JOB ou PROGRAM. Le SQL apporte les regroupements et comptages que DSPJRN ne fait pas.
Résultat réel sur un IBM i 7.5
Ce que nous avons exécuté :
SELECT COUNT(*), LIBRARY_NAME, OBJECT_NAME, OBJECT_TYPE FROM TABLE(
SYSTOOLS.AUDIT_JOURNAL_ZR(
STARTING_TIMESTAMP => CURRENT TIMESTAMP - 2 DAYS ))
WHERE LIBRARY_NAME = 'APPLIB'
GROUP BY LIBRARY_NAME, OBJECT_NAME, OBJECT_TYPE
Aucune entrée de ce type dans le journal d'audit sur les 90 derniers jours : ce type d'événement n'est pas audité ou ne s'est pas produit sur notre IBM i de test.
L'exemple d'IBM
Lister les objets de la bibliothèque APPLIB qui ont été lus au cours des 2 derniers jours.
-- Description: List objects in APPLIB that were read in the last 2 days.
SELECT COUNT(*), LIBRARY_NAME, OBJECT_NAME, OBJECT_TYPE FROM TABLE(
SYSTOOLS.AUDIT_JOURNAL_ZR(
STARTING_TIMESTAMP => CURRENT TIMESTAMP - 2 DAYS ))
WHERE LIBRARY_NAME = 'APPLIB'
GROUP BY LIBRARY_NAME, OBJECT_NAME, OBJECT_TYPE;
Bon à savoir
L'audit en lecture est coûteux en volume : borner systématiquement la période. Le droit spécial *AUDIT est nécessaire pour lire le journal d'audit.
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 (42)
Afficher les 42 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 |
ENTRY_TYPE |
CHAR(1) | Type de l'entrée |
ENTRY_TYPE_DETAIL |
VARCHAR(200) | Détail du type de l'entrée |
ACCESS_TYPE |
INTEGER | Type d'accès |
ACCESS_TYPE_DETAIL |
VARCHAR(50) | Détail du type d'accès |
LIBRARY_NAME |
VARCHAR(10) | Nom de la bibliothèque |
OBJECT_NAME |
VARCHAR(10) | Nom de l'objet |
OBJECT_TYPE |
VARCHAR(7) | Type de l'objet |
MEMBER_NAME |
VARCHAR(10) | Nom du membre |
OBJECT_ASP_NAME |
VARCHAR(10) | Nom de l'ASP de l'objet |
OBJECT_ASP_NUMBER |
INTEGER | Numéro de l'ASP de l'objet |
PATH_NAME |
GRAPHIC VARYING | Chemin |
PATH_NAME_INDICATOR |
VARCHAR(3) | Indicateur du chemin |
RELATIVE_DIRECTORY_FILE_ID |
BINARY(16) | Identifiant de fichier du répertoire relatif |
IFS_OBJECT_NAME |
GRAPHIC VARYING | Nom de l'objet IFS |
OBJECT_FILE_ID |
BINARY(16) | Identifiant de fichier de l'objet |
PARENT_FILE_ID |
BINARY(16) | Identifiant du fichier parent |
IMGCLGE_ACCESS_TYPE |
VARCHAR(10) | Type d'accès de l'entrée du catalogue d'images |
IMGCLGE_INDEX_NUMBER |
INTEGER | Numéro d'index de l'entrée du catalogue d'images |
IMGCLGE_VOLUME_ID |
VARCHAR(32) | Identifiant de volume de l'entrée du catalogue d'images |
IMGCLGE_WRITE_PROTECTION |
VARCHAR(3) | Protection en écriture de l'entrée du catalogue d'images |
IMGCLGE_VIRTUAL_DEVICE |
VARCHAR(10) | Unité virtuelle de l'entrée du catalogue d'images |