NormalTable
i AuditNormalTable
.
NormalTable
i AuditNormalTable
.
Odpowiedzi:
Tabele audytu służą do śledzenia transakcji dotyczących określonej tabeli lub tabel. Pozwalają zobaczyć ciągły „dziennik” (z powodu braku lepszego słowa). Powiedzmy, że masz taką tabelę:
create table SensitiveInformation
(
SensitiveNumber int not null,
SensitiveData varchar(100) not null
)
go
Mogą istnieć użytkownicy i / lub aplikacje, które mają dostęp do wstawiania, aktualizowania i usuwania z tej tabeli. Ale ze względu na wrażliwy charakter tych danych, możesz chcieć mieć szybki i łatwy sposób na śledzenie, kto robi to, co na tym stole.
Masz więc tabelę kontroli, aby śledzić, co się dzieje na tej tabeli. Zazwyczaj obejmuje to podstawowe Kto , Co , Kiedy .
Tabela audytu może wyglądać następująco:
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
Tabele audytu są zwykle wypełniane przy użyciu wyzwalaczy bazy danych. Innymi słowy, kiedy X
akcja się dzieje SensitiveInformation
, wstaw jej szczegóły SensitiveInformationAudit
.
Action
pole to UPDATE
czy INSERT
czy DELETE
?
Innym ważnym aspektem tabel audytu, który nie był do tej pory podświetlany, jest to, że oprócz śledzenia tego, kto zrobił to, do którego rekordu (często włączając przed i po migawkach) tabele kontroli są zapisywane jednokrotnie .
Rekordy w tabeli kontroli nie mogą być aktualizowane ani usuwane (patrz uwaga), a jedynie wstawiane . Czasami narzuca się to za pomocą wyzwalaczy, a może po prostu logiki aplikacji, ale jest to ważne w praktyce, ponieważ daje „dowód”, że nic nie zostało zmienione w sposób trudny do wykrycia.
Uwaga: Czyszczenie starych rekordów z tabeli audytu wymaga specjalnych procesów, które często muszą zostać zatwierdzone przez kierownictwo lub audytorów.
Tabele audytu są zwykle używane, gdy chcesz śledzić zmiany w tabelach wrażliwych / poufnych. Jeśli istnieje tabela używana dla stawki wynagrodzenia i procentu premii, a aplikacja HR wynagradza wynagrodzenia na podstawie tych danych, wówczas użytkownik z dostępem do zapisu w tej tabeli może dokonywać nieautoryzowanych modyfikacji płatności.
Jednocześnie niektórzy użytkownicy powinni mieć możliwość pracy nad tymi tabelami. W tym miejscu pojawiają się tabele kontroli. Tabele kontroli można wykorzystać do śledzenia wartości przed i po zmianach danych. Zazwyczaj zapisują także dodatkowe informacje, takie jak osoba, która dokonała zmiany i czas, w którym dokonano zmiany.
Dlatego te tabele kontroli zniechęcają uprawnionych użytkowników do wykonywania nieautoryzowanych działań. Zapewniają również możliwość powrotu do prawidłowych wartości.
SQL 2008 i nowsze wersje mają wbudowaną funkcję o nazwie Zmiana przechwytywania danych, której można w tym celu użyć.
Tabele inspekcji są używane przez rodzime lub zewnętrzne narzędzia inspekcji, które rejestrują zmiany danych, które nastąpiły w bazie danych, zwykle zawierające informacje o tym, kto dokonał zmiany, które obiekty zostały dotknięte zmianą, kiedy została dokonana, a także informacje o Login SQL, aplikacja i host użyte do wprowadzenia zmiany. Wszystkie przechwycone informacje są przechowywane w tabelach kontroli i powinny być dostępne w formatach przyjaznych dla użytkownika poprzez eksport lub zapytania.