Sicurezza di una tabella temporale

Si applica a: SQL Server 2016 (13.x) e versioni successive Database SQL diIstanza gestita di SQL di Azure

Per comprendere il tema della sicurezza in riferimento alle tabelle temporali, è importante 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 TABLEe SELECT .

Principi di sicurezza

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

Principio Descrizione
L'abilitazione/disabilitazione del controllo delle versioni di sistema richiede i privilegi più elevati per gli oggetti interessati L'abilitazione e disabilitazione di SYSTEM_VERSIONING richiede 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. Ciò vale sia per le modifiche dei dati che per quelle dello schema.
Per l'esecuzione di query sui dati di cronologia è richiesta l'autorizzazione SELECT per la tabella di cronologia Il fatto che un utente abbia l'autorizzazione SELECT per la tabella corrente non significa che abbia l'autorizzazione SELECT per la tabella di cronologia.
Il controllo espone 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.

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

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

Esecuzione di operazioni sullo schema

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

Operazioni ALTER sullo schema non consentite

Operazione Tabella corrente Tabella di cronologia
DROP TABLE Non consentito Non consentito
ALTER TABLE...SWITCH PARTITION Solo SWITCH IN (vedere Partizionamento con le tabelle temporali) Solo SWITCH OUT (vedere Partizionamento con le tabelle temporali)
ALTER TABLE...DROP PERIOD Non consentito -
ALTER TABLE...ADD PERIOD - Non consentito

Operazioni ALTER TABLE consentite

Operazione Corrente Cronologia
ALTER TABLE...REBUILD Consentita (in modo indipendente) Consentita (in modo indipendente)
CREATE INDEX Consentita (in modo indipendente) Consentita (in modo indipendente)
CREATE STATISTICS Consentita (in modo indipendente) Consentita (in modo indipendente)

Sicurezza dell'istruzione CREATE TABLE per le tabelle temporali

Funzionalità Creare una nuova tabella di cronologia Riutilizzare una tabella di cronologia esistente
Autorizzazione necessaria AutorizzazioneCREATE TABLE nel database

AutorizzazioneALTER per gli schemi in cui vengono create le tabelle corrente e di cronologia
AutorizzazioneCREATE TABLE nel database

AutorizzazioneALTER per lo schema in cui verrà creata la tabella corrente.

AutorizzazioneCONTROL per la 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 può 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 indica che la tabella temporale è stata creata. L'operazione può 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 TABLE SET (SYSTEM_VERSIONING ON/OFF) per le tabelle temporali

Funzionalità Creare una nuova tabella di cronologia Riutilizzare una tabella di cronologia esistente
Autorizzazione necessaria AutorizzazioneCONTROL nel database

AutorizzazioneCREATE TABLE nel database

AutorizzazioneALTER per gli schemi in cui viene creata la tabella di cronologia
AutorizzazioneCONTROL per la tabella originale modificata

AutorizzazioneCONTROL per la 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 può 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 indica che la tabella temporale è stata modificata, ma l'operazione ha richiesto l'accesso alla tabella di cronologia. L'operazione potrebbe non riuscire a causa della mancanza di autorizzazioni per la tabella di cronologia o per la tabella corrente.

Sicurezza dell'istruzione SELECT

L'autorizzazioneSELECT è 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.

Vedi anche