Co to jest tabela audytu?


24

Co to są tabele audytu?

Jak są one przydatne?

Natknąłem się na nich, czytając ten artykuł .


2
To tylko zwykłe stoły. To, jak z nich korzystasz i co w nich wkładasz, czyni z nich „tabele audytu”.
— Nick Chammas,

1
Nie są takie same. Masz tabelę kontroli, która jest niezależna od tabeli, którą kontrolujesz. Więc miałbyś dwa stoliki NormalTablei AuditNormalTable.
— Thomas Stringer

1
Matt, Shark ma na to twoją odpowiedź. @Shark, podkreśliłem, że tabela kontroli nie jest specjalną konstrukcją bazy danych (ponieważ mam wrażenie, że OP może w to uwierzyć). To tylko kolejna tabela, którą programista buduje i wykorzystuje do śledzenia niektórych informacji.
— Nick Chammas,

@NickChammas Och, absolutnie, całkowicie zrozumiałem, co masz na myśli. Ale według komentarza OP nie sądziłem, że on to zrobił.
— Thomas Stringer

Jeśli weźmiesz pod uwagę słownikowe znaczenie audytu, prawdopodobnie dojdziesz do wniosku, że „tabela audytu” jest myląca. Audyt powinien być zewnętrzny w stosunku do bazy danych: jak może być audytem, ​​jeśli jest zakodowany przez samą aplikację biznesową?
— poniedziałek

Odpowiedzi:


22

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 Xakcja się dzieje SensitiveInformation, wstaw jej szczegóły SensitiveInformationAudit.


Czy Actionpole to UPDATEczy INSERTczy DELETE?
— leeand00

24

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.


4

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ć.


2
Niestety zmiana przechwytywania danych jest straszna dla inspekcji, ponieważ nie można przechwycić użytkownika, który dokonał zmiany (chyba że już przechowuje się ją w bazie danych).
— HLGEM,

0

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.