Auditar objetos de banco de dados - Amazon Relational Database Service

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.

Imagem do arquivo de log do PostgreSQL depois de configurar a 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
  1. 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=postgrespostgres --password --dbname=labdb
  2. Crie uma função de banco de dados chamada rds_pgaudit usando o comando a seguir.

    labdb=> CREATE ROLE rds_pgaudit; CREATE ROLE labdb=>
  3. 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.

  4. Use o comando AWS CLI a seguir para definir o parâmetro pgaudit.role como rds_pgaudit. Por padrão, esse parâmetro está vazio, e rds_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" \ --region aws-region
  5. 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 \ --region aws-region
  6. Execute o comando a seguir para confirmar que pgaudit.role está definido como rds_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 no GitHub.