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.