Registrazione di controllo nel server flessibile di Database di Azure per PostgreSQL

È possibile controllare le attività del database in Database di Azure per PostgreSQL usando l'estensione pgaudit . pgaudit fornisce la registrazione dettagliata di sessione e controllo degli 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, pgaudit registra le istruzioni e la funzionalità standard di logging di Postgres emette i normali messaggi di log. In Database di Azure per PostgreSQL è possibile configurare tutti i log da inviare all'archivio 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) ad Archiviazione di Azure, Event Hubs e ai log di Monitoraggio di Azure, in base alla scelta effettuata.

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 usare l'estensione pgaudit , consentire, caricare 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, configurare i relativi parametri per avviare la registrazione.

Per configurare pgaudit, seguire queste istruzioni:

Usare il portale di Azure:

  1. Seleziona l'istanza di Database di Azure per PostgreSQL - Server flessibile.

  2. Nel menu delle risorse, nella sezione Impostazioni , selezionare Parametri.

  3. Cercare i parametri pgaudit.

  4. Selezionare il parametro appropriato da modificare. Ad esempio, per iniziare a registrare le istruzioni INSERT, UPDATE, DELETE, TRUNCATE e COPY, imposta pgaudit.log su WRITE.

  5. Seleziona 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). In genere, lasciare disabilitata questa impostazione.

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

In Database di Azure per PostgreSQL - Server flessibile, non è possibile configurare pgaudit.log utilizzando la scorciatoia con il segno - (meno), come descritto nella documentazione pgaudit. Specificare singolarmente tutte le classi di istruzioni obbligatorie (READ, WRITEe così via).

Se si imposta il log_statement parametro su DDL o e si esegue un ALL comando o CREATE ROLE/USER ... WITH PASSWORD ... ;ALTER ROLE/USER ... WITH PASSWORD ... ; , PostgreSQL crea una voce nei log di PostgreSQL in cui la password viene registrata in testo non crittografato, causando un potenziale rischio per la sicurezza. Questo comportamento è previsto per la 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 nei log, è anche possibile impostare pgaudit.log su ROLE, che oscura la password nei log durante la registrazione di 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 metodo per accedere ai log dipende dall'endpoint scelto. Per Archiviazione di Azure, vedere l'articolo sull'account di archiviazione dei log. Per Hub eventi, vedere l'articolo Trasmettere i log di Azure.

Per Monitoraggio di Azure Log, inviare i log all'area di lavoro selezionata. I log di Postgres usano la modalità di raccolta AzureDiagnostics , in modo da poterli eseguire query dalla tabella AzureDiagnostics. Per altre informazioni sull'esecuzione di query e avvisi, vedere la panoramica delle query sui log di Monitoraggio di Azure.

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

Cercare tutte le pgaudit voci 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, il processo elimina automaticamente l'estensione pgaudit e quindi la ricrea al termine dell'aggiornamento. Mentre il processo ripristina l'estensione, non mantiene automaticamente le configurazioni personalizzate impostate in pgaudit.log o altri parametri correlati.