Zabezpečení časové tabulky

Platí na: SQL Server 2016 (13.x) a novější verze Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

Pro zabezpečení časových tabulek musíte rozumět bezpečnostním principům, které se na ně vztahují. Jakmile pochopíte tyto principy, můžete zabezpečit příkazy CREATE TABLE, ALTER TABLE a SELECT.

Principy zabezpečení

Následující tabulka popisuje principy zabezpečení, které platí pro dočasné tabulky:

Principle Description
Povolení nebo zakázání správy verzí systému vyžaduje u ovlivněných objektů nejvyšší oprávnění. Povolení a zakázání SYSTEM_VERSIONING vyžaduje oprávnění CONTROL na aktuální tabulku i tabulku historie.
Data historie se nedají upravovat přímo Když SYSTEM_VERSIONING je ON, uživatelé nemohou měnit data historie, bez ohledu na jejich oprávnění v aktuální nebo historické tabulce. Toto omezení zahrnuje úpravy dat i schématu. 1
Dotazování na data historie vyžaduje oprávnění SELECT v tabulce historie. Uživatel s oprávněním SELECT pro aktuální tabulku nemá automaticky oprávnění k SELECT v tabulce historie.
Audit odhalí operace ovlivňující tabulku historie určitými způsoby. Nastavení auditování z aktuální tabulky se automaticky nepoužije u tabulky historie. Auditování musíte povolit explicitně pro tabulku historie. Po jeho povolení auditování v tabulce historie zachytí všechny přímé pokusy o přístup k datům, ať už jsou úspěšné nebo ne.

SELECT s rozšířením temporálního dotazu ukazuje, že operace ovlivnila historickou tabulku.

CREATE/ALTER dočasná tabulka zveřejňuje také informace o tom, že kontrola oprávnění probíhá i v tabulce historie. Soubor auditu obsahuje další záznamy pro tabulku historie.

Operace jazyka pro manipulaci s daty (DML) v aktuální tabulce ukazují, že operace ovlivnila historickou tabulku, ale additional_information poskytuje nezbytný kontext (DML bylo výsledkem SYSTEM_VERSIONING).

1 Pokud máte ALTER oprávnění k aktuální tabulce i k tabulce historie a odstraníte sloupec v aktuální tabulce, odpovídající sloupec v tabulce historie se také odstraní, i když SYSTEM_VERSIONING je ON.

Provádění operací schématu

Pokud je SYSTEM_VERSIONING nastavena na ON, operace úprav schématu jsou omezené.

ALTER SCHEMA Zakázané operace

Operation Aktuální tabulka Tabulka historie
DROP TABLE Disallowed Disallowed
ALTER TABLE...SWITCH PARTITION pouze SWITCH IN (viz Oddíl s časovými tabulkami) pouze SWITCH OUT (viz Oddíl s časovými tabulkami)
ALTER TABLE...DROP PERIOD Disallowed N/A
ALTER TABLE...ADD PERIOD N/A Disallowed

Povolené ALTER TABLE operace

Operation Current History
ALTER TABLE...REBUILD Povoleno (samostatně) Povoleno (samostatně)
CREATE INDEX Povoleno (samostatně) Povoleno (samostatně)
CREATE STATISTICS Povoleno (samostatně) Povoleno (samostatně)

Zabezpečení příkazu CREATE časové tabulky

Feature Vytvoření nové tabulky historie Opakované použití existující tabulky historie
Požadováno oprávnění oprávnění CREATE TABLE v databázi

ALTER Povolení ke schématu, kde vytváříte aktuální a historické tabulky
oprávnění CREATE TABLE v databázi

ALTER Povolení ke schématu, kde vytváříte aktuální tabulku.

CONTROL oprávnění k tabulce historie zadané jako součást příkazu CREATE TABLE vytvoření dočasné tabulky.
Audit Audit ukazuje, že se uživatelé pokusili vytvořit dva objekty. Operace může selhat kvůli nedostatku oprávnění k vytvoření tabulky v databázi nebo kvůli nedostatku oprávnění ke změně schémat pro kterékoliv tabulky. Audit ukazuje, že byla vytvořena temporální tabulka. Operace může selhat kvůli nedostatku oprávnění k vytvoření tabulky v databázi, nedostatek oprávnění ke změně schématu dočasné tabulky nebo nedostatek oprávnění k tabulce historie.

Zabezpečení příkazu ALTER TABLE pro temporální tabulku SET (SYSTEM_VERSIONING)

Feature Vytvoření nové tabulky historie Opakované použití existující tabulky historie
Požadováno oprávnění CONTROL oprávnění v databázi.

CREATE TABLE oprávnění v databázi.

ALTER Povolení ke schématu, kde vytváříte tabulku historie.
CONTROL oprávnění k původní tabulce, kterou upravujete.

CONTROL oprávnění k tabulce historie zadané jako součást příkazu ALTER TABLE.
Audit Audit ukazuje, že dočasná tabulka byla změněna a tabulka historie byla vytvořena současně. Tato operace může selhat kvůli nedostatku oprávnění k vytvoření tabulky v databázi, nedostatku oprávnění ke změně schématu historické tabulky nebo nedostatku oprávnění upravovat časovou tabulku. Audit ukazuje, že dočasná tabulka byla změněna, ale operace vyžadovala přístup k tabulce historie. Operace může selhat kvůli nedostatku oprávnění v tabulce historie nebo kvůli chybějícím oprávněním k aktuální tabulce.

Zabezpečení příkazu SELECT

U příkazů SELECT, které nemají vliv na tabulku historie, se oprávnění SELECT nezmění. Pro SELECT tvrzení, která ovlivňují tabulku historie, potřebujete SELECT povolení jak na aktuální tabulce, tak na tabulce historie.