Registo de auditoria na Base de Dados do Azure para PostgreSQL

O registo de auditoria de atividades da base de dados no Azure Database para PostgreSQL está disponível através da extensão pgaudit. pgaudit fornece registo detalhado de auditoria de sessões e/ou de objetos.

Se quiseres Logs ao nível de Recursos do Azure para operações como computação e dimensionamento de armazenamento, consulta o Log de Atividades do Azure.

Considerações sobre o uso

Por predefinição, pgaudit regista mensagens e as suas mensagens de registo regulares são emitidas através do mecanismo de registo 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 ativar o registo de recursos do Azure Monitor, os seus registos são enviados automaticamente (em formato JSON) para o Armazenamento do Azure, os Hubs de Eventos e/ou os registos do Azure Monitor, consoante a sua escolha.

Para saber de que forma configurar o registo para o Armazenamento do Azure, o Azure Event Hubs ou os registos do Azure Monitor, visite a secção de registos de recursos do artigo Registos do servidor.

Instalando a extensão

Para poder utilizar a extensão pgaudit, é necessário adicioná-la à lista de permissões, carregá-la e criá-la na base de dados em que tenciona utilizá-la.

Definir configurações de extensão

pgaudit permite configurar o registo de auditoria da sessão ou do objeto. O registo de auditoria de sessão emite logs detalhados das instruções executadas. O log de auditoria de objetos é específico para relações específicas. Você pode optar por configurar um ou ambos os tipos de registro.

Depois de o ativar pgaudit, pode configurar os respetivos parâmetros para iniciar o registo.

Para configurar pgaudit, pode seguir 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 Definições, selecione Parâmetros.

  3. Pesquise os pgaudit parâmetros.

  4. Escolha o parâmetro apropriado para editar. Por exemplo, para começar a registar mensagens 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 do pgaudit fornece a definição de cada parâmetro. Teste os parâmetros primeiro e confirme se você está obtendo o comportamento esperado.

Por exemplo, definir pgaudit.log_client como ON não só escreve eventos de auditoria no registo do servidor, como também os envia para processos cliente (como o psql). Esta definição deve, normalmente, ser deixada desativada.

pgaudit.log_level é ativado apenas quando pgaudit.log_client está ativado.

Na Base de Dados do Azure para PostgreSQL, pgaudit.log não pode ser definido utilizando o atalho de sinal - (menos), tal como descrito na documentação pgaudit. Todas as classes de instruções necessárias (READ, WRITE, etc.) devem ser especificadas individualmente.

Se 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 registos do PostgreSQL na qual a palavra-passe é registada em texto simples, o que pode representar um potencial risco de 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, ao contrário do que acontece quando você define log_statement como DDL. Se precisar de registar estas instruções, também pode definir pgaudit.log como ROLE, o que remove a palavra-passe dos registos ao registar CREATE/ALTER ROLE.

Formato do log de auditoria

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

Como Começar

Para iniciar rapidamente, defina pgaudit.log como ALL, e abra os logs do servidor para revisar a saída.

Ver registos de auditoria

A forma como acedes aos logs depende do endpoint que escolhes. Consulte o artigo sobre a conta de armazenamento de registos do Armazenamento do Azure. Consulte o artigo transmitir em fluxo os registos do Azure para os Hubs de Eventos.

Para os Logs do 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. Saiba mais sobre consultas e alertas na visão geral de consultas de Logs do Azure Monitor.

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

Procure todas as pgaudit entradas nos logs do Postgres para um determinado servidor no último dia

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

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

Durante uma atualização de versão principal, a extensão pgaudit é automaticamente descartada e, em seguida, recriada após a conclusão da atualização. Ao restaurar a extensão, quaisquer configurações personalizadas definidas em pgaudit.log ou noutros parâmetros relacionados não são preservadas automaticamente.