Auditar o log no Banco de Dados do Azure para PostgreSQL

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

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

Considerações de uso

Por padrão, pgaudit registra mensagens em log, e suas mensagens de log normais são emitidas usando o mecanismo padrão de registro em log 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 registro em log do Azure Monitor, os logs serão enviados automaticamente (em formato JSON) para Armazenamento do Azure, Hubs de Eventos e/ou logs do Azure Monitor, dependendo da escolha.

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

Instalando a extensão

Para poder usar a extensão pgaudit, você precisa incluí-la na lista de permissões, carregá-la e criá-la no banco de dados em que pretende usá-la.

Definir as configurações da 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ê poderá configurar os 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.

  3. Pesquise os pgauditparâmetros.

  4. Escolha o parâmetro apropriado para editar. Por exemplo, para começar a registrar em log as declarações INSERT, UPDATE, DELETE, TRUNCATE e COPY, defina pgaudit.log como WRITE.

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

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

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

pgaudit.log_level é habilitado somente quando pgaudit.log_client está ativado.

No Banco de Dados do Azure para PostgreSQL, pgaudit.log não pode ser definido usando um atalho de sinal (subtração) conforme descrito na documentação -pgaudit. Todas as classes de instrução necessárias (READ, GRAVAÇÃO etc.) devem ser especificadas individualmente.

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

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

Formato do 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.

Exibir logs de auditoria

A maneira como você acessa os logs depende do ponto de extremidade escolhido. Consulte o artigo sobre a conta de armazenamento de logs do Armazenamento do Azure. Consulte o artigo sobre como transmitir logs do Azure para o Event Hubs.

Para logs de Azure Monitor, os logs são enviados para o espaço de trabalho selecionado. Os logs do Postgres usam o modo de coleta AzureDiagnostics para que possam ser consultados da tabela do AzureDiagnostics. Saiba mais sobre como consultar e alertar na visão geral Consulta de 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 em pgaudit.log ou em outros parâmetros relacionados não são preservadas automaticamente.