PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Registro de auditoria para PostgreSQL

A auditoria é um requisito para muitas regulamentações ou padrões de segurança, como PCI - Payment Card Industry, e até mesmo uma boa maneira de manter seus dados o mais seguros possível sabendo o que está acontecendo em seus bancos de dados.

Em um banco de dados PostgreSQL, o registro básico de instruções pode ser fornecido pelo recurso de registro padrão com log_statement =all. Isso é aceitável para monitoramento e outros usos básicos, mas não fornece o nível de detalhes geralmente necessário para auditoria.

Neste blog, veremos o que é a extensão pgAudit e como instalá-la e usá-la em seu banco de dados PostgreSQL usando o ClusterControl.

O que é pgAudit?

A Extensão de Auditoria do PostgreSQL (pgAudit) fornece registro detalhado de auditoria de sessão e objeto por meio do recurso de registro padrão do PostgreSQL.

Não é suficiente ter uma lista de todas as operações realizadas no banco de dados. Também deve ser possível encontrar declarações particulares que sejam de interesse de um auditor. O recurso de registro padrão mostra o que o usuário solicitou, enquanto o pgAudit se concentra nos detalhes do que aconteceu enquanto o banco de dados atendeu à solicitação.

Ativando pgAudit com ClusterControl

Para este exemplo, vamos supor que você tenha o ClusterControl instalado e ele esteja gerenciando seu banco de dados PostgreSQL. Caso contrário, você pode seguir esta postagem do blog para colocá-lo em funcionamento de maneira fácil, usando o ClusterControl.

IU de controle de cluster

A partir da versão ClusterControl 1.8.2, lançada recentemente, você pode habilitar facilmente o plug-in pgAudit na interface do usuário do ClusterControl. Para habilitá-lo, vá para ClusterControl -> Selecione seu PostgreSQL Cluster -> Guia Segurança -> Log de Auditoria -> Habilitar.

Você precisará especificar os eventos que deseja auditar em seu PostgreSQL cacho. O PgAudit será habilitado em todos os nós e exigirá uma reinicialização do serviço de banco de dados para instalá-lo.


Os eventos podem ser:

  • ROLE:Declarações relacionadas a funções e privilégios:GRANT, REVOKE, CREATE/ALTER/DROP ROLE.

  • DDL:Todos os DDL que não estão incluídos na classe ROLE.

  • MISC:Comandos diversos, ex. DESCARTAR, BUSCAR, CHECKPOINT, VÁCUO, SET.

  • LER:SELECT e COPY quando a fonte for uma relação ou uma consulta.

  • WRITE:INSERT, UPDATE, DELETE, TRUNCATE e COPY quando o destino for uma relação.

  • FUNÇÃO:Chamadas de funções e blocos DO.

  • TODOS:Inclua todos os itens acima.

Você pode monitorar a instalação do pgAudit na seção ClusterControl Activity.


Quando terminar, você poderá verificar o log do pgAudit na mesma interface do usuário do ClusterControl. Para isso, vá para ClusterControl -> Selecione seu PostgreSQL Cluster -> Aba Logs -> System Logs.


Aqui, você encontrará todas as informações necessárias para auditar seu banco de dados PostgreSQL.

ClusterControl CLI

Em vez de habilitar o pgAudit da interface do usuário do ClusterControl, outra opção é usar a CLI do ClusterControl para fazer o trabalho. Para isso, você pode executar o seguinte comando do seu servidor ClusterControl:

$ s9s cluster --setup-audit-logging --cluster-id=ID

Onde ID é o ID do cluster PostgreSQL.

Enquanto estiver em execução, você pode monitorar o status verificando o trabalho ClusterControl. Primeiro, você precisará do ID do trabalho, que pode ser obtido na lista de trabalhos:

$ s9s job --list
1600  48 RUNNING  test_dba                     admins 18:49:36            90% Setup Audit Logging

Agora, verifique os detalhes do trabalho:

$ s9s job --log --job-id=1600
Using SSH credentials from cluster.
Cluster ID is 48.
The username is 'root'.]
10.10.10.139:5432: Configuring audit logging.
10.10.10.139:5432: Installing 'pgaudit15_13'.
10.10.10.139: Installing pgaudit15_13.
10.10.10.139:5432: Setting pgaudit.log to ROLE,DDL,MISC.
Writing file '10.10.10.139:/var/lib/pgsql/13/data/postgresql.conf'.
10.10.10.139:5432: Restarting PostgreSQL node.
10.10.10.139: waiting for server to shut down.... done
server stopped
waiting for server to start....2021-03-24 18:49:43.468 UTC [16098] LOG:  pgaudit extension initialized
2021-03-24 18:49:43.505 UTC [16098] LOG:  redirecting log output to logging collector process
2021-03-24 18:49:43.505 UTC [16098] HINT:  Future log output will appear in directory "log".
 done
server started
10.10.10.139:5432: Waiting for node to be accessible.
10.10.10.139:5432: pgaudit 1.5.0 is enabled.

Esta ação exigirá uma reinicialização do serviço de banco de dados que será executada pelo ClusterControl na mesma tarefa. Após reiniciá-lo, a extensão pgAudit está habilitada e pronta para uso:

postgres=# SELECT * FROM pg_available_extensions WHERE name LIKE '%audit%';
  name   | default_version | installed_version |             comment
---------+-----------------+-------------------+---------------------------------
 pgaudit | 1.5             | 1.5               | provides auditing functionality
(1 row)

Conclusão

A auditoria é necessária para muitas regulamentações de segurança. Ele é usado para saber o que aconteceu com seu banco de dados, quando aconteceu e quem é o responsável por isso.

Neste blog, falamos sobre a extensão pgAudit PostgreSQL como uma boa maneira de auditar seus bancos de dados PostgreSQL. Também mostramos como implementá-lo rapidamente com o ClusterControl a partir da interface do usuário e usando a CLI do ClusterControl.

Tenha em mente que, dependendo da configuração, o pgAudit pode gerar um enorme volume de dados. Portanto, você deve ter cuidado para determinar o que precisa auditar e por quanto tempo.