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. Scritte con QSYS2 rispondono «non trovato».
Senza argomenti la finestra va da mezzanotte di ieri (CURRENT DATE - 1 DAY) a adesso. I parametri sono comuni a tutte le funzioni
della famiglia:
| Parametro | Predefinito |
|---|---|
STARTING_TIMESTAMP |
CURRENT DATE - 1 DAY |
ENDING_TIMESTAMP |
adesso |
USER_NAME |
tutti |
JOB |
tutti |
PROGRAM |
tutti |
STARTING_RECEIVER_NAME |
CURAVLCHN |
ENDING_RECEIVER_NAME |
*CURRENT |
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_CPENTRY_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
IBM chiede *USE sul giornale QAUDJRN e su tutti i ricevitori letti, e *OBJEXIST
sul giornale. Il diritto speciale *AUDIT serve per cambiare le impostazioni dell'audit
(CHGSECAUD vuole *ALLOBJ e *AUDIT), non per leggere.
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
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