O que é uma tabela de auditoria?

24

O que são tabelas de auditoria?

Como eles são úteis?

Me deparei com eles lendo este artigo .

Matt Fenwick
fonte
2
São apenas mesas regulares. É como você os usa e o que você coloca neles que os torna "tabelas de auditoria".
Nick Chammas
1
Eles não são os mesmos. Você possui uma tabela de auditoria separada da tabela que está sendo auditada. Então você teria duas mesas NormalTablee AuditNormalTable.
22612 Thomas Thomas Stringer
1
Matt, o tubarão tem sua resposta nisso. @ Shark, eu estava enfatizando que uma tabela de auditoria não é uma construção de banco de dados especial (desde que tive a impressão de que o OP pode acreditar nisso). É apenas mais uma tabela que o desenvolvedor cria e usa para rastrear determinadas informações.
Nick Chammas
@NickChammas Oh, absolutamente, eu entendi completamente o que você quis dizer. Mas pelo comentário do OP, eu não acho que ele fez.
Thomas Stringer
Se você considerar o significado de auditoria do dicionário, provavelmente chegará à conclusão de que "tabela de auditoria" é um nome impróprio. Uma auditoria deve ser externa ao banco de dados: se é codificada pelo próprio negócio de aplicativos, como pode ser uma auditoria?
onedaywhen

Respostas:

22

Tabelas de auditoria são usadas para rastrear transações em uma ou mais tabelas específicas. Eles permitem que você veja um "log" em andamento (por falta de uma palavra melhor). Por exemplo, digamos que você tenha uma tabela como esta:

create table SensitiveInformation
(
    SensitiveNumber int not null,
    SensitiveData varchar(100) not null
)
go

Pode haver usuários e / ou aplicativos que tenham acesso para inserir, atualizar e excluir dessa tabela. Porém, devido à natureza sensível desses dados, convém ter uma maneira rápida e fácil de rastrear quem está fazendo o quê nessa tabela.

Então você tem uma tabela de auditoria para acompanhar o que está sendo feito nessa tabela. Normalmente, isso inclui o Quem , o quê , quando .

Uma tabela de auditoria pode ficar assim:

create table SensitiveInformationAudit
(
    SensitiveNumberNew int null,
    SensitiveNumberOld int null,
    SensitiveDataNew varchar(100) null,
    SensitiveDataOld varchar(100) null,
    Action varchar(50) not null,
    AuditDate datetime not null,
    LastUpdatedUser varchar(100) not null
)
go

As tabelas de auditoria geralmente são preenchidas com o uso de gatilhos de banco de dados. Em outras palavras, quando a Xação ocorre SensitiveInformation, insira os detalhes dela SensitiveInformationAudit.

Thomas Stringer
fonte
O Actioncampo é o UPDATEou INSERTou DELETE?
precisa
24

Um outro aspecto importante das tabelas de auditoria que não foi destacado até agora é que, além de acompanhar quem fez o que em que registro (geralmente incluindo antes e depois dos instantâneos), as tabelas de auditoria são gravadas uma vez .

Os registros em uma tabela de auditoria não podem ser atualizados ou excluídos (consulte a nota), apenas inseridos . Às vezes, isso é imposto pelo uso de gatilhos ou talvez apenas pela lógica do aplicativo, mas é importante na prática porque fornece uma "prova" de que nada foi adulterado de uma maneira difícil de detectar.

Nota: A limpeza de registros antigos de uma tabela de auditoria requer processos especiais que geralmente precisam ser aprovados pela gerência ou pelos auditores.

Joel Brown
fonte
4

As tabelas de auditoria geralmente são usadas quando você deseja rastrear alterações em tabelas sensíveis / confidenciais. Se houver uma tabela usada para taxa de pagamento e porcentagem de bônus, e o aplicativo HR remunerar salários com base nesses dados, um usuário com acesso de gravação a esta tabela poderá fazer modificações de pagamento não autorizadas.

Ao mesmo tempo, alguns usuários devem ter permissão para trabalhar nessas tabelas. É aqui que as tabelas de auditoria entram. As tabelas de auditoria podem ser usadas para rastrear o valor antes e depois dos dados alterados. Geralmente, eles também salvam informações extras, como a pessoa que fez a alteração e o horário em que a alteração foi feita.

Portanto, essas tabelas de auditoria impedem que os usuários com poderes realizem atividades não autorizadas. Eles também fornecem um meio de voltar aos valores corretos.

O SQL 2008 e superior têm um recurso interno chamado Change Data Capture que pode ser usado para isso.

StanleyJohns
fonte
2
Infelizmente, a captura de dados de alteração é terrível para a auditoria porque você não pode capturar o usuário que fez a alteração (a menos que você já esteja armazenando isso no banco de dados).
HLGEM
0

As tabelas de auditoria são usadas por ferramentas de auditoria nativas ou de terceiros que capturam alterações de dados que ocorreram em um banco de dados, geralmente incluindo as informações sobre quem fez a alteração, quais objetos foram afetados por ela, quando foram feitas, bem como as informações no Login, aplicativo e host SQL usados ​​para fazer a alteração. Todas as informações capturadas são armazenadas nas tabelas de auditoria e devem estar disponíveis em formatos amigáveis, através da exportação ou consulta.

Ivan Stankovic
fonte