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 і вище є вбудована функція під назвою Change Data Capture, яка може бути використана для цього.
Таблиці аудиту використовуються вбудованими або сторонніми інструментами аудиту, які фіксують зміни даних, що відбулися в базі даних, як правило, включаючи інформацію про те, хто вніс зміни, які об'єкти вплинули на неї під час її внесення, а також інформацію про Логін, програма та хост SQL, які використовуються для внесення змін. Вся захоплена інформація зберігається в таблицях аудиту і повинна бути доступною у зручних для користувача форматах шляхом експорту або запиту.