Sicurezza di una tabella temporale
Si applica a: SQL Server 2016 (13.x) e alle sue versioni successive Database SQL di Azure Istanza 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
- Tabelle temporali
- Introduzione alle tabelle temporali con controllo delle versioni di sistema
- Verifiche di coerenza del sistema della tabella temporale
- Partizionamento con le tabelle temporali
- Considerazioni e limitazioni delle tabelle temporali
- Gestire la conservazione dei dati cronologici nelle tabelle temporali con controllo delle versioni di sistema
- Tabelle temporali con controllo delle versioni di sistema con tabelle con ottimizzazione per la memoria
- Funzioni e viste per i metadati delle tabelle temporali
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per