Что такое таблица аудита?


24

Что такое таблицы аудита?

Чем они полезны?

Я наткнулся на них, читающих эту статью .


2
Это просто обычные столы. Именно то, как вы их используете и что вы вкладываете в них, делает их «таблицами аудита».
Ник Чаммас

1
Они не одинаковы. У вас есть таблица аудита, которая отделена от таблицы, которую вы проверяете. Таким образом, у вас есть две таблицы, NormalTableи AuditNormalTable.
Томас Стрингер

1
Мэтт, у Акулы есть твой ответ на это. @Shark, я подчеркивал, что таблица аудита не является специальной конструкцией базы данных (поскольку у меня сложилось впечатление, что ОП может в это поверить). Это просто еще одна таблица, которую разработчик создает и использует для отслеживания определенной информации.
Ник Чаммас

@NickChammas О, конечно, я полностью поняла, что ты имел в виду. Но по комментарию ОП я не думаю, что он это сделал.
Томас Стрингер

Если вы рассмотрите словарь «аудит», вы, вероятно, придете к выводу, что «таблица аудита» является неправильным. Аудит должен быть внешним по отношению к базе данных: если он закодирован самим бизнесом приложения, как он может быть аудитом?
понедельник,

Ответы:


22

Таблицы аудита используются для отслеживания транзакций с определенной таблицей или таблицами. Они позволяют вам видеть текущий «журнал» (из-за отсутствия лучшего слова). Например, скажем, у вас есть такая таблица:

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

Там могут быть пользователи и / или приложения, которые имеют доступ для вставки, обновления и удаления из этой таблицы. Но из-за деликатного характера этих данных вам может понадобиться быстрый и простой способ отследить, кто что делает на этой таблице.

Итак, у вас есть таблица аудита для отслеживания того, что делается на этом столе. Как правило, это включает в себя основные кто , что , когда .

Таблица аудита может выглядеть так:

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

Таблицы аудита обычно заполняются с помощью триггеров базы данных. Другими словами, когда Xдействие происходит SensitiveInformation, вставьте его детали в SensitiveInformationAudit.


Это Actionполе UPDATEили INSERTили DELETE?
leeand00

24

Еще один важный аспект таблиц аудита, который до сих пор не был выделен, заключается в том, что помимо отслеживания того, кто что сделал, для каких записей (часто включая до и после моментальных снимков) таблицы аудита имеют однократную запись .

Записи в таблице аудита не могут быть обновлены или удалены (см. Примечание), только вставлены . Иногда это навязывается с помощью триггеров или, может быть, просто логики приложения, но на практике это важно, потому что это дает вам «доказательство» того, что ничто не было подделано способом, который трудно обнаружить.

Примечание. Удаление старых записей из таблицы аудита требует специальных процессов, которые часто должны быть одобрены руководством или аудиторами.


4

Таблицы аудита обычно используются, когда вы хотите отслеживать изменения в конфиденциальных / конфиденциальных таблицах. Если есть таблица, которая используется для расчета ставки вознаграждения и процента бонуса, а приложение HR оплачивает заработную плату на основе этих данных, то пользователь с правами записи в эту таблицу может вносить несанкционированные платежи.

В то же время некоторым пользователям следует разрешить работать с этими таблицами. Именно здесь появляются таблицы аудита. Таблицы аудита можно использовать для отслеживания значения измененных данных до и после. Обычно они также сохраняют дополнительную информацию, например, лицо, которое внесло изменение, и время, когда оно было сделано.

Следовательно, эти таблицы аудита не позволяют пользователям выполнять несанкционированные действия. Они также предоставляют средства для возврата к правильным значениям.

SQL 2008 и выше имеют встроенную функцию, называемую « Сбор данных изменений», которую можно использовать для этого.


2
К сожалению, сбор данных изменений ужасен для аудита, потому что вы не можете захватить пользователя, который внес изменение (если вы уже не сохраняете это в БД).
HLGEM

0

Таблицы аудита используются собственными или сторонними инструментами аудита, которые фиксируют изменения данных, произошедшие в базе данных, обычно включая информацию о том, кто произвел изменение, какие объекты были затронуты им, когда оно было выполнено, а также информацию о SQL логин, приложение и хост использовали для внесения изменений. Вся собранная информация хранится в таблицах аудита и должна быть доступна в удобных для пользователя форматах с помощью экспорта или запросов.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.