Temporális táblabiztonság

Vonatkozik a következőkre: SQL Server 2016 (13.x) és későbbi verziók Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

Az időbeli táblázatok biztonságához meg kell értenünk azokat a biztonsági elveket, amelyek rájuk vonatkoznak. Miután megérted ezeket az elveket, biztonságot alkalmazhatsz a CREATE TABLE, ALTER TABLE, és SELECT állításokra.

Biztonsági alapelvek

Az alábbi táblázat az időbeli táblákra vonatkozó biztonsági alapelveket ismerteti:

Alapelv Leírás
A rendszer verziószámozásának engedélyezése/letiltása a legmagasabb jogosultságokat igényli az érintett objektumokon A SYSTEM_VERSIONING engedélyezéséhez és letiltásához CONTROL engedély szükséges az aktuális és az előzménytáblán is.
Az előzményadatok közvetlenül nem módosíthatók Ha a(z) SYSTEM_VERSIONING értéke ON, a felhasználók nem módosíthatják az előzményadatokat, függetlenül az aktuális vagy az előzménytáblára vonatkozó jogosultságaiktól. Ez a korlátozás adat- és sémamódosításokat is magában foglal. 1
Az előzmények adatainak lekérdezéséhez SELECT engedélyre van szükség az előzménytáblában Az aktuális táblán SELECT engedéllyel rendelkező felhasználók nem rendelkeznek automatikusan SELECT engedéllyel az előzménytáblában.
Az auditálás feltárja az előzménytáblát érintő műveleteket meghatározott módokon. Az aktuális tábla naplózási beállításai nem lesznek automatikusan alkalmazva az előzménytáblára. A történettáblázathoz kifejezetten be kell engedned az auditálást. Miután engedélyezted, a történettáblázat auditálása rögzíti az összes közvetlen hozzáférési kísérletet, függetlenül attól, hogy sikerült-e vagy sem.

SELECT időbeli lekérdezésbővítéssel azt mutatja, hogy a művelet hatással volt az előzménytáblára.

CREATE/ALTER temporális tábla információkat tesz közzé arról, hogy az engedély-ellenőrzés az előzménytáblán is megtörténik. A naplózási fájl további rekordokat tartalmaz az előzménytáblához.

Az adatmanipulációs nyelv (DML) műveletei az aktuális táblán azt mutatják, hogy a művelet az előzménytáblát érintette, de a additional_information megadja a szükséges kontextust (a DML a SYSTEM_VERSIONING eredménye volt).

1 Ha van ALTER jogosultságod az aktuális táblához és az előzménytáblához, és eldobsz egy oszlopot az aktuális táblából, akkor az előzménytábla megfelelő oszlopa is el lesz dobva, még akkor is, ha SYSTEM_VERSIONING értéke ON.

Sémaműveletek végrehajtása

Ha SYSTEM_VERSIONINGONértékre van állítva, a sémamódosítási műveletek korlátozottak.

Tiltott ALTER SCHEMA műveletek

Operation Aktuális tábla Előzménytábla
DROP TABLE Disallowed Disallowed
ALTER TABLE...SWITCH PARTITION csak SWITCH IN (lásd: Partíció időbeli táblákkal) csak SWITCH OUT (lásd: Partíció időbeli táblákkal)
ALTER TABLE...DROP PERIOD Disallowed N/A
ALTER TABLE...ADD PERIOD N/A Disallowed

Engedélyezett ALTER TABLE műveletek

Operation Current History
ALTER TABLE...REBUILD Engedélyezett (önállóan) Engedélyezett (önállóan)
CREATE INDEX Engedélyezett (önállóan) Engedélyezett (önállóan)
CREATE STATISTICS Engedélyezett (önállóan) Engedélyezett (önállóan)

A CREATE temporális tábla utasításának biztonsága

Feature Új előzménytábla létrehozása Meglévő előzménytábla újrafelhasználása
Engedély szükséges CREATE TABLE engedély az adatbázisban

ALTER engedély azokra a sémákra, ahol létrehozod az aktuális és történelem táblákat
CREATE TABLE engedély az adatbázisban

ALTER engedély arra a sémára, amelyben a jelenlegi táblát létrehozza.

CONTROL engedély az előzménytáblán az időtáblát létrehozó CREATE TABLE utasítás részeként van megadva.
Audit Az audit azt mutatja, hogy a felhasználók két objektumot próbáltak létrehozni. A művelet megbukhat, mert nincs engedély tábla létrehozására az adatbázisban, vagy mert nincs engedély a sémák módosítására bármelyik táblához. Az audit azt mutatja, hogy a temporális tábla létrejött. A művelet meghiúsulhat, ha nincs jogosultsága egy tábla létrehozására az adatbázisban, nem rendelkezik az időbeli tábla sémájának módosításához szükséges engedélyekkel, vagy az előzmények táblán lévő engedélyek hiánya miatt.

Az ALTER temporális tábla SET (SYSTEM_VERSIONING) utasítás biztonsága

Feature Új előzménytábla létrehozása Meglévő előzménytábla újrafelhasználása
Engedély szükséges CONTROL hozzáférési jog az adatbázisban.

CREATE TABLE hozzáférési jog az adatbázisban.

ALTER engedély szükséges azokon a sémákon, ahol létrehozod az előzménytáblát.
CONTROL engedély az eredeti táblára, amelyet módosít.

CONTROL ALTER TABLE utasítás részeként megadott előzménytáblára vonatkozó engedélyt.
Audit Az audit azt mutatja, hogy a temporális tábla módosult, és az előzménytábla egyidejűleg lett létrehozva. Ez a művelet megbukhat, mert nincs engedély az adatbázisban egy tábla létrehozására, hiányzik a történettáblázat sémájának módosítására vonatkozó engedély, vagy nincs engedély az időbeli tábla módosítására. Az audit azt mutatja, hogy a temporális tábla módosult, de a művelet hozzáférést igényelt az előzménytáblához. A művelet meghiúsulhat az előzmények táblában lévő engedélyek hiánya vagy az aktuális tábla engedélyeinek hiánya miatt.

A SELECT utasítás biztonsága

SELECT engedély nem változik SELECT olyan utasítások esetében, amelyek nem befolyásolják az előzménytáblát. Az előzménytáblát érintő SELECT utasításokhoz SELECT engedélyre van szükség mind az aktuális táblán, mind az előzménytáblán.