Udostępnij za pośrednictwem


Zabezpieczenia tabeli czasowej

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje Azure SQL DatabaseAzure SQL Managed InstanceSQL Database w usłudze Microsoft Fabric

Aby zrozumieć zabezpieczenia dotyczące tabel czasowych, należy zrozumieć zasady zabezpieczeń, które mają zastosowanie do tabel czasowych. Po zrozumieniu tych zasad zabezpieczeń jesteś gotowy zanurzyć się w zabezpieczenia dotyczące CREATE TABLE, ALTER TABLEi deklaracji SELECT.

Zasady zabezpieczeń

W poniższej tabeli opisano zasady zabezpieczeń, które mają zastosowanie do tabel czasowych:

Zasada Opis
Włączanie/wyłączanie wersjonowania systemowego wymaga najwyższych uprawnień do obiektów, których dotyczy. Włączenie i wyłączenie SYSTEM_VERSIONING wymaga CONTROL uprawnienia zarówno dla bieżącej, jak i tabeli historii.
Nie można bezpośrednio modyfikować danych historii Gdy SYSTEM_VERSIONING jest ON, użytkownicy nie mogą zmieniać danych historii, niezależnie od rzeczywistych uprawnień w tabeli bieżącej lub historycznej. To ograniczenie obejmuje zarówno modyfikacje danych, jak i schematu. 1
Wykonywanie zapytań dotyczących danych historii wymaga uprawnienia SELECT do tabeli historii. Użytkownik z uprawnieniami SELECT w bieżącej tabeli nie ma automatycznie uprawnień SELECT w tabeli historii.
Inspekcja ujawnia operacje wpływające na tabelę historii w określony sposób Ustawienia inspekcji z bieżącej tabeli nie są automatycznie przenoszone do tabeli historii. Audytowanie musi być jawnie włączone dla tabeli historii. Po włączeniu inspekcja w tabeli historii regularnie przechwytuje wszystkie bezpośrednie próby uzyskania dostępu do danych (niezależnie od tego, czy zakończyły się powodzeniem, czy nie).

SELECT z rozszerzeniem zapytania czasowego pokazuje, że tabela historii miała wpływ na tę operację.

CREATE/ALTER tabela tymczasowa ujawnia, że również w tabeli historii odbywa się sprawdzanie uprawnień. Plik audytu zawiera dodatkowe rekordy w tabeli historii.

Operacje DML w bieżącej tabeli ujawniają, że tabela historii została dotknięta, ale additional_information zapewnia niezbędny kontekst (DML był wynikiem SYSTEM_VERSIONING).

1 Jeśli masz uprawnienie ALTER do bieżącej tabeli i tabeli historii, i upuścisz kolumnę w bieżącej tabeli, skojarzona kolumna w tabeli historii również zostanie usunięta, nawet jeśli SYSTEM_VERSIONING jest ON.

Wykonywanie operacji schematu

Po ustawieniu SYSTEM_VERSIONING na ONoperacje modyfikacji schematu są ograniczone.

Niedozwolone operacje schematu ALTER

Operacja Bieżąca tabela Tabela historii
DROP TABLE Niedozwolone Niedozwolone
ALTER TABLE...SWITCH PARTITION tylko SWITCH IN (zobacz partycję z tabelami czasowymi) tylko SWITCH OUT (zobacz partycję z tabelami czasowymi)
ALTER TABLE...DROP PERIOD Niedozwolone N/A
ALTER TABLE...ADD PERIOD N/A Niedozwolone

Dozwolone operacje ALTER TABLE

Operacja Aktualny Historia
ALTER TABLE...REBUILD Dozwolone (niezależnie) Dozwolone (samodzielnie)
CREATE INDEX Dozwolone (niezależnie) Dozwolone (samodzielnie)
CREATE STATISTICS Dozwolone (niezależnie) Dozwolone (niezależnie)

Bezpieczeństwo instrukcji CREATE tabeli temporalnej

Cecha Tworzenie nowej tabeli historii Ponowne używanie istniejącej tabeli historii
Wymagane uprawnienie CREATE TABLE uprawnienia w bazie danych

ALTER uprawnienia do schematów, w których są tworzone tabele bieżące i historyczne
CREATE TABLE uprawnienia w bazie danych

ALTER uprawnienia do schematu, na którym zostanie utworzona bieżąca tabela.

CONTROL uprawnienia do tabeli historii określonej w ramach instrukcji CREATE TABLE tworzenia tabeli czasowej.
Audyt Inspekcja pokazuje, że użytkownicy próbowali utworzyć dwa obiekty. Operacja może zakończyć się niepowodzeniem z powodu braku uprawnień do utworzenia tabeli w bazie danych lub z powodu braku uprawnień do zmiany schematów dla obu tabel. Inspekcja pokazuje, że tabela czasowa została utworzona. Operacja może zakończyć się niepowodzeniem z powodu braku uprawnień do utworzenia tabeli w bazie danych, braku uprawnień do zmiany schematu dla tabeli czasowej lub braku uprawnień do tabeli historii.

Instrukcja zabezpieczenia tabeli czasowej ALTER SET (SYSTEM_VERSIONING ON/OFF)

Cecha Tworzenie nowej tabeli historii Ponowne używanie istniejącej tabeli historii
Wymagane uprawnienie CONTROL uprawnienia w bazie danych.

CREATE TABLE uprawnienia w bazie danych.

ALTER uprawnienia do schematów, w których tworzona jest tabela historii.
CONTROL uprawnienia do oryginalnej tabeli, która została zmieniona.

CONTROL uprawnienia do tabeli historii określonej w ramach instrukcji ALTER TABLE.
Audyt Inspekcja pokazuje, że tabela czasowa została zmieniona, a tabela historii została utworzona w tym samym czasie. Ta operacja może zakończyć się niepowodzeniem z powodu braku uprawnień do utworzenia tabeli w bazie danych, braku uprawnień do zmiany schematu dla tabeli historii lub braku uprawnień do modyfikowania tabeli czasowej. Inspekcja pokazuje, że tabela czasowa została zmieniona, ale operacja wymagała dostępu do tabeli historii. Operacja może zakończyć się niepowodzeniem z powodu braku uprawnień w tabeli historii lub braku uprawnień w bieżącej tabeli.

Bezpieczeństwo instrukcji SELECT

Uprawnienia SELECT są niezmienione dla instrukcji SELECT, które nie mają wpływu na tabelę historii. W przypadku instrukcji SELECT mających wpływ na tabelę historii wymagane jest uprawnienie SELECT zarówno w bieżącej tabeli, jak i tabeli historii.