Compartilhar via


Auditar o log no Banco de Dados do Azure para PostgreSQL

O log de auditoria de atividades de banco de dados no Banco de Dados do Azure para PostgreSQL está disponível por meio da pgaudit extensão. pgaudit fornece sessão detalhada e/ou log de auditoria de objeto.

Se você quiser logs no nível de recurso do Azure para operações como computação e dimensionamento de armazenamento, consulte o Log de Atividades do Azure.

Considerações sobre uso

Por padrão, pgaudit instruções de logs e suas instruções de log regulares são emitidas usando o recurso de log padrão do Postgres. No Banco de Dados do Azure para PostgreSQL, você pode configurar todos os logs a serem enviados para o repositório de Logs do Azure Monitor para análise posterior no Log Analytics. Se você habilitar o log de recursos do Azure Monitor, seus logs serão enviados automaticamente (no formato JSON) para o Armazenamento do Azure, hubs de eventos e/ou logs do Azure Monitor, dependendo de sua escolha.

Para saber como configurar o log no Armazenamento do Azure, nos Hubs de Eventos ou nos logs do Azure Monitor, visite a seção de logs de recursos do artigo de logs do servidor.

Instalando a extensão

Para poder usar pgaudit a extensão, você precisa permitir a lista de permissões, carregar e criar a extensão no banco de dados no qual você planeja usá-la.

Definir configurações de extensão

pgaudit permite que você configure o log de auditoria de sessão ou objeto. O log de auditoria de sessão emite logs detalhados de instruções executadas. O log de auditoria de objeto tem o escopo de auditoria para relações específicas. Você pode optar por configurar um ou ambos os tipos de registro em log.

Depois de habilitar pgaudit, você pode configurar seus parâmetros para iniciar o registro em log.

Para configurar pgaudit, siga estas instruções:

Usando o portal do Azure:

  1. Selecione sua instância do Banco de Dados do Azure para o PostgreSQL.

  2. No menu de recursos, em Configurações, selecione parâmetros de servidor.

  3. Pesquise os pgaudit parâmetros.

  4. Escolha o parâmetro apropriado para editar. Por exemplo, para iniciar o registro em logINSERT, UPDATE, DELETEe TRUNCATECOPY instruções, definido pgaudit.log como WRITE.

  5. Selecione o botão Salvar para salvar as alterações.

A documentação oficial fornece pgaudit a definição de cada parâmetro. Teste os parâmetros primeiro e confirme se você está recebendo o comportamento esperado.

Por exemplo, a configuração pgaudit.log_client não ON só grava eventos de auditoria no log do servidor, mas também os envia para processos de cliente (como psql). Essa configuração geralmente deve ser deixada desabilitada.

pgaudit.log_level só está habilitado quando pgaudit.log_client estiver ativado.

No Banco de Dados do Azure para PostgreSQL, pgaudit.log não é possível definir usando um - atalho de sinal (menos), conforme descrito na pgaudit documentação. Todas as classes de instrução necessárias (READWRITE, etc.) devem ser especificadas individualmente.

Se você definir o log_statement parâmetro como DDL ou ALL executar um CREATE ROLE/USER ... WITH PASSWORD ... ; comando ou ALTER ROLE/USER ... WITH PASSWORD ... ;, o PostgreSQL criará uma entrada nos logs do PostgreSQL em que a senha é registrada em texto limpo, o que pode causar um risco potencial à segurança. É o comportamento esperado de acordo com o design do mecanismo PostgreSQL.

No entanto, você pode usar a pgaudit extensão e definir pgaudit.log como DDL, que não registra nenhuma CREATE/ALTER ROLE instrução no log do servidor postgres, diferentemente de quando você define log_statement como DDL. Se você precisar registrar essas instruções em log, também poderá definir pgaudit.logcomo ROLE, o que redigi a senha dos logs durante o registro em log CREATE/ALTER ROLE.

Formato de log de auditoria

Cada entrada de auditoria começa com AUDIT:. O formato do restante da entrada é detalhado na documentação de pgaudit.

Como começar

Para começar rapidamente, defina pgaudit.log como ALLe abra os logs do servidor para examinar a saída.

Exibindo logs de auditoria

A maneira como você acessa os logs depende de qual ponto de extremidade você escolher. Consulte o artigo da conta de armazenamento de logs para o Armazenamento do Azure. Consulte o artigo de logs do Azure de fluxo para Hubs de Eventos.

Para logs do Azure Monitor, os logs são enviados para o workspace selecionado. Os logs do Postgres usam o modo de coleção AzureDiagnostics , para que possam ser consultados na tabela AzureDiagnostics. Saiba mais sobre consultas e alertas na visão geral da consulta dos Logs do Azure Monitor .

Você pode usar essa consulta para começar. Você pode configurar alertas com base em consultas.

Pesquisar todas as pgaudit entradas nos logs do Postgres para um servidor específico no último dia

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

Atualização de versão principal com a extensão pgaudit instalada

Durante uma atualização de versão principal, a extensão pgaudit é descartada automaticamente e recriada após a conclusão da atualização. Embora a extensão seja restaurada, as configurações personalizadas definidas ou pgaudit.log outros parâmetros relacionados não são preservadas automaticamente.