NormalTable
и AuditNormalTable
.
NormalTable
и AuditNormalTable
.
Ответы:
Таблицы аудита используются для отслеживания транзакций с определенной таблицей или таблицами. Они позволяют вам видеть текущий «журнал» (из-за отсутствия лучшего слова). Например, скажем, у вас есть такая таблица:
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
?
Еще один важный аспект таблиц аудита, который до сих пор не был выделен, заключается в том, что помимо отслеживания того, кто что сделал, для каких записей (часто включая до и после моментальных снимков) таблицы аудита имеют однократную запись .
Записи в таблице аудита не могут быть обновлены или удалены (см. Примечание), только вставлены . Иногда это навязывается с помощью триггеров или, может быть, просто логики приложения, но на практике это важно, потому что это дает вам «доказательство» того, что ничто не было подделано способом, который трудно обнаружить.
Примечание. Удаление старых записей из таблицы аудита требует специальных процессов, которые часто должны быть одобрены руководством или аудиторами.
Таблицы аудита обычно используются, когда вы хотите отслеживать изменения в конфиденциальных / конфиденциальных таблицах. Если есть таблица, которая используется для расчета ставки вознаграждения и процента бонуса, а приложение HR оплачивает заработную плату на основе этих данных, то пользователь с правами записи в эту таблицу может вносить несанкционированные платежи.
В то же время некоторым пользователям следует разрешить работать с этими таблицами. Именно здесь появляются таблицы аудита. Таблицы аудита можно использовать для отслеживания значения измененных данных до и после. Обычно они также сохраняют дополнительную информацию, например, лицо, которое внесло изменение, и время, когда оно было сделано.
Следовательно, эти таблицы аудита не позволяют пользователям выполнять несанкционированные действия. Они также предоставляют средства для возврата к правильным значениям.
SQL 2008 и выше имеют встроенную функцию, называемую « Сбор данных изменений», которую можно использовать для этого.
Таблицы аудита используются собственными или сторонними инструментами аудита, которые фиксируют изменения данных, произошедшие в базе данных, обычно включая информацию о том, кто произвел изменение, какие объекты были затронуты им, когда оно было выполнено, а также информацию о SQL логин, приложение и хост использовали для внесения изменений. Вся собранная информация хранится в таблицах аудита и должна быть доступна в удобных для пользователя форматах с помощью экспорта или запросов.