Delen via


Beveiliging van temporele tabellen

Van toepassing op: SQL Server 2016 (13.x) en latere versies Azure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Als u de beveiliging wilt begrijpen zoals deze van toepassing is op tijdelijke tabellen, moet u de beveiligingsprincipes begrijpen die van toepassing zijn op tijdelijke tabellen. Nadat u deze beveiligingsprincipes hebt begrepen, bent u klaar om de beveiliging rondom de CREATE TABLE, ALTER TABLEen SELECT instructies te bekijken.

Beveiligingsprincipes

In de volgende tabel worden de beveiligingsprincipes beschreven die van toepassing zijn op tijdelijke tabellen:

Principe Beschrijving
Systeemversiebeheer in- of uitschakelen vereist de hoogste bevoegdheden voor betrokken objecten Voor het in- en uitschakelen van SYSTEM_VERSIONING is CONTROL machtiging vereist voor zowel de huidige als de geschiedenistabel.
Geschiedenisgegevens kunnen niet rechtstreeks worden gewijzigd Wanneer SYSTEM_VERSIONING is ON, kunnen gebruikers geen geschiedenisgegevens wijzigen, ongeacht hun werkelijke machtigingen voor de huidige of geschiedenistabel. Deze beperking omvat zowel gegevens- als schemawijzigingen. 1
Voor het opvragen van geschiedenisgegevens is SELECT machtiging voor de geschiedenistabel vereist Een gebruiker met SELECT machtiging voor de huidige tabel heeft niet automatisch SELECT machtiging voor de geschiedenistabel.
Controle toont bewerkingen die van invloed zijn op de geschiedenistabel op specifieke manieren Controle-instellingen uit de huidige tabel worden niet automatisch toegepast op de geschiedenistabel. Controle moet expliciet zijn ingeschakeld voor de geschiedenistabel. Zodra deze optie is ingeschakeld, worden in de geschiedenistabel regelmatig alle directe pogingen vastgelegd om toegang te krijgen tot de gegevens (ongeacht of ze wel of niet zijn geslaagd).

SELECT met de tijdelijke query-extensie geeft aan dat de geschiedenistabel met die bewerking is beïnvloed.

CREATE/ALTER tijdelijke tabel onthult informatie dat de machtigingscontrole ook plaatsvindt op de historische tabel. Het auditbestand bevat aanvullende records voor de geschiedenistabel.

DML-bewerkingen in de huidige tabel geven aan dat de geschiedenistabel is beïnvloed, maar additional_information de nodige context biedt (DML was het resultaat van SYSTEM_VERSIONING).

1 Als u de machtiging ALTER hebt voor de huidige tabel en de geschiedenistabel en u een kolom in de huidige tabel neerzet, wordt de bijbehorende kolom in de geschiedenistabel ook verwijderd, zelfs als SYSTEM_VERSIONING is ON.

Schemabewerkingen uitvoeren

Wanneer SYSTEM_VERSIONING is ingesteld op ON, zijn bewerkingen voor schemawijziging beperkt.

Niet-toegestane ALTER-schemabewerkingen

Operatie Huidige tabel Geschiedenistabel
DROP TABLE Toegestaan Toegestaan
ALTER TABLE...SWITCH PARTITION alleen SWITCH IN (zie Partitie met tijdelijke tabellen) alleen SWITCH OUT (zie Partitie met tijdelijke tabellen)
ALTER TABLE...DROP PERIOD Toegestaan N.V.T
ALTER TABLE...ADD PERIOD N.V.T Toegestaan

Toegestane ALTER TABLE-bewerkingen

Operatie Actueel Geschiedenis
ALTER TABLE...REBUILD Toegestaan (onafhankelijk) Toegestaan (onafhankelijk)
CREATE INDEX Toegestaan (onafhankelijk) Toegestaan (onafhankelijk)
CREATE STATISTICS Toegestaan (onafhankelijk) Toegestaan (onafhankelijk)

Beveiliging van de tijdelijke tabelinstructie CREATE

Kenmerk Nieuwe geschiedenistabel maken Bestaande geschiedenistabel opnieuw gebruiken
Toestemming vereist CREATE TABLE toestemming in de database

ALTER machtiging voor de schema's waarin de huidige en geschiedenistabellen zijn aangemaakt
CREATE TABLE toestemming in de database

ALTER machtiging voor het schema waarin de huidige tabel wordt gemaakt.

CONTROL machtiging voor de geschiedenistabel die is opgegeven als onderdeel van de instructie CREATE TABLE waarmee de tijdelijke tabel wordt gemaakt.
Audit Controle laat zien dat gebruikers hebben geprobeerd twee objecten te maken. De bewerking kan mislukken vanwege een gebrek aan machtigingen voor het maken van een tabel in de database of vanwege een gebrek aan machtigingen voor het wijzigen van schema's voor een van beide tabellen. Audit toont aan dat de tijdstabel is aangemaakt. De bewerking kan mislukken als gevolg van een gebrek aan machtigingen voor het maken van een tabel in de database, gebrek aan machtigingen om het schema voor de tijdelijke tabel te wijzigen of omdat er geen machtigingen zijn voor de geschiedenistabel.

Beveiliging van de instructie ALTER tijdstabel SET (SYSTEM_VERSIONING ON/OFF)

Functie Nieuwe geschiedenistabel maken Bestaande geschiedenistabel opnieuw gebruiken
Toestemming vereist CONTROL toestemming in de database.

CREATE TABLE toestemming in de database.

ALTER machtiging voor de schema's waarin de geschiedenistabel wordt gemaakt.
CONTROL toestemming voor de oorspronkelijke tabel die wordt gewijzigd.

CONTROL toestemming op de geschiedenistabel gespecificeerd als onderdeel van de ALTER TABLE-instructie.
Controle Controle laat zien dat de tijdelijke tabel is gewijzigd en dat de geschiedenistabel tegelijkertijd is gemaakt. Deze bewerking kan mislukken als gevolg van een gebrek aan machtigingen voor het maken van een tabel in de database, gebrek aan machtigingen om het schema voor de geschiedenistabel te wijzigen of omdat er geen machtigingen zijn om de tijdelijke tabel te wijzigen. Controle geeft aan dat de tijdelijke tabel is gewijzigd, maar dat de bewerking toegang tot de geschiedenistabel vereist. De bewerking kan mislukken vanwege een gebrek aan machtigingen voor de geschiedenistabel of vanwege een gebrek aan machtigingen voor de huidige tabel.

Beveiliging van de SELECT-instructie

SELECT toestemming is ongewijzigd voor SELECT verklaringen die geen invloed hebben op de historie-tabel. Voor SELECT instructies die van invloed zijn op de geschiedenistabel, is SELECT toestemming vereist voor zowel de huidige tabel als de geschiedenistabel.