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 una sessione dettagliata e/o la registrazione di controllo degli oggetti.

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

Considerazioni sull'utilizzo

Per impostazione predefinita, pgaudit le istruzioni di log e le normali istruzioni di log vengono generate usando la funzionalità di registrazione standard di Postgres. 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, a Hub eventi e/o ai log di Monitoraggio di Azure, a seconda della scelta.

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

Installazione dell'estensione

Per poter usare l'estensione pgaudit , è necessario 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 di sessione o oggetto. La registrazione del controllo sessione genera log dettagliati delle istruzioni eseguite. La registrazione di controllo degli oggetti ha come ambito 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, è possibile seguire queste istruzioni:

Usare il portale di Azure:

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

  2. Dal menu della risorsa, in Impostazioni, selezionare Parametri del server.

  3. Cercare i pgaudit parametri.

  4. Selezionare il parametro appropriato da modificare. Ad esempio, per avviare la registrazione INSERTdi istruzioni , DELETEUPDATE, TRUNCATE, e COPY , impostare su pgaudit.logWRITE.

  5. Selezionare il pulsante Salva per salvare le modifiche.

La documentazione ufficiale di pgaudit fornisce la definizione di ogni parametro. Testare prima i parametri e verificare di ottenere il comportamento previsto.

Ad esempio, l'impostazione pgaudit.log_client su ON non solo scrive gli eventi di controllo nel log del server, ma li invia anche ai processi client (ad esempio psql). Questa impostazione deve essere in genere disabilitata.

pgaudit.log_level è abilitato solo quando pgaudit.log_client è attivato.

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

Se si imposta il log_statement parametro su DDL o ALL ed si esegue un CREATE ROLE/USER ... WITH PASSWORD ... ; comando 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 usare l'estensione pgaudit e impostare su pgaudit.logDDL, che non registra alcuna CREATE/ALTER ROLE istruzione nel log del server Postgres, a differenza di quando si imposta su log_statementDDL. Se è necessario registrare queste istruzioni, è anche possibile impostare su pgaudit.logROLE, che redatta la password dai log durante la registrazione CREATE/ALTER ROLEdi .

Formato del log di controllo

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

Come iniziare

Per iniziare rapidamente, impostare su pgaudit.logALLe 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 Trasmettere i log di Azure per Hub eventi.

Per i 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 delle query sui log di Monitoraggio di Azure .

È possibile usare questa query per iniziare. È 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, 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 mantenute automaticamente.