Dela via


Säkerhet för temporära tabeller

gäller för: SQL Server 2016 (13.x) och senare versioner Azure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

För att förstå säkerheten som den gäller för tidstabeller måste du förstå de säkerhetsprinciper som gäller för temporala tabeller. När du har förstått dessa säkerhetsprinciper är du redo att undersöka säkerheten kring CREATE TABLE-, ALTER TABLE- och SELECT-uttalanden.

Säkerhetsprinciper

I följande tabell beskrivs de säkerhetsprinciper som gäller för temporala tabeller:

Princip Beskrivning
Aktivera/inaktivera systemversionshantering kräver högsta behörighet för berörda objekt Aktivering och inaktivering av SYSTEM_VERSIONING kräver CONTROL behörighet för både den aktuella tabellen och historiktabellen.
Historikdata kan inte ändras direkt När SYSTEM_VERSIONING är ONkan användarna inte ändra historikdata, oavsett deras faktiska behörigheter i den aktuella tabellen eller historiktabellen. Den här begränsningen omfattar både data- och schemaändringar. 1
Att göra frågor i historikdata kräver SELECT behörighet på historiktabellen En användare med SELECT behörighet i den aktuella tabellen har inte automatiskt SELECT behörighet i historiktabellen.
Granskning visar åtgärder som påverkar historiktabellen på specifika sätt Granskningsinställningar från den aktuella tabellen tillämpas inte automatiskt på historiktabellen. Granskning måste aktiveras explicit för historiktabellen. En gång aktiverad registreras granskningar på historiktabellen regelbundet för alla direkta försök att komma åt data (oavsett om de lyckades eller inte).

SELECT med temporalt frågetillägg visar att historiktabellen påverkades av denna åtgärd.

CREATE/ALTER temporala tabellen visar också information om att behörighetskontrollen sker i historiktabellen. Granskningsfilen innehåller ytterligare poster för historiktabellen.

DML-åtgärder i den aktuella tabellen visar att historiktabellen påverkades, men additional_information tillhandahåller nödvändig kontext (DML berodde på SYSTEM_VERSIONING).

1 Om du har ALTER-behörighet för den aktuella tabellen och historiktabellen, och du släpper en kolumn i den aktuella tabellen, tas även den associerade kolumnen i historiktabellen bort, även om SYSTEM_VERSIONING är ON.

Utföra schemaåtgärder

När SYSTEM_VERSIONING är inställt på ONbegränsas schemaändringsåtgärderna.

Otillåtna ALTER-schemaåtgärder

Operation Aktuell tabell Historiktabell
DROP TABLE Otillåten Otillåten
ALTER TABLE...SWITCH PARTITION endast SWITCH IN (se Partition med temporära tabeller) endast SWITCH OUT (se partition med temporära tabeller)
ALTER TABLE...DROP PERIOD Otillåten Ej tillämpligt
ALTER TABLE...ADD PERIOD Ej tillämpligt Otillåten

Tillåtna ALTER TABLE-åtgärder

Operation Ström Historia
ALTER TABLE...REBUILD Tillåts (oberoende) Tillåten (oberoende)
CREATE INDEX Tillåts (självständigt) Tillåts (på egen hand)
CREATE STATISTICS Tillåten (oberoende) Tillåten (självständigt)

Säkerhet för instruktionen CREATE temporal table

Funktion Skapa ny historiktabell Återanvänd befintlig historiktabell
Behörighet krävs CREATE TABLE behörighet i databasen

ALTER behörighet för de scheman som de aktuella tabellerna och historiktabellerna skapas i
CREATE TABLE behörighet i databasen

ALTER behörighet för schemat där den aktuella tabellen ska skapas.

CONTROL behörighet i historiktabellen som anges som en del av CREATE TABLE-instruktionen som skapar den temporala tabellen.
Revision Granskning visar att användare försökte skapa två objekt. Åtgärden kan misslyckas på grund av bristande behörigheter för att skapa en tabell i databasen, eller på grund av bristande behörighet att ändra scheman för någon av tabellerna. Granskning visar att den tidsmässiga tabellen skapades. Åtgärden kan misslyckas på grund av bristande behörighet att skapa en tabell i databasen, brist på behörigheter för att ändra schemat för den tidsmässiga tabellen eller brist på behörigheter i historiktabellen.

Säkerhet för kommandot "ALTER temporal table SET (SYSTEM_VERSIONING ON/OFF)"

Funktion Skapa ny historiktabell Återanvänd befintlig historiktabell
Behörighet krävs CONTROL behörighet i databasen.

CREATE TABLE behörighet i databasen.

ALTER behörighet för de scheman som historiktabellen skapas i.
CONTROL behörighet på den ursprungliga tabellen som har ändrats.

CONTROL behörighet i historiktabellen som anges som en del av ALTER TABLE-instruktionen.
Revision Granskning visar att den tidsmässiga tabellen ändrades och att historiktabellen skapades samtidigt. Den här åtgärden kan misslyckas på grund av bristande behörigheter för att skapa en tabell i databasen, brist på behörigheter för att ändra schemat för historiktabellen eller brist på behörighet att ändra den temporära tabellen. Granskning visar att den tidsmässiga tabellen har ändrats, men åtgärden krävde åtkomst till historiktabellen. Åtgärden kan misslyckas på grund av bristande behörigheter i historiktabellen eller brist på behörigheter för den aktuella tabellen.

Säkerhet för SELECT-instruktionen

SELECT-behörigheten förblir oförändrad för SELECT-uttalanden som inte påverkar historiktabellen. För SELECT-instruktioner som påverkar historiktabellen krävs SELECT-behörigheten för både den nuvarande tabellen och historiktabellen.