Condividi tramite


Sicurezza di una tabella temporale

Si applica a: SQL Server 2016 (13.x) e versioni successive Azure SQL Database AzureSQL Managed InstanceSQL database in Microsoft Fabric

Per comprendere il tema della sicurezza in riferimento alle tabelle temporali, si devono conoscere i principi di sicurezza che riguardano le tabelle temporali. Dopo aver compreso questi principi è possibile procedere approfondendo il tema della sicurezza in relazione alle istruzioni CREATE TABLE, ALTER TABLE e SELECT.

Principi di sicurezza

La tabella seguente descrive i principi di sicurezza che riguardano le tabelle temporali:

Principle Description
Abilitare/disabilitare il controllo delle versioni di sistema richiede i privilegi più elevati per gli oggetti interessati Per abilitare e disabilitare SYSTEM_VERSIONING è necessaria l’autorizzazione CONTROL sia per la tabella corrente che per quella di cronologia.
I dati di cronologia non possono essere modificati direttamente Quando SYSTEM_VERSIONING è ON, gli utenti non possono modificare i dati di cronologia indipendentemente dalle autorizzazioni effettive per la tabella corrente o di cronologia. Questa limitazione comprende sia le modifiche dei dati che quelle dello schema. 1
Per l'esecuzione di query sui dati di cronologia è richiesta l'autorizzazione SELECT per la tabella di cronologia Un utente con autorizzazione SELECT per la tabella corrente non dispone automaticamente dell'autorizzazione SELECT per la tabella di cronologia.
Il controllo rileva le operazioni che influiscono sulla tabella di cronologia in modi specifici Le impostazioni di controllo della tabella corrente non vengono applicate automaticamente alla tabella di cronologia. Il controllo deve essere abilitato in modo esplicito per la tabella di cronologia. Dopo l'abilitazione, il controllo sulla tabella di cronologia acquisisce regolarmente tutti i tentativi diretti di accesso ai dati (indipendentemente dal fatto che siano riusciti o meno).

SELECT con l'estensione per query temporali mostra che la tabella di cronologia è stata interessata da tale operazione.

CREATE/ALTER sulla tabella temporale espongono informazioni che indicano che il controllo delle autorizzazioni viene eseguito anche sulla tabella di cronologia. Il file di controllo contiene record aggiuntivi per la tabella di cronologia.

Le operazioni DML sulla tabella corrente indicano che la tabella di cronologia è stata interessata, ma additional_information fornisce il contesto necessario (DML risultante da SYSTEM_VERSIONING).

1 Se si dispone dell'autorizzazione ALTER per la tabella corrente e la tabella di cronologia e si rilascia una colonna nella tabella corrente, è eliminata anche la colonna associata nella tabella di cronologia, anche se SYSTEM_VERSIONING è ON.

Eseguire operazioni sullo schema

Quando SYSTEM_VERSIONING è impostato su ON, le operazioni di modifica dello schema sono limitate.

Operazioni ALTER sullo schema non consentite

Operation Tabella corrente Tabella di cronologia
DROP TABLE Disallowed Disallowed
ALTER TABLE...SWITCH PARTITION Solo SWITCH IN (si veda Partizioni con tabelle temporali) Solo SWITCH OUT (si veda Partizioni con tabelle temporali)
ALTER TABLE...DROP PERIOD Disallowed N/A
ALTER TABLE...ADD PERIOD N/A Disallowed

Operazioni ALTER TABLE consentite

Operation Current History
ALTER TABLE...REBUILD Consentito (indipendentemente) Consentito (indipendentemente)
CREATE INDEX Consentito (indipendentemente) Consentito (in modo indipendente)
CREATE STATISTICS Consentito (indipendentemente) Consentito (in modo indipendente)

Sicurezza dell'istruzione CREATE per le tabelle temporali

Feature Creare una nuova tabella di cronologia Riutilizzare una tabella di cronologia esistente
Autorizzazione richiesta Autorizzazione CREATE TABLE nel database

Autorizzazione ALTER negli schemi in cui vengono create le tabelle corrente e di cronologia
Autorizzazione CREATE TABLE nel database

Autorizzazione ALTER nello schema in cui verrà creata la tabella corrente.

Autorizzazione CONTROL nella tabella di cronologia specificata come parte dell'istruzione CREATE TABLE per la creazione della tabella temporale.
Audit Dal controllo risulta che gli utenti hanno tentato di creare due oggetti. L'operazione potrebbe non riuscire a causa della mancanza di autorizzazioni per creare una tabella nel database o a causa della mancanza di autorizzazioni per la modifica degli schemi per entrambe le tabelle. Il controllo mostra che la tabella temporale è stata creata. L'operazione potrebbe non riuscire a causa della mancanza di autorizzazioni per creare una tabella nel database, a causa della mancanza di autorizzazioni per la modifica dello schema per la tabella temporale o a causa della mancanza di autorizzazioni per la tabella di cronologia.

Sicurezza dell'istruzione ALTER SET (SYSTEM_VERSIONING ON/OFF) per le tabelle temporali

Feature Creare una nuova tabella di cronologia Riutilizzare una tabella di cronologia esistente
Autorizzazione richiesta Autorizzazione CONTROL nel database.

Autorizzazione CREATE TABLE nel database.

Autorizzazione ALTER negli schemi in cui viene creata la tabella di cronologia.
Autorizzazione CONTROL nella tabella originale modificata.

Autorizzazione CONTROL nella tabella di cronologia specificata come parte dell'istruzione ALTER TABLE.
Audit Il controllo indica che la tabella temporale è stata modificata e contemporaneamente è stata creata la tabella di cronologia. L'operazione potrebbe non riuscire a causa della mancanza di autorizzazioni per creare una tabella nel database, a causa della mancanza di autorizzazioni per la modifica dello schema per la tabella di cronologia o a causa della mancanza di autorizzazioni per la modifica della tabella temporale. Il controllo mostra che la tabella temporale è stata modificata, ma l'operazione ha richiesto l'accesso alla tabella di cronologia. L'operazione può non riuscire a causa della mancanza di autorizzazioni per la tabella di cronologia o per la tabella corrente.

Sicurezza dell'istruzione SELECT

L'autorizzazione SELECT è invariata per le istruzioni SELECT senza effetti sulla tabella di cronologia. Per le istruzioni SELECT che interessano la tabella di cronologia, l'autorizzazione SELECT è richiesta sia per la tabella corrente che per la tabella di cronologia.