Archiviazione e analisi dei log di audit

L'archiviazione del log di controllo sposta il log di verifica attivo in una directory di archivio mentre il server inizia a scrivere in un nuovo log di verifica attivo. In seguito, è possibile estrarre i dati dal log archiviati in file delimitati e quindi caricare i dati da tali file in tabelle di database Db2® per l'analisi.

La configurazione dell'ubicazione dei log di verifica consente di posizionare i log di verifica su un disco di grandi dimensioni, ad alta velocità, con l'opzione di avere dischi separati per ciascun membro in un ambiente di database a più membri, come un ambiente Db2 pureScale o un ambiente di database partizionato. In un ambiente di database a più membri, il percorso per il log di controllo attivo può essere una directory univoca per ciascun membro. Avere una directory univoca per ogni membro aiuta a evitare il conflitto di file, perché ogni membro sta scrivendo su un disco diverso.

Il percorso predefinito per i log di controllo sui sistemi operativi Windows è instance\security\auditdata e su Linux® e sui sistemi operativi UNIX instance/security/auditdata. Se non si desidera utilizzare l'ubicazione predefinita, è possibile scegliere directory differenti (è possibile creare nuove directory sul proprio sistema da utilizzare come ubicazioni alternative, se non esistono già). Per impostare il percorso per l'ubicazione del log di verifica attivo e per l'ubicazione del log di verifica archiviato, utilizzare il comando db2audit configure con i parametri datapath e archivepath , come mostrato in questo esempio:
db2audit configure datapath /auditlog archivepath /auditarchive 
Le posizioni di memoria del log di verifica impostate utilizzando db2audit si applicano a tutti i database nell'istanza.
Nota: se ci sono più istanze sul server, ogni istanza deve avere percorsi di archiviazione e dati separati.

Il percorso per i log di controllo attivi (datapath) in un ambiente di database a più membri

In un ambiente database a più membri, è necessario utilizzare la stessa ubicazione del log di controllo attivo (impostata dal parametro datapath ) su ciascun membro. Ci sono due modi per ottenere questo risultato:
  1. Utilizzare le espressioni del membro del database quando si specifica il parametro datapath . L'uso delle espressioni membro database consente di includere il numero membro nel percorso dei file di log di controllo e risulta in un percorso differente su ciascun membro database.
  2. Utilizzare un'unità condivisa che sia la stessa su tutti i membri.
È possibile utilizzare le espressioni del membro database in qualsiasi punto all'interno del valore specificato per il parametro datapath . Ad esempio, su un sistema a tre membri, dove il numero del membro del database è 10, il seguente comando:
db2audit configure datapath '/pathForNode $N'
utilizza i seguenti percorsi:
  • /pathForMember10
  • /pathForMember20
  • /pathForMember30
Nota: non è possibile utilizzare le espressioni del membro del database per specificare il percorso del file di log di archivio (parametroarchivepath ).

Archiviazione dei log di controllo attivi

L'amministratore di sistema può utilizzare lo strumento db2audit per archiviare sia i log di controllo dell'istanza che del database e per estrarre i dati di controllo dai log archiviati di entrambi i tipi.

L'amministratore della sicurezza o un utente a cui l'amministratore della sicurezza ha concesso il privilegio EXECUTE sulle routine di verifica può archiviare il log di verifica attivo eseguendo il SYSPROC SYSPROC.AUDIT_ARCHIVE AUDIT_ARCHIVE. Per estrarre i dati dal log e caricarli in file delimitati, è possibile utilizzare SYSPROC.AUDIT_DELIM_EXTRACT .

Questi sono i passi per archiviare ed estrarre i log di controllo utilizzando le routine di controllo:
  1. Pianificare un'applicazione per eseguire archivi regolari del log di controllo attivo utilizzando la procedura memorizzata SYSPROC.AUDIT_ARCHIVE.
  2. Determinare quali file di log archiviati sono di interesse. Utilizzare SYSPROC.AUDIT_LIST_LOGS per elencare tutti i log di controllo archiviati.
  3. Passare il nome file come parametro a SYSPROC.AUDIT_DELIM_EXTRACT per estrarre i dati dal log e caricarli in file delimitati.
  4. Caricare i dati di controllo nelle tabelle del database Db2 per l'analisi.
I file di log archiviati non devono essere caricati immediatamente nelle tabelle per l'analisi, ma possono essere salvati per analisi future. Ad esempio, potrebbe essere necessario esaminarli solo quando si sta svolgendo una revisione contabile aziendale.

Se si verifica un problema durante l'archiviazione, come ad esempio la mancanza di spazio su disco nel percorso di archiviazione o il percorso di archivio non esiste, il processo di archiviazione non riesce e viene generato un file di log provvisorio con estensione file .bk nel percorso dei dati del log di controllo, ad esempio db2audit.instance.log.0.20070508172043640941.bk. Una volta risolto il problema (assegnando spazio su disco sufficiente nel percorso di archiviazione o creando il percorso di archivio), è necessario spostare questo log temporaneo nel percorso di archivio. Quindi, è possibile trattarlo come un log archiviato correttamente.

Archiviazione dei log di controllo attivi in un ambiente di database a più membri

In un ambiente di database a più membri, se il comando di archiviazione viene emesso mentre l'istanza è in esecuzione, il processo di archivio viene eseguito automaticamente su ogni membro. La stessa data/ora viene utilizzata nel nome del file di log archiviato su tutti i membri. Ad esempio, su un sistema a tre membri, dove il numero del membro del database è 10, il seguente comando:
db2audit archive to /auditarchive
crea i file seguenti:
  • /auditarchive/db2audit.log.10.timestamp
  • /auditarchive/db2audit.log.20.timestamp
  • /auditarchive/db2audit.log.30.timestamp
Se il comando archive viene immesso mentre l'istanza non è in esecuzione, è possibile controllare il membro su cui viene eseguito l'archivio utilizzando uno dei metodi riportati di seguito:
  • Utilizzare l'opzione node con il comando db2audit per eseguire l'archivio solo per il membro corrente.
  • Utilizzare il comando db2_all per eseguire l'archivio su tutti i membri.
    Ad esempio:
    db2_all db2audit archive node to /auditarchive
    Imposta la variabile di ambiente DB2NODE per indicare su quali membri viene richiamato il comando.
In alternativa, è possibile immettere un singolo comando di archivio su ciascun membro separatamente. Ad esempio:
  • Membro 10:
    db2audit archive node 10 to /auditarchive
  • Membro 20:
    db2audit archive node 20 to /auditarchive
  • Membro 30:
    db2audit archive node 30 to /auditarchive
Nota: quando l'istanza non è in esecuzione, le date / ore nei nomi del file di log di verifica archiviati non sono uguali su ogni membro.
Nota: si consiglia di condividere il percorso di archiviazione tra tutti i membri, ma non è richiesto.
Nota: la procedura memorizzata AUDIT_DELIM_EXTRACT e la funzione tabella AUDIT_LIST_LOGS possono accedere solo ai file di log archiviati visibili dal membro (coordinatore) corrente.

Esempio di archiviazione di un log ed estrazione di dati in una tabella

Per garantire che i relativi dati di controllo vengano acquisiti e archiviati per un utilizzo futuro, un'azienda deve creare un nuovo log di controllo ogni 6 ore e archiviare il log di controllo corrente in un'unità WORM. La società pianifica la seguente chiamata a SYSPROC.AUDIT_ARCHIVE deve essere emessa ogni sei ore dall'amministratore della sicurezza o da un utente a cui l'amministratore della sicurezza ha concesso il privilegio EXECUTE sulla procedura memorizzata AUDIT_ARCHIVE. Il percorso del log archiviato è il percorso di archiviazione predefinito, /auditarchive, e l'archiviazione viene eseguito su tutti i membri:
CALL SYSPROC.AUDIT_ARCHIVE( '/auditarchive', -2 )

Come parte delle loro procedure di sicurezza, la società ha identificato e definito una serie di comportamenti sospetti o attività non consentite che deve osservare nei dati di controllo. Essi desiderano estrarre tutti i dati da uno o più log di controllo, collocarli in una tabella relazionale e quindi utilizzare le query SQL per ricercare queste attività. La società ha deciso le categorie appropriate per il controllo e ha associato le politiche di controllo necessarie al database o ad altri oggetti del database.

Ad esempio, possono richiamare SYSPROC.AUDIT_DELIM_EXTRACT per estrarre i log di controllo archiviati per tutte le categorie da tutti i membri creati con una data / ora nell'aprile 2006, utilizzando il delimitatore predefinito:
CALL SYSPROC.AUDIT_DELIM_EXTRACT(
     '', '', '/auditarchive',  'db2audit.%.200604%', '' ) 
In un altro esempio, possono richiamare SYSPROC.AUDIT_DELIM_EXTRACT per estrarre i record di controllo archiviati con eventi di esito positivo dalla categoria EXECUTE e gli eventi di esito negativo dalla categoria CHECKING, da un file con la data / ora a cui sono interessati:
CALL SYSPROC.AUDIT_DELIM_EXTRACT( '', '', '/auditarchive', 
    'db2audit.%.20060419034937', 'category 
     execute status success, checking status failure );