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.