Sicurezza di una tabella temporaleTemporal Table Security

QUESTO ARGOMENTO SI APPLICA A: sìSQL Server (a partire dalla versione 2016)sìDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Per comprendere il tema della sicurezza in riferimento alle tabelle temporali, è importante conoscere i principi di sicurezza che riguardano le tabelle temporali.To understand security as it applies to temporal tables, it is important to understand the security principals that apply to temporal tables. Dopo aver compreso questi principi è possibile procedere approfondendo il tema della sicurezza in relazione alle istruzioni CREATE TABLE, ALTER TABLEe SELECT .After you understand these security principles, you are ready to dive into the security around the CREATE TABLE, ALTER TABLE, and SELECT statements.

Principi di sicurezzaSecurity Principles

La tabella seguente descrive i principi di sicurezza che riguardano le tabelle temporali:The following table describes the security principles that apply to temporal tables:

PrincipioPrinciple DescrizioneDescription
L'abilitazione/disabilitazione del controllo delle versioni di sistema richiede i privilegi più elevati per gli oggetti interessatiEnabling/disabling system-versioning requires highest privileges on affected objects L'abilitazione e disabilitazione di SYSTEM_VERSIONING richiede l'autorizzazione CONTROL sia per la tabella corrente che per quella di cronologiaEnabling and disabling SYSTEM_VERSIONING requires CONTROL permission on both the current and the history table
I dati di cronologia non possono essere modificati direttamenteHistory data cannot be modified directly Quando SYSTEM_VERSIONING è ON, gli utenti non possono modificare i dati di cronologia indipendentemente dalle autorizzazioni effettive per la tabella corrente o di cronologia.When SYSTEM_VERSIONING is ON users cannot alter history data regardless of their actual permissions on current or the history table. Ciò vale sia per le modifiche dei dati che per quelle dello schema.This includes both data and schema modifications.
Per l'esecuzione di query sui dati di cronologia è richiesta l'autorizzazione SELECT per la tabella di cronologiaQuerying history data requires SELECT permission on the history table 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.Merely because a user has SELECT permission on the current table does not mean that they have SELECT permission on the history table.
Il controllo espone le operazioni che influiscono sulla tabella di cronologia in modi specifici:Audit surfaces operations affecting history table in specific ways: Il controllo sulla tabella di cronologia acquisisce regolarmente tutti i tentativi diretti di accesso ai dati (indipendentemente dal fatto che siano riusciti o meno).Auditing on history table regularly captures all direct attempts to access the data (regardless if they were successful or not).

SELECT con l'estensione per query temporali mostra che la tabella di cronologia è stata interessata da tale operazione.SELECT with temporal query extension shows that history table was affected with that operation.

Le operazioniCREATE/ALTER sulla tabella temporale espongono informazioni che indicano che il controllo delle autorizzazioni viene eseguito anche sulla tabella di cronologia.CREATE/ALTER temporal table expose information that permission check happens on history table as well. Il file di controllo conterrà record aggiuntivi per la tabella di cronologia.Audit file will contain additional record for history table.

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).DML operations on current table surface that history table was affected but additional_info provides necessary context (DML was result of system_versioning).

Esecuzione di operazioni sullo schemaPerforming Schema Operations

Quando SYSTEM_VERSIONING è impostato su ON, le operazioni di modifica dello schema sono limitate.When SYSTEM_VERSIONING is set to ON, schema modification operations are limited.

Operazioni ALTER sullo schema non consentiteDisallowed ALTER schema operations

OperazioneOperation Tabella correnteCurrent Table Tabella di cronologiaHistory Table
DROP TABLEDROP TABLE Non consentitaDisallowed Non consentitaDisallowed
ALTER TABLE…SWITCH PARTITIONALTER TABLE…SWITCH PARTITION Solo SWITCH IN (vedere Partizionamento con le tabelle temporali)SWITCH IN only (see Partitioning with Temporal Tables) Solo SWITCH OUT (vedere Partizionamento con le tabelle temporali)SWITCH OUT only (see Partitioning with Temporal Tables)
ALTER TABLE…DROP PERIODALTER TABLE…DROP PERIOD Non consentitaDisallowed -
ALTER TABLE…ADD PERIODALTER TABLE…ADD PERIOD - Non consentitaDisallowed

Operazioni ALTER TABLE consentiteAllowed ALTER TABLE operations

OperazioneOperation CorrenteCurrent CronologiaHistory
ALTER TABLE…REBUILDALTER TABLE…REBUILD Consentita (in modo indipendente)Allowed (independently) Consentita (in modo indipendente)Allowed (independently)
CREATE INDEXCREATE INDEX Consentita (in modo indipendente)Allowed (independently) Consentita (in modo indipendente)Allowed (independently)
CREATE STATISTICSCREATE STATISTICS Consentita (in modo indipendente)Allowed (independently) Consentita (in modo indipendente)Allowed (independently)

Sicurezza dell'istruzione CREATE TABLE per le tabelle temporaliSecurity of the CREATE Temporal TABLE Statement

Creare una nuova tabella di cronologiaCreate New History Table Riutilizzare una tabella di cronologia esistenteReuse Existing History Table
Autorizzazione necessariaPermission Required AutorizzazioneCREATE TABLE nel databaseCREATE TABLE permission in the database

AutorizzazioneALTER per gli schemi in cui vengono create le tabelle corrente e di cronologiaALTER permission on the schemas into which the current and history tables are being created
AutorizzazioneCREATE TABLE nel databaseCREATE TABLE permission in the database

AutorizzazioneALTER per lo schema in cui verrà creata la tabella corrente.ALTER permission on the schema in which the current table will be created.

AutorizzazioneCONTROL per la tabella di cronologia specificata come parte dell'istruzione CREATE TABLE per la creazione della tabella temporaleCONTROL permission on the history table specified as part of the CREATE TABLE statement creating the temporal table
ControlloAudit Dal controllo risulta che gli utenti hanno tentato di creare due oggetti.Audit shows that users attempted to create two objects. 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.Operation may fail due to lack of permissions to create a table in the database or due to lack of permissions to alter schemas for either table. Il controllo indica che la tabella temporale è stata creata.Audit shows that temporal table was created. 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.Operation may fail due to lack of permission to create a table in the database, due to lack of permissions to alter the schema for the temporal table, or to lack of permissions on the history table.

Sicurezza dell'istruzione ALTER TABLE SET (SYSTEM_VERSIONING ON/OFF) per le tabelle temporaliSecurity of the ALTER Temporal TABLE SET (SYSTEM_VERSIONING ON/OFF) Statement

Creare una nuova tabella di cronologiaCreate New History Table Riutilizzare una tabella di cronologia esistenteReuse Existing History Table
Autorizzazione necessariaPermission Required AutorizzazioneCONTROL nel databaseCONTROL permission in the database

AutorizzazioneCREATE TABLE nel databaseCREATE TABLE permission in the database

AutorizzazioneALTER per gli schemi in cui viene creata la tabella di cronologiaALTER permission on the schemas into which the history table is being created
AutorizzazioneCONTROL per la tabella originale modificataCONTROL permission on the original table which is altered

AutorizzazioneCONTROL per la tabella di cronologia specificata come parte dell'istruzione ALTER TABLE CONTROL permission on the history table specified as part of the ALTER TABLE statement
ControlloAudit Il controllo indica che la tabella temporale è stata modificata e contemporaneamente è stata creata la tabella di cronologia.Audit shows that the temporal table was altered and the history table was created at the same time. 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.Operation may fail due to lack of permissions to create a table in the database, due to lack of permissions to alter schema for history table, or due to lack of permission to modify temporal table. Il controllo indica che la tabella temporale è stata modificata, ma l'operazione ha richiesto l'accesso alla tabella di cronologia.Audit shows that temporal table was altered, but operation required access to history table. L'operazione potrebbe non riuscire a causa della mancanza di autorizzazioni per la tabella di cronologia o per la tabella corrente.Operation may fail due to lack of permissions on the history table or lack of permissions on the current table.

Sicurezza dell'istruzione SELECTSecurity of SELECT Statement

L'autorizzazioneSELECT è invariata per le istruzioni SELECT senza effetti sulla tabella di cronologia.SELECT permission is unchanged for SELECT statements that do not affect the history table. 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.For SELECT statements that affect the history table, SELECT permission is required on both the current table and the history table.

Questo articolo è stato utile?Did this Article Help You? Commenti e suggerimentiWe’re Listening

Quali informazioni si stanno cercando? La ricerca ha restituito i risultati desiderati?What information are you looking for, and did you find it? Microsoft incoraggia gli utenti a inviare i propri commenti per migliorare i contenutiWe’re listening to your feedback to improve the content. Inviare eventuali commenti all'indirizzo sqlfeedback@microsoft.comPlease submit your comments to sqlfeedback@microsoft.com

Vedere ancheSee Also

Tabelle temporali Temporal Tables
Introduzione alle tabelle temporali con controllo delle versioni di sistema Getting Started with System-Versioned Temporal Tables
Verifiche di coerenza del sistema della tabella temporale Temporal Table System Consistency Checks
Partizionamento con le tabelle temporali Partitioning with Temporal Tables
Considerazioni e limitazioni delle tabelle temporali Temporal Table Considerations and Limitations
Gestire la conservazione dei dati cronologici nelle tabelle temporali con controllo delle versioni di sistema Manage Retention of Historical Data in System-Versioned Temporal Tables
Tabelle temporali con controllo delle versioni di sistema con tabelle con ottimizzazione per la memoria System-Versioned Temporal Tables with Memory-Optimized Tables
Funzioni e viste per i metadati delle tabelle temporaliTemporal Table Metadata Views and Functions