Service SQL IBM i (AS/400) · Fonction table
SYSTOOLS.AUDIT_JOURNAL_AF
Journal d'audit : échecs d'autorisation (AF)
Lit les entrées AF du journal d'audit : échecs d'autorisation, accès refusés et violations de sécurité (objets, IFS, ports, API, PTF).
À quoi ça sert
Cette fonction de table lit les entrées de type AF du journal d'audit. Chaque ligne correspond à un accès refusé ou à une violation de sécurité : droit insuffisant sur un objet, un chemin IFS, un port TCP/IP, une API, etc. VIOLATION_TYPE et VIOLATION_TYPE_DETAIL donnent la nature de l'infraction.
C'est l'une des fonctions les plus utiles pour la sécurité : on repère les tentatives d'accès anormales, ou l'application qui plante parce qu'il lui manque un droit. Les colonnes d'objet (OBJECT_LIBRARY, OBJECT_NAME, PATH_NAME) disent ce qui était visé, et REMOTE_ADDRESS d'où venait la demande.
Les paramètres sont facultatifs et communs aux fonctions d'audit : bornes de récepteurs, d'horodatage et de séquence, utilisateur, travail, programme. Ces entrées n'existent que si l'audit des échecs d'autorisation est activé.
Résultat réel sur un IBM i 7.5
Ce que nous avons exécuté :
SELECT * FROM TABLE(
SYSTOOLS.AUDIT_JOURNAL_AF(
STARTING_TIMESTAMP => CURRENT TIMESTAMP - 1 DAY ))
WHERE PATH_NAME IS NOT NULL
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
Trouver les échecs d'autorisation sur des objets du système de fichiers intégré (IFS) au cours des dernières 24 heures.
-- Description: Find any authority failures for Integrated File System (IFS) objects
-- in the past 24 hours.
SELECT * FROM TABLE(
SYSTOOLS.AUDIT_JOURNAL_AF(
STARTING_TIMESTAMP => CURRENT TIMESTAMP - 1 DAY ))
WHERE PATH_NAME IS NOT NULL;
Bon à savoir
Pour un tableau de bord, regroupez sur VIOLATION_TYPE_DETAIL et USER_NAME avec COUNT(*) : un utilisateur qui cumule des échecs est un bon signal. Le droit *AUDIT est en général requis.
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 (49)
Afficher les 49 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 |
VALIDATION_ERROR_ACTION |
CHAR(1) | Action sur erreur de validation |
VALIDATION_ERROR_ACTION_DETAIL |
VARCHAR(200) | Détail de l'action sur erreur de validation |
OPERATION_VIOLATION_CODE |
CHAR(3) | Code de violation de l'opération |
OBJECT_LIBRARY |
VARCHAR(10) | Bibliothèque de l'objet |
OBJECT_NAME |
VARCHAR(10) | Nom de l'objet |
OBJECT_TYPE |
VARCHAR(7) | Type de l'objet |
OBJECT_ASP_NAME |
VARCHAR(10) | Nom de l'ASP de l'objet |
OBJECT_ASP_NUMBER |
INTEGER | Numéro de l'ASP de l'objet |
FIELD_NAME |
VARCHAR(10) | Nom de la zone |
TCPIP_PORT |
INTEGER | Port TCP/IP |
API_NAME |
VARCHAR(20) | Nom de l'API |
PTF_NUMBER |
CHAR(7) | Numéro de la PTF |
AAC_NAME |
VARCHAR(30) | Nom de l'entrée de contrôle d'accès à l'application |
USER_PROFILE_NAME |
VARCHAR(10) | Nom du profil utilisateur |
WORKSTATION_NAME |
VARCHAR(10) | Nom du poste de travail |
PROGRAM_INSTRUCTION |
INTEGER | Instruction du programme |
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 |
OFFICE_USER |
VARCHAR(10) | Utilisateur Bureautique |
OFFICE_ON_BEHALF_OF_USER |
VARCHAR(10) | Utilisateur Bureautique représenté |
DLO_NAME |
VARCHAR(12) | Nom de l'objet bibliothèque de documents (DLO) |
FOLDER_PATH |
VARCHAR(63) | Chemin du dossier |