Condividi tramite


Registrazione di controllo in Database di Azure per PostgreSQL

La registrazione di controllo delle attività del database in Database di Azure per PostgreSQL è disponibile tramite l'estensione pgaudit . pgaudit fornisce la registrazione di controllo dettagliata per sessioni e/o oggetti.

Per i log a livello di risorsa di Azure per operazioni come il ridimensionamento delle risorse di calcolo e archiviazione, vedere Log attività di Azure.

Considerazioni sull'utilizzo

Per impostazione predefinita, le istruzioni per i log di pgaudit vengono emesse insieme alle istruzioni di log regolari usando la funzionalità di registrazione standard di Postgres. In Database di Azure per PostgreSQL è possibile configurare tutti i log da inviare all'archivio dei log di Monitoraggio di Azure per un'analisi successiva in Log Analytics. Se si abilita la registrazione delle risorse di Monitoraggio di Azure, i log vengono inviati automaticamente (in formato JSON) ai log di Archiviazione di Azure, di Hub eventi e/o di Monitoraggio di Azure, in base alla scelta.

Per informazioni su come configurare la registrazione nei log di Archiviazione di Azure, Hub eventi o Monitoraggio di Azure, vedere la sezione relativa ai log delle risorse dell'articolo sui log del server.

Installazione dell'estensione

Per utilizzare l'estensione pgaudit, è necessario inserirla nell'elenco degli elementi consentiti, caricarla e creare l'estensione nel database in cui si prevede di usarla.

Configurare le impostazioni dell'estensione

pgaudit consente di configurare la registrazione di controllo della sessione o dell'oggetto. La registrazione di controllo della sessione emette log dettagliati delle istruzioni eseguite. La registrazione di controllo degli oggetti ha come ambito il controllo delle relazioni specifiche. È possibile scegliere di configurare uno o entrambi i tipi di registrazione.

Dopo aver abilitato pgaudit, è possibile configurarne i parametri per avviare la registrazione.

Per configurare pgaudit, seguire queste istruzioni:

Usare il portale di Azure:

  1. Selezionare l'istanza di Database di Azure per PostgreSQL.

  2. Nel menu delle risorse, in Impostazioni selezionare Parametri del server.

  3. Cercare i parametri pgaudit.

  4. Selezionare il parametro appropriato da modificare. Ad esempio, per iniziare la registrazione delle istruzioni INSERT, UPDATE, DELETE, TRUNCATE e COPY, impostare pgaudit.log su WRITE.

  5. Selezionare Salva per salvare le modifiche.

Nella documentazione ufficiale di pgaudit viene fornita la definizione di ogni parametro. Testare prima i parametri e verificare di ottenere il comportamento previsto.

Ad esempio, l'impostazione di pgaudit.log_client su ON determina non solo la scrittura degli eventi di controllo nel log del server, ma anche l'invio degli stessi ai processi client (ad esempio psql). Questa impostazione viene in genere disabilitata.

pgaudit.log_level viene abilitato solo quando pgaudit.log_client è attivo.

In Database di Azure per PostgreSQL non è possibile impostare pgaudit.log usando un collegamento con segno meno -, come descritto nella documentazione relativa a pgaudit. Tutte le classi di istruzioni obbligatorie (READ, WRITE e così via) devono essere specificate singolarmente.

Se si imposta il parametro log_statement su DDL o su ALL e si esegue un comando CREATE ROLE/USER ... WITH PASSWORD ... ; o ALTER ROLE/USER ... WITH PASSWORD ... ;, PostgreSQL crea una voce nei log postgreSQL in cui la password viene registrata in testo non crittografato, causando un potenziale rischio per la sicurezza. Si tratta del comportamento previsto in base alla progettazione del motore PostgreSQL.

È tuttavia possibile utilizzare l'estensione pgaudit e impostare pgaudit.log su DDL, che non registra alcuna istruzione CREATE/ALTER ROLE nel log del server Postgres, a differenza di quando si imposta log_statement su DDL. Se è necessario registrare queste istruzioni, è anche possibile impostare pgaudit.log su ROLE, che registra la password dai logo durante la registrazione CREATE/ALTER ROLE.

Formato del log di controllo

Ogni voce di controllo inizia con AUDIT:. Il formato del resto della voce è descritto in dettaglio nella documentazione di pgaudit.

Come iniziare

Per iniziare rapidamente, impostare pgaudit.log su ALL e aprire i log del server per esaminare l'output.

Visualizzazione dei log di controllo

Il modo in cui si accede ai log dipende dall'endpoint scelto. Vedere l'articolo sull'account di archiviazione dei log per Archiviazione di Azure. Vedere l'articolo per trasmettere log di Azure per Hub eventi.

Per Log di Monitoraggio di Azure, i log vengono inviati all'area di lavoro selezionata. I log di Postgres usano la modalità di raccolta AzureDiagnostics, in modo che possano essere sottoposte a query dalla tabella AzureDiagnostics. Altre informazioni sull'esecuzione di query e avvisi sono disponibili nella panoramica Query sui log di Monitoraggio di Azure.

Per iniziare, è possibile usare questa query. È possibile configurare gli avvisi in base alle query.

Cercare tutte le voci pgaudit nei log di Postgres per un determinato server nell'ultimo giorno

AzureDiagnostics
| where Resource =~ "<flexible-server-name>"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d)
| where Message contains "AUDIT:"

Aggiornamento della versione principale con l'estensione pgaudit installata

Durante un aggiornamento della versione principale, l'estensione pgaudit viene eliminata automaticamente e quindi ricreata al termine dell'aggiornamento. Durante il ripristino dell'estensione, tutte le configurazioni personalizzate impostate in pgaudit.log o altri parametri correlati non vengono mantenuti automaticamente.