QAUDJRN registra chi ha fatto cosa e quando. Non è attivo di serie e non è attivabile retroattivamente: gli eventi antecedenti all'attivazione non sono ricostruibili da nessun'altra fonte.
Verificare lo stato
DSPSYSVAL SYSVAL(QAUDCTL)
*NONE significa audit disattivato. *AUDLVL significa attivo, con gli eventi indicati da QAUDLVL e QAUDLVL2.
Attivarlo
CHGSECAUD QAUDCTL(*AUDLVL) QAUDLVL(*DFTSET)
Il comando non si limita a impostare i valori di sistema: se il giornale QAUDJRN non esiste in QSYS, lo crea insieme al primo ricevitore e lo collega. Richiede i diritti speciali *ALLOBJ e *AUDIT.
Se l'audit non è mai stato attivato, le query di questo articolo non girano:
SQL0443 DISPLAY_JOURNAL ... JOURNAL QAUDJRN NOT FOUND IN LIBRARY QSYS
*DFTSET attiva l'insieme predefinito di eventi.
In alternativa i livelli si indicano singolarmente: *AUTFAIL, *CREATE, *DELETE, *SECURITY e gli altri.
La crescita dei ricevitori va pianificata contestualmente. Un audit attivo senza una procedura di distacco e cancellazione dei ricevitori occupa spazio in modo continuo e senza soglia. La procedura è in liberare spazio dai journal receiver, e va messa in calendario nello stesso intervento in cui si attiva l'audit.
Le funzioni di interrogazione
Le registrazioni sono classificate per tipo di voce:
PWTentativi di passwordAFFallimenti di autorizzazioneCPModifiche ai profili utenteCDComandi eseguitiSVModifiche ai valori di sistema
Per ciascun tipo esiste una funzione di tabella dedicata:
SELECT * FROM TABLE(SYSTOOLS.AUDIT_JOURNAL_PW());
La libreria è SYSTOOLS, non QSYS2. È l'unica famiglia rilevante di servizi SQL non presente in QSYS2.
Senza argomenti la finestra è l'ultimo giorno. I parametri sono comuni a tutte le funzioni della famiglia:
Parametro | Predefinito |
|---|---|
| ieri |
| adesso |
| tutti |
| tutti |
| tutti |
|
|
|
|
Tre interrogazioni di base
Tentativi di autenticazione falliti negli ultimi sette giorni:
SELECT ENTRY_TIMESTAMP, USER_NAME, QUALIFIED_JOB_NAME,
REMOTE_ADDRESS, VIOLATION_TYPE_DETAIL
FROM TABLE(SYSTOOLS.AUDIT_JOURNAL_PW(
STARTING_TIMESTAMP => CURRENT TIMESTAMP - 7 DAYS))
ORDER BY ENTRY_TIMESTAMP DESC;
Accessi negati per mancanza di diritti, con l'oggetto richiesto:
SELECT ENTRY_TIMESTAMP, USER_NAME, OBJECT_LIBRARY, OBJECT_NAME, OBJECT_TYPE
FROM TABLE(SYSTOOLS.AUDIT_JOURNAL_AF(
STARTING_TIMESTAMP => CURRENT TIMESTAMP - 7 DAYS))
ORDER BY ENTRY_TIMESTAMP DESC;
Modifiche ai profili utente nell'ultimo mese:
SELECT ENTRY_TIMESTAMP, USER_NAME, USER_PROFILE, ENTRY_TYPE_DETAIL,
PREVIOUS_SPECIAL_AUTHORITIES, SPECIAL_AUTHORITIES
FROM TABLE(SYSTOOLS.AUDIT_JOURNAL_CP(
STARTING_TIMESTAMP => CURRENT TIMESTAMP - 30 DAYS))
ORDER BY ENTRY_TIMESTAMP DESC;
Due colonne qui vanno distinte, e confonderle fa leggere l'elenco al contrario:
USER_NAME è chi ha fatto la modifica, USER_PROFILE è il profilo modificato.
PREVIOUS_SPECIAL_AUTHORITIES e SPECIAL_AUTHORITIES sono il prima e il dopo. È la coppia che risponde alla domanda che si fa davvero durante una revisione: chi ha dato *ALLOBJ a chi, e quando, senza doverla ricostruire confrontando due fotografie di USER_INFO prese in momenti diversi. Il giornale la porta già in una riga.
Il prima e il dopo esistono per ogni diritto speciale, uno per uno. Accanto alle due colonne riassuntive ci sono
ALLOBJ,SECADM,SAVSYS,SPLCTL,SERVICE,AUDIT,
JOBCTL,IOSYSCFGe i corrispondentiPREVIOUS_. Servono quando la domanda riguarda un diritto solo: filtrare suALLOBJè più preciso che cercare una stringa dentroSPECIAL_AUTHORITIES.
AUDIT_JOURNAL_AF è la più informativa delle tre in fase di analisi: i fallimenti di autorizzazione descrivono i percorsi tentati, non solo quelli riusciti.
Le colonne non sono le stesse per tutte. I parametri sì, le colonne no: oltre a un nucleo comune ogni funzione ne espone di proprie, legate al tipo di voce. La descrizione testuale, per dire, su
AUDIT_JOURNAL_PWsi chiamaVIOLATION_TYPE_DETAILe suAUDIT_JOURNAL_CP ENTRY_TYPE_DETAIL. Prima di scrivere una query su una funzione nuova conviene guardare cosa restituisce davvero:SELECT * FROM TABLE(SYSTOOLS.AUDIT_JOURNAL_CD()) WHERE 1 = 0;La condizione sempre falsa non restituisce nessuna riga e lascia le intestazioni.
Esempio: dall'attivazione alla prima lettura
Sequenza completa su un sistema in cui l'audit non è mai stato attivato.
DSPSYSVAL SYSVAL(QAUDCTL)
Se restituisce *NONE, si attiva:
CHGSECAUD QAUDCTL(*AUDLVL) QAUDLVL(*DFTSET)
Da questo momento le registrazioni si accumulano. Per generarne subito una basta un tentativo di collegamento con una password errata; dopo qualche minuto la lettura seguente è insieme la prova che il giornale è stato creato e che sta registrando:
SELECT ENTRY_TIMESTAMP, USER_NAME, REMOTE_ADDRESS, VIOLATION_TYPE_DETAIL
FROM TABLE(SYSTOOLS.AUDIT_JOURNAL_PW())
ORDER BY ENTRY_TIMESTAMP DESC;
Le righe che seguono sono illustrative, servono a mostrare la forma dell'esito e non provengono da un sistema reale.
ENTRY_TIMESTAMP USER_NAME REMOTE_ADDRESS VIOLATION_TYPE_DETAIL
2026-08-26 09:14:52.318000 MROSSI 10.0.7.44 Password non valida
2026-08-26 09:14:31.007000 MROSSI 10.0.7.44 Password non valida
2026-08-26 09:14:08.664000 MROSSI 10.0.7.44 Password non valida
Tre tentativi dello stesso profilo, dalla stessa postazione, a venti secondi l'uno dall'altro:
è una persona che sta sbagliando a digitare. Lo stesso profilo da provenienze diverse, o a intervalli regolari, descrive qualcosa d'altro; ed è la distinzione che REMOTE_ADDRESS rende leggibile e che il conteggio dei tentativi falliti, da solo, non fa.
Per capire cosa è stato tentato dopo un collegamento riuscito, la lettura prosegue su AUDIT_JOURNAL_AF filtrando sullo stesso profilo.
Diritti di lettura
Servono il diritto speciale *AUDIT e i diritti su QAUDJRN e sui suoi ricevitori.
La restrizione ha una motivazione sostanziale oltre che formale: il giornale contiene l'elenco dei profili attivi, le fasce orarie in cui operano e gli oggetti che utilizzano. È un profilo dell'organizzazione, e va protetto con lo stesso criterio dei dati che documenta.
Su quali versioni funziona
CHGSECAUD e QAUDJRN esistono da sempre. Le funzioni SYSTOOLS.AUDIT_JOURNAL_xx sono arrivate con IBM i 7.4 TR4 e 7.3 TR10 — le prime quattro, AF, CA, OW, PW — e sono state estese con 7.4 TR5 e 7.3 TR11, che ha aggiunto fra le altre CD, CO, CP, DO, EV, GR e SV.
Su rilasci precedenti restano DSPJRN su QAUDJRN con OUTFILE e QSYS2.DISPLAY_JOURNAL.
Commenti
Nessun commento ancora. Sii il primo a commentare!
Devi avere un account per commentare. Accedi · Registrati