Compartilhar via


Log de auditoria no Banco de Dados do Azure para PostgreSQL – Servidor flexível

APLICA-SE A: Banco de Dados do Azure para PostgreSQL – Servidor Flexível

O log de auditoria das atividades de banco de dados no servidor flexível do Banco de Dados do Azure para PostgreSQL está disponível por meio da extensão de auditoria do PostgreSQL: pgAudit. O pgAudit fornece o log de auditoria detalhado de sessões e/ou objetos.

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 sobre o uso

Por padrão, as instruções de log pgAudit são emitidas junto com suas instruções de log regulares usando o recurso de log padrão do Postgres. No Banco de Dados do Azure para servidor flexível PostgreSQL, você pode configurar todos os logs a serem enviados para o armazenamento de Log do Azure Monitor para análises posteriores no Log Analytics. Se você habilitar Azure Monitor log de recursos, seus logs serão enviados automaticamente (no formato JSON) para o Armazenamento do Microsoft Azure, Hubs de Eventos e/ou logs de Azure Monitor, dependendo de sua 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.

Como instalar o pgAudit

Antes de instalar a extensão pgAudit no Banco de Dados do Azure para o servidor flexível PostgreSQL, você precisa permitir a extensão pgAudit para uso.

Usando o portal do Azure:

  1. Selecione sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.
  2. Na barra lateral, selecione Parâmetros do Servidor.
  3. Pesquise o parâmetro azure.extensions.
  4. Selecione pgAudit como a extensão que você deseja adicionar à lista de permissões. Screenshot showing Azure Database for PostgreSQL - allow-listing extensions for installation.

Usando a CLI do Azure:

Você pode colocar extensões na lista de permitidos por meio do comando parameter set da CLI.

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

Para instalar o pgAudit, você precisa incluí-lo no shared preload libraries do servidor. Uma alteração no parâmetro shared_preload_libraries do Postgres exige uma reinicialização do servidor para que entre em vigor. Você pode alterar os parâmetros usando o portal do Azure, o CLI do Azure ou a API REST.

Usando o portal do Azure:

  1. Selecione sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.

  2. Na barra lateral, selecione Parâmetros do Servidor.

  3. Pesquise o parâmetro shared_preload_libraries.

  4. Selecione pgaudit. Screenshot showing Azure Database for PostgreSQL flexible server enabling shared_preload_libraries for pgaudit.

  5. Você pode verificar se pgaudit está carregado em shared_preload_libraries executando a seguinte consulta no psql:

    show shared_preload_libraries;
    

    Você deve ver pgaudit no resultado da consulta que retornará shared_preload_libraries.

  6. Conecte-se ao servidor usando um cliente (como psql) e habilite a extensão pgAudit.

    CREATE EXTENSION pgaudit;
    

Dica

Se você vir um erro, confirme que você reiniciou o servidor após salvar shared_preload_libraries.

Configurações do pgAudit

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.

Quando tiver ativado o pgAudit, você poderá configurar os parâmetros dele para iniciar o registro em log. Para configurar o pgAudit, você pode seguir as instruções abaixo. Usando o portal do Azure:

  1. Selecione seu servidor de Banco de Dados do Azure para PostgreSQL.
  2. Na barra lateral, selecione Parâmetros do Servidor.
  3. Pesquise os pgauditparâmetros.
  4. Escolha o parâmetro de configurações apropriado a ser editado. Por exemplo, para iniciar o registro em log, defina pgaudit.log como WRITEScreenshot showing Azure Database for PostgreSQL - configuring logging with pgaudit
  5. Clique em Salvar para salvar as alterações

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

Observação

Definir pgaudit.log_client como ATIVADO redirecionará os logs para um processo de cliente, como psql, em vez de serem gravados no arquivo. Essa configuração deve ser deixada desabilitada.

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

Observação

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

Observação

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 na qual a senha é registrada em texto não escrito, o que poderá causar um possível risco de segurança. Esse é o comportamento esperado de acordo com o design do mecanismo PostgreSQL. No entanto, você pode usar a extensão PGAudit e definir o parâmetro pgaudit.log='DDL' na página de parâmetros do servidor, que não registra nenhuma instrução CREATE/ALTER ROLE no Log do Postgres, ao contrário da configuração log_statement='DDL' do Postgres. Se você precisar registrar essas instruções em log, poderá adicionar pgaudit.log ='ROLE' além disso, o que, durante o registro em log de 'CREATE/ALTER ROLE', editará a senha dos logs.

Formato do log de auditoria

Cada entrada de auditoria é indicado AUDIT: próximo ao início da linha de log. O formato do restante da entrada é detalhado na documentação do pgAudit.

Introdução

Para começar rapidamente, defina pgaudit.log como WRITE e abra seus logs de servidor para examinar a saída.

Exibir logs de auditoria

A maneira como você acessa os logs depende do ponto de extremidade escolhido. Para o Armazenamento do Microsoft Azure, veja o artigo sobre conta de armazenamento de logs. Para os hubs de eventos, consulte o artigo sobre fluxos de logs do Azure.

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 a partir da tabela AzureDiagnostics. Os campos na tabela são descritos abaixo. 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 em todas as entradas do pgAudit nos logs do Postgres por um servidor específico no último dia

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

Próximas etapas