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
psqlpara 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=postgrespostgres --password --dbname=labdb-
Crie uma função de banco de dados chamada
rds_pgauditusando o comando a seguir.labdb=>CREATE ROLE rds_pgaudit;CREATE ROLElabdb=> Feche a sessão
psql.labdb=>\qNas 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.rolecomords_pgaudit. Por padrão, esse parâmetro está vazio, erds_pgaudité o único valor permitido.aws rds modify-db-parameter-group \ --db-parameter-group-namecustom-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-identifieryour-instance\ --regionaws-region Execute o comando a seguir para confirmar que
pgaudit.roleestá 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