Auditar objetos de banco de dados
Com a pgAudit configurada em sua instância e banco de dados do RDS para PostgreSQL e configurada para seus requisitos, informações mais detalhadas são capturadas no log do PostgreSQL. Por exemplo, enquanto a configuração de registro em padrão do PostgreSQL identifica a data e a hora em que uma alteração foi feita em uma tabela do banco de dados, com a extensão pgAudit, a entrada do log pode incluir o esquema, o usuário que fez a alteração e outros detalhes, dependendo de como os parâmetros da extensão estão configurados. Você pode configurar a auditoria para monitorar as alterações das maneiras a seguir.
Para cada sessão, por usuário. Para o nível da sessão, você pode capturar o texto do comando totalmente qualificado.
Para cada objeto, por usuário e por banco de dados.
O recurso de auditoria de objetos é ativado quando você cria a função rds_pgaudit
no sistema e depois a adiciona ao parâmetro pgaudit.role
no grupo de parâmetros personalizado. Por padrão, o parâmetro pgaudit.role
não está definido e o único valor permitido é rds_pgaudit
. As etapas a seguir pressupõem que a pgaudit
tenha sido inicializada e que você tenha criado a extensão pgaudit
seguindo o procedimento em Configurar a extensão pgAudit.
Conforme mostrado neste exemplo, a linha “LOG: AUDIT: SESSION” fornece informações sobre a tabela e o respectivo esquema, entre outros detalhes.
Como configurar a auditoria de objetos
Use
psql
para se conectar à instância de banco de dados do RDS para PostgreSQL.psql --host=
your-instance-name
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres
postgres --password --dbname=labdb
-
Crie uma função de banco de dados chamada
rds_pgaudit
usando o comando a seguir.labdb=>
CREATE ROLE rds_pgaudit;
CREATE ROLE
labdb=>
Feche a sessão
psql
.labdb=>
\q
Nas próximas etapas, use a AWS CLI para modificar os parâmetros de log de auditoria no grupo de parâmetros personalizado.
-
Use o comando AWS CLI a seguir para definir o parâmetro
pgaudit.role
comords_pgaudit
. Por padrão, esse parâmetro está vazio, erds_pgaudit
é o único valor permitido.aws rds modify-db-parameter-group \ --db-parameter-group-name
custom-param-group-name
\ --parameters "ParameterName=pgaudit.role,ParameterValue=rds_pgaudit,ApplyMethod=pending-reboot" \ --regionaws-region
-
Use o comando AWS CLI a seguir para reinicializar a instância de banco de dados do RDS para PostgreSQL para que as alterações nos parâmetros tenham efeito.
aws rds reboot-db-instance \ --db-instance-identifier
your-instance
\ --regionaws-region
Execute o comando a seguir para confirmar que
pgaudit.role
está definido comords_pgaudit
.SHOW pgaudit.role;
pgaudit.role ------------------ rds_pgaudit
Para testar o registro em log da extensão pgAudit, execute vários comandos de exemplo semelhantes ao que você deseja auditar. Por exemplo, você pode executar os seguintes comandos.
CREATE TABLE t1 (id int); GRANT SELECT ON t1 TO rds_pgaudit; SELECT * FROM t1;
id ---- (0 rows)
Os logs do banco de dados devem conter uma entrada semelhante à seguinte.
...
2017-06-12 19:09:49 UTC:...:rds_test@postgres:[11701]:LOG: AUDIT:
OBJECT,1,1,READ,SELECT,TABLE,public.t1,select * from t1;
...
Para obter informações sobre como visualizar os logs, consulte Monitorar arquivos de log do Amazon RDS.
Para saber mais sobre a extensão pgAudit, consulte pgAudit