Sicurezza di una tabella temporale
Si applica a: SQL Server 2016 (13.x) e versioni successive Database SQL di Azure Istanza gestita di SQL di Azure
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:
Principio | Descrizione |
---|---|
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
Operazione | Tabella corrente | Tabella di cronologia |
---|---|---|
DROP TABLE |
Non consentito | Non consentito |
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 |
Non consentito | N/D |
ALTER TABLE...ADD PERIOD |
N/D | 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 per le tabelle temporali
Funzionalità | Creare una nuova tabella di cronologia | Riutilizzare una tabella di cronologia esistente |
---|---|---|
È necessaria l'autorizzazione | Autorizzazione CREATE TABLE nel databaseAutorizzazione ALTER negli schemi in cui vengono create le tabelle corrente e di cronologia |
Autorizzazione CREATE TABLE nel databaseAutorizzazione 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. |
Controllo | 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
Funzionalità | Creare una nuova tabella di cronologia | Riutilizzare una tabella di cronologia esistente |
---|---|---|
È necessaria l'autorizzazione | 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 . |
Controllo | 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.
Contenuto correlato
- Tabelle temporali
- Introduzione alle tabelle temporali con controllo delle versioni di sistema
- Verifiche coerenza del sistema della tabella temporale
- Partizioni con tabelle temporali
- Considerazioni e limitazioni delle tabelle temporali
- Gestire la conservazione dei dati storici nelle tabelle temporali con controllo delle versioni di sistema
- Tabelle temporali con controllo delle versioni di sistema con tabelle ottimizzate per la memoria
- Funzioni e viste per i metadati delle tabelle temporali