Sicherheit bei temporalen Tabellen

Gilt für: SQL Server 2016 (13.x) und spätere Versionen Azure SQL-DatenbankAzure SQL Managed InstanceSQL database in Microsoft Fabric

Um temporale Tabellen zu sichern, müssen Sie die darauf geltenden Sicherheitsprinzipien verstehen. Nachdem Sie diese Prinzipien verstanden haben, können Sie Sicherheit auf die CREATE TABLE, ALTER TABLE, und SELECT Aussagen anwenden.

Sicherheitsprinzipien

Die folgende Tabelle beschreibt die Sicherheitsprinzipien, die für temporäre Tabellen gelten:

Prinzip Beschreibung
Das Aktivieren/Deaktivieren der Systemversionsverwaltung erfordert die höchsten Berechtigungen für betroffene Objekte Das Aktivieren und Deaktivieren von SYSTEM_VERSIONING erfordert die CONTROL-Berechtigung sowohl für die aktuelle Tabelle als auch für die Verlaufstabelle.
Verlaufsdaten können nicht direkt geändert werden Wenn SYSTEM_VERSIONING auf ON festgelegt ist, können Benutzer die Verlaufsdaten nicht ändern, unabhängig von ihren Berechtigungen für die aktuelle oder die Verlaufstabelle. Das Beschränkung gilt sowohl für Daten- als auch für Schemaänderungen. 1
Das Abfragen von Verlaufsdaten erfordert die SELECT-Berechtigung für die Verlaufstabelle Ein Benutzer mit SELECT -Berechtigungen für die aktuelle Tabelle verfügt nicht automatisch über die SELECT-Berechtigung für die Verlaufstabelle.
Die Überprüfung zeigt Vorgänge an, die sich auf bestimmte Weise auf die Verlaufstabelle auswirken Überwachungseinstellungen aus der aktuellen Tabelle werden nicht automatisch auf die Verlaufstabelle angewendet. Sie müssen die Überwachung für die Verlaufstabelle explizit aktivieren. Nachdem Sie sie aktiviert haben, erfasst die Überwachung der Verlaufstabelle sämtliche direkten Zugriffsversuche auf die Daten, unabhängig davon, ob diese erfolgreich sind oder nicht.

SELECT mit temporaler Abfrageerweiterung zeigt, dass der Vorgang die Verlaufstabelle betraf.

CREATE/ALTER Eine temporale Tabelle macht deutlich, dass die Berechtigungsprüfung auch für die Verlaufstabelle durchgeführt wird. Die Auditdatei enthält zusätzliche Datensätze für die Verlaufstabelle.

Datenmanipulationssprache-(DML-)Operationen für die aktuelle Tabelle zeigen, dass der Vorgang die Verlaufstabelle betraf, doch additional_information liefert den notwendigen Kontext (DML war das Ergebnis von SYSTEM_VERSIONING).

1 Wenn Sie über die Berechtigung ALTER für die aktuelle Tabelle und die Verlaufstabelle verfügen und eine Spalte in der aktuellen Tabelle löschen, wird auch die zugehörige Spalte in der Verlaufstabelle gelöscht, selbst wenn SYSTEM_VERSIONINGON ist.

Ausführen von Schemavorgängen

Wenn SYSTEM_VERSIONING auf ON festgelegt ist, werden Schemaänderungsvorgänge beschränkt.

Verbotene ALTER SCHEMA Operationen

Operation Aktuelle Tabelle Verlaufstabelle
DROP TABLE Nicht zulässig Unzulässig
ALTER TABLE...SWITCH PARTITION SWITCH IN nur (siehe Partitionierung mit zeitbezogenen Tabellen) SWITCH OUT nur (siehe Partitionierung mit zeitbezogenen Tabellen)
ALTER TABLE...DROP PERIOD Unzulässig N/A
ALTER TABLE...ADD PERIOD N/A Nicht zulässig

Zulässige ALTER TABLE Vorgänge

Operation Current History
ALTER TABLE...REBUILD Zulässig (eigenständig) Zulässig (eigenständig)
CREATE INDEX Zulässig (eigenständig) Zulässig (eigenständig)
CREATE STATISTICS Zulässig (eigenständig) Zulässig (eigenständig)

Sicherheit der Anweisung CREATE TEMPORAL TABLE

Funktion Neue Verlaufstabelle erstellen Wiederverwenden einer vorhandenen Verlaufstabelle
Berechtigung erforderlich CREATE TABLE Berechtigung in der Datenbank

ALTER Berechtigung für die Schemata, in denen du die aktuellen und die Historik-Tabellen erstellst
CREATE TABLE Berechtigung in der Datenbank

ALTER Berechtigung für das Schema, in dem du die aktuelle Tabelle erstellst.

CONTROL-Berechtigung für die Verlaufstabelle, die als Teil der CREATE TABLE-Anweisung zum Erstellen der temporalen Tabelle angegeben wurde.
Überwachung Die Überwachung zeigt, dass Benutzer versucht haben, zwei Objekte zu erstellen. Die Operation kann scheitern, weil keine Berechtigungen zur Erstellung einer Tabelle in der Datenbank vorhanden sind oder keine Berechtigungen zur Änderung von Schemata für eine der beiden Tabellen. Die Überwachung zeigt, dass die temporale Tabelle erstellt wurde. Der Vorgang kann fehlschlagen, entweder aufgrund fehlender Berechtigungen zum Erstellen einer Tabelle in der Datenbank, aufgrund der fehlenden Berechtigungen zum Ändern des Schemas für die temporale Tabelle, oder aufgrund der fehlenden Berechtigungen für die Verlaufstabelle.

Sicherheit der ALTER-Zeittabelle SET (SYSTEM_VERSIONING)-Anweisung

Funktion Neue Verlaufstabelle erstellen Wiederverwenden einer vorhandenen Verlaufstabelle
Berechtigung erforderlich CONTROL Berechtigung in der Datenbank.

CREATE TABLE Berechtigung in der Datenbank.

ALTER Berechtigung für die Schemas, in denen Sie die Verlaufstabelle erstellen.
CONTROL Berechtigung für die Originaltabelle, die Sie ändern.

CONTROL-Berechtigung für die Verlaufstabelle, die als Teil der ALTER TABLE-Anweisung angegeben ist.
Überwachung Die Überwachung zeigt, dass die temporale Tabelle geändert und die Verlaufstabelle zur gleichen Zeit erstellt wurde. Diese Operation kann aufgrund fehlender Berechtigungen zur Erstellung einer Tabelle in der Datenbank, fehlender Berechtigungen zur Änderung des Schemas der Versionstabelle oder fehlender Berechtigung zur Änderung der temporalen Tabelle fehlschlagen. Die Überprüfung zeigt, dass die temporale Tabelle geändert wurde, aber der Vorgang erforderte Zugriff auf die Verlaufstabelle. Der Vorgang kann fehlschlagen, da Berechtigungen für die Verlaufstabelle oder für die aktuelle Tabelle fehlen.

Sicherheit der SELECT-Anweisung

Die SELECT-Berechtigung bleibt bei SELECT-Anweisungen, die sich nicht auf die Verlaufstabelle auswirken, unverändert. Für SELECT Anweisungen, die die Verlaufstabelle betreffen, benötigen SELECT Sie Berechtigungen sowohl für die aktuelle Tabelle als auch für die Verlaufstabelle.