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 säkra temporala tabeller måste du förstå de säkerhetsprinciper som gäller för dem. När du förstår dessa principer kan du tillämpa säkerhet på CREATE TABLE, ALTER TABLE, och SELECT påståenden.

Säkerhetsprinciper

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

Principle Description
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ändare inte ändra historikdata, oavsett deras behörigheter i den aktuella 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. Du måste aktivera granskning explicit för historiktabellen. Efter att du aktiverat den fångar granskningen av historiktabellen alla direkta försök att komma åt datan, oavsett om de lyckas eller inte.

SELECT med temporal query extension visas att operationen påverkade historiktabellen.

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

Data manipulationsspråkets (DML)-operationer i den aktuella tabellen visar att operationen påverkade historiktabellen, men additional_information ger nödvändig kontext (DML var resultatet av SYSTEM_VERSIONING).

1 Om du har ALTER behörighet på den aktuella tabellen och historiktabellen, och du lägger bort 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.

Inte tillåtna ALTER SCHEMA operationer

Operation Nuvarande tabell Historiktabell
DROP TABLE Disallowed Disallowed
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 Disallowed N/A
ALTER TABLE...ADD PERIOD N/A Disallowed

Tillåtna ALTER TABLE åtgärder

Operation Current History
ALTER TABLE...REBUILD Tillåts (oberoende) Tillåts (oberoende)
CREATE INDEX Tillåts (oberoende) Tillåts (oberoende)
CREATE STATISTICS Tillåts (oberoende) Tillåts (oberoende)

Säkerhet för instruktionen CREATE temporal table

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

ALTER behörighet på scheman där du skapar nuvarande och historiktabeller
CREATE TABLE behörighet i databasen

ALTER behörighet för schemat där du skapar den aktuella tabellen.

CONTROL behörighet i historiktabellen som anges som en del av CREATE TABLE-instruktionen som skapar den temporala tabellen.
Audit Granskning visar att användare försökte skapa två objekt. Operationen kan misslyckas på grund av brist på behörigheter för att skapa en tabell i databasen, eller på grund av brist på behörigheter för 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äkerheten för ALTER:s temporala tabell SET (SYSTEM_VERSIONING)-sats

Feature 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 på scheman där du skapar historiktabellen.
CONTROL behörighet för den ursprungliga tabellen som du ändrar.

CONTROL behörighet i historiktabellen som anges som en del av ALTER TABLE-instruktionen.
Audit Granskning visar att den tidsmässiga tabellen ändrades och att historiktabellen skapades samtidigt. Denna operation kan misslyckas på grund av brist på 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 temporala 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 satser som påverkar historiktabellen behöver SELECT du behörighet både för den aktuella tabellen och historiktabellen.