Condividi tramite


Registrazione di controllo in Database di Azure per PostgreSQL - Server flessibile

SI APPLICA A: Database di Azure per PostgreSQL - Server flessibile

La registrazione di controllo delle attività del database in Database di Azure per PostgreSQL server flessibile è disponibile tramite l'estensione PostgreSQL Audit: 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 ridimensionamento delle risorse di calcolo e archiviazione, vedere 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. Nel server flessibile Database di Azure per PostgreSQL è possibile configurare tutti i log da inviare all'archivio log di Monitoraggio di Azure per analisi successive in Log Analytics. Se si abilita la registrazione delle risorse di Monitoraggio di Azure, i log vengono inviati automaticamente (in formato JSON) a Archiviazione di Azure, hub eventi e/o 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 del pgaudit

Prima di poter installare l'estensione pgaudit in Database di Azure per PostgreSQL server flessibile, è necessario consentire pgaudit l'uso dell'estensione elenco.

Tramite il portale di Azure:

   1. Selezionare l'istanza del server flessibile Database di Azure per PostgreSQL.    1. Sulla barra laterale selezionare Parametri server.    1. Cercare il azure.extensions parametro .    1. Selezionare pgaudit come estensione da consentire.

Screenshot dell'elenco elementi consentiti in Database di Azure per PostgreSQL.

Uso dell'interfaccia della riga di comando di Azure:

È possibile consentire le estensioni tramite il set di parametri dell'interfaccia della riga di comando comando.

 az postgres flexible-server parameter set --resource-group <your resource group>  --server-name <your server name> --subscription <your subscription id> --name azure.extensions --value `pgaudit`

Per installare pgaudit, è necessario includerlo nelle librerie di precaricamento condiviso del server. Per rendere effettiva una modifica al parametro shared_preload_libraries di Postgres, è necessario riavviare il server. È possibile modificare i parametri usando il portale di Azure, l'interfaccia della riga di comando di Azure o l'API REST.

Tramite il portale di Azure:

  1. Selezionare l'istanza del server flessibile di Database di Azure per PostgreSQL.

  2. Nella barra laterale selezionare Parametri del server.

  3. Cercare il shared_preload_libraries parametro.

  4. Selezionare pgaudit.

    Screenshot che mostra Database di Azure per PostgreSQL server flessibile che abilita shared_preload_libraries per 'pgaudit'.

  5. È possibile verificare che pgauditsia caricato in shared_preload_libraries eseguendo la query seguente in psql:

    show shared_preload_libraries;
    

    Verrà visualizzato pgauditnel risultato della query che restituirà shared_preload_libraries.

  6. Connettersi al server usando un client (ad esempio psql) e abilitare l'estensione pgaudit .

    CREATE EXTENSION `pgaudit`;
    

Suggerimento

Se viene visualizzato un errore, verificare che il server sia stato riavviato dopo il salvataggio di shared_preload_libraries.

Impostazioni dipgaudit

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 del controllo oggetti ha come ambito il controllo 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 le istruzioni seguenti.
Tramite il portale di Azure:

  1. Selezionare il database di Azure per il server PostgreSQL.

  2. Nella barra laterale selezionare Parametri del server.

  3. Cercare i parametri pgaudit.

  4. Selezionare il parametro di impostazioni appropriato da modificare. Ad esempio, per avviare la registrazione impostare pgaudit.log su WRITE

  5. Selezionare il pulsante Salva per salvare le modifiche

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

L'impostazione su pgaudit.log_client ON reindirizzerà i log a un processo client (ad esempio psql) invece di essere scritto nel file. Questa impostazione viene in genere disabilitata.

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

In Database di Azure per PostgreSQL server pgaudit.log flessibile non può essere impostato usando 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 parametro log_statement su DDL o ALL ed eseguire 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, che potrebbe causare un potenziale rischio per la sicurezza. Si tratta del comportamento previsto per la progettazione del motore PostgreSQL.

È tuttavia possibile usare l'estensione pgaudit e impostare il pgaudit.log=DDL parametro nella pagina dei parametri del server, che non registra alcuna CREATE/ALTER ROLE istruzione in Postgres Log, a differenza dell'impostazione Postgres log_statement=DDL . Se è necessario registrare queste istruzioni, è anche possibile aggiungere pgaudit.log ='ROLE' , che redigirà la password dai log durante la registrazione CREATE/ALTER ROLEdi .

Formato del log di controllo

Ogni voce di controllo è indicata da AUDIT: vicini l'inizio della riga di log. Il formato del resto della voce è dettagliato nella pgaudit documentazione.

Introduzione

Per iniziare rapidamente, impostare su pgaudit.log WRITEe 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 log dell'account di archiviazione per Archiviazione di Azure. Vedere l'articolo Trasmettere i 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. I campi nella tabella sono descritti di seguito. 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 pgaudit voci nei log di Postgres per un determinato server nell'ultimo giorno

AzureDiagnostics
| where Resource =~ "myservername"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d)
| where Message contains "AUDIT:"