Zabezpieczenia tabeli czasowej
Dotyczy: SQL Server 2016 (13.x) i nowsze wersje
Azure SQL Database
Azure SQL Managed Instance
SQL 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 TABLE
i 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 ON
operacje 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 danychALTER uprawnienia do schematów, w których są tworzone tabele bieżące i historyczne |
CREATE TABLE uprawnienia w bazie danychALTER 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.
Powiązana zawartość
- tabele czasowe
- Rozpoczynanie pracy z tabelami czasowymi w wersji systemowej
- sprawdzanie spójności systemu tabel czasowych
- partycja z tabelami czasowymi
- Rozważania i ograniczenia dotyczące tabeli czasowej
- Zarządzanie przechowywaniem danych historycznych w systemowo wersjonowanych tabelach czasowych
- systemowo wersjonowanych tabel czasowych z tabelami optymalizowanych pod kątem pamięci
- Widoki i funkcje tabel czasowych metadanych