Always Encrypted con enclave sicuriAlways Encrypted with secure enclaves

Si applica a:Applies to: sìSQL Server 2019 (15.x)SQL Server 2019 (15.x)yesSQL Server 2019 (15.x)SQL Server 2019 (15.x) - Solo Windows Sìdatabase SQL di AzureAzure SQL DatabaseYesdatabase SQL di AzureAzure SQL DatabaseSi applica a:Applies to: sìSQL Server 2019 (15.x)SQL Server 2019 (15.x)yesSQL Server 2019 (15.x)SQL Server 2019 (15.x) - Windows only Sìdatabase SQL di AzureAzure SQL DatabaseYesdatabase SQL di AzureAzure SQL Database

Always Encrypted con enclave sicure espande le funzionalità di confidential computing di Always Encrypted abilitando la crittografia sul posto e query riservate più avanzate.Always Encrypted with secure enclaves expands confidential computing capabilities of Always Encrypted by enabling in-place encryption and richer confidential queries. Always Encrypted con enclave sicure è disponibile in SQL Server 2019 (15.x)SQL Server 2019 (15.x) e in database SQL di AzureAzure SQL Database (in anteprima).Always Encrypted with secure enclaves is available in SQL Server 2019 (15.x)SQL Server 2019 (15.x) and in database SQL di AzureAzure SQL Database (in preview).

Introdotta in database SQL di AzureAzure SQL Database nel 2015 e in SQL Server 2016 (13.x)SQL Server 2016 (13.x), la funzionalità Always Encrypted protegge la riservatezza dei dati sensibili da malware e utenti con privilegi elevati non autorizzati: amministratori di database, amministratori di computer, amministratori di cloud o altri utenti che possono accedere in modo legittimo a istanze del server, hardware e così via, ma che non dovrebbero avere accesso ad alcuni o a tutti i dati effettivi.Introduced in database SQL di AzureAzure SQL Database in 2015 and in SQL Server 2016 (13.x)SQL Server 2016 (13.x), Always Encrypted protects the confidentiality of sensitive data from malware and high-privileged unauthorized users: DBAs, computer admins, cloud admins, or anyone else who has legitimate access to server instances, hardware, etc., but should not have access to some or all of the actual data.

Senza i miglioramenti illustrati in questo articolo, Always Encrypted protegge i dati crittografandoli sul lato client e non consentendo mai ai dati o alle chiavi di crittografia corrispondenti di essere visualizzate come testo non crittografato all'interno del Motore di databaseDatabase Engine.Without the enhancements discussed in this article, Always Encrypted protects the data by encrypting it on the client side and never allowing the data or the corresponding cryptographic keys to appear in plaintext inside the Motore di databaseDatabase Engine. Di conseguenza, le funzionalità per le colonne crittografate all'interno del database sono soggette a notevoli restrizioni.As a result, the functionality on encrypted columns inside the database is severely restricted. Le uniche operazioni che Motore di databaseDatabase Engine può eseguire sui dati crittografati sono i confronti di uguaglianza (disponibili solo con la crittografia deterministica).The only operations the Motore di databaseDatabase Engine can perform on encrypted data are equality comparisons (only available with deterministic encryption). Tutte le altre operazioni, tra cui le operazioni di crittografia (crittografia iniziale dei dati o rotazione delle chiavi) e le query più avanzate (ad esempio, criteri di ricerca), non sono supportate all'interno del database.All other operations, including cryptographic operations (initial data encryption or key rotation) and richer queries (for example, pattern matching) are not supported inside the database. Gli utenti devono spostare i dati all'esterno del database per eseguire queste operazioni sul lato client.Users need to move their data outside of the database to perform these operations on the client-side.

Always Encrypted con enclave sicure supera queste limitazioni, consentendo l'esecuzione di alcuni calcoli su dati di testo non crittografato all'interno di un'enclave sicura sul lato server.Always Encrypted with secure enclaves addresses these limitations by allowing some computations on plaintext data inside a secure enclave on the server side. Un'enclave sicura è un'area protetta della memoria all'interno del processo del Motore di databaseDatabase Engine.A secure enclave is a protected region of memory within the Motore di databaseDatabase Engine process. L'enclave sicura viene visualizzata come black box per il resto di Motore di databaseDatabase Engine e altri processi nel computer host.The secure enclave appears as an opaque box to the rest of the Motore di databaseDatabase Engine and other processes on the hosting machine. Non vi è alcun modo per visualizzare dati o codice all'interno dell'enclave dall'esterno, anche con un debugger.There is no way to view any data or code inside the enclave from the outside, even with a debugger. Queste proprietà rendono l'enclave sicura un ambiente di esecuzione attendibile che può accedere in modo sicuro alle chiavi crittografiche e ai dati sensibili in testo non crittografato, senza compromettere la riservatezza dei dati.These properties make the secure enclave a trusted execution environment that can safely access cryptographic keys and sensitive data in plaintext, without compromising data confidentiality.

Always Encrypted usa gli enclave sicuri come illustrato nel diagramma seguente:Always Encrypted uses secure enclaves as illustrated in the following diagram:

flusso di dati

Durante l'analisi di un'istruzione Transact-SQL inviata da un'applicazione, il Motore di databaseDatabase Engine determina se l'istruzione contiene operazioni su dati crittografati che richiedono l'uso dell'enclave sicura.When parsing a Transact-SQL statement submitted by an application, the Motore di databaseDatabase Engine determines if the statement contains any operations on encrypted data that require the use of the secure enclave. Per tali istruzioni:For such statements:

  • Il driver client invia le chiavi di crittografia della colonna necessarie per le operazioni all'enclave sicura (tramite un canale sicuro) e invia l'istruzione per l'esecuzione.The client driver sends the column encryption keys required for the operations to the secure enclave (over a secure channel), and submits the statement for execution.

  • Durante l'elaborazione dell'istruzione, il Motore di databaseDatabase Engine delega le operazioni di crittografia o i calcoli sulle colonne crittografate all'enclave sicura.When processing the statement, the Motore di databaseDatabase Engine delegates cryptographic operations or computations on encrypted columns to the secure enclave. Se necessario, l'enclave decrittografa i dati ed esegue i calcoli in testo non crittografato.If needed, the enclave decrypts the data and performs computations on plaintext.

Durante l'elaborazione dell'istruzione, sia i dati che le chiavi di crittografia della colonna non vengono esposte come testo non crittografato nel motore Motore di databaseDatabase Engine al di fuori dell'enclave sicura.During statement processing, both the data and the column encryption keys are not exposed in plaintext in the Motore di databaseDatabase Engine outside of the secure enclave.

Tecnologie di enclave supportateSupported enclave technologies

In SQL Server 2019 (15.x)SQL Server 2019 (15.x) Always Encrypted con enclave sicuri usa gli enclave di memoria sicuri di tipo sicurezza basata su virtualizzazione in Windows, noti anche come enclave in modalità protetta virtuale o VSM.In SQL Server 2019 (15.x)SQL Server 2019 (15.x), Always Encrypted with secure enclaves uses Virtualization-based Security (VBS) secure memory enclaves (also known as Virtual Secure Mode, or VSM enclaves) in Windows.

In database SQL di AzureAzure SQL Database, Always Encrypted con enclave sicure usa le enclave Intel Software Guard Extensions (Intel SGX).In database SQL di AzureAzure SQL Database, Always Encrypted with secure enclaves uses Intel Software Guard Extensions (Intel SGX) enclaves. Intel SGX è una tecnologia ambientale di esecuzione attendibile basata su hardware supportata nei database che usano la configurazione hardware della serie DC.Intel SGX is a hardware-based trusted execution environment technology supported in databases that use the DC-series hardware configuration.

Attestazione delle enclave sicureSecure enclave attestation

L'enclave sicura all'interno del Motore di databaseDatabase Engine può accedere ai dati sensibili e alle chiavi di crittografia della colonna in testo non crittografato.The secure enclave inside the Motore di databaseDatabase Engine can access sensitive data and the column encryption keys in plaintext. Pertanto, prima di inviare al Motore di databaseDatabase Engine un'istruzione che comporta calcoli dell'enclave, il driver client all'interno dell'applicazione deve verificare che l'enclave sicura sia una vera enclave con sicurezza basata su virtualizzazione o SGX e che il codice in esecuzione nell'enclave sicura sia la libreria di Always Encrypted originale che implementa algoritmi di crittografia di Always Encrypted per la crittografia sul posto e le operazioni supportate nelle query riservate.Therefore, before submitting a statement that involves enclave computations to the Motore di databaseDatabase Engine, the client driver inside the application must verify the secure enclave is a genuine VBS or SGX enclave and the code running inside the secure enclave is the genuine Always Encrypted library that implements Always Encrypted cryptographic algorithms for in-place encryption and operations supported in confidential queries.

Il processo di verifica dell'enclave è chiamato attestazione dell'enclave e implica che un driver client all'interno dell'applicazione e Motore di databaseDatabase Engine contattino un servizio di attestazione esterno.The process of verifying the enclave is called enclave attestation, and it involves both a client driver within the application and Motore di databaseDatabase Engine contacting an external attestation service. I dettagli specifici del processo di attestazione variano a seconda del tipo dell'enclave (sicurezza basata su virtualizzazione o SGX) e del servizio di attestazione.The specifics of the attestation process depend on the type of the enclave (VBS or SGX) and the attestation service.

Il processo di attestazione per le enclave sicure con sicurezza basata su virtualizzazione in SQL Server 2019 (15.x)SQL Server 2019 (15.x) è l'attestazione di runtime di System Guard di Windows Defender, che richiede il servizio Sorveglianza host come servizio di attestazione.The attestation process for VBS secure enclaves in SQL Server 2019 (15.x)SQL Server 2019 (15.x) is Windows Defender System Guard runtime attestation, which requires Host Guardian Service (HGS) as an attestation service.

L'attestazione delle enclave di Intel SGX nel database SQL di AzureAzure SQL Database richiede l'attestazione di Microsoft Azure.The attestation of Intel SGX enclaves in database SQL di AzureAzure SQL Database requires Microsoft Azure Attestation.

Nota

SQL Server 2019 (15.x)SQL Server 2019 (15.x) non supporta l'attestazione di Microsoft Azure.does not support Microsoft Azure Attestation. Il servizio Sorveglianza host è l'unica soluzione di attestazione supportata per le enclave con sicurezza basata su virtualizzazione in SQL Server 2019 (15.x)SQL Server 2019 (15.x).Host Guardian Service is the only attestation solution supported for VBS enclaves in SQL Server 2019 (15.x)SQL Server 2019 (15.x).

Driver client supportatiSupported client drivers

Per usare Always Encrypted con enclave sicuri, un'applicazione deve usare un driver client che supporta la funzionalità.To use Always Encrypted with secure enclaves, an application must use a client driver that supports the feature. Configurare l'applicazione e il driver client per abilitare i calcoli dell'enclave e l'attestazione dell'enclave.Configure the application and the client driver to enable enclave computations and enclave attestation. Per informazioni dettagliate, incluso l'elenco dei driver client supportati, vedere Sviluppare applicazioni con Always Encrypted.For details, including the list of supported client drivers, see Develop applications using Always Encrypted.

TerminologiaTerminology

Chiavi abilitate per l'enclaveEnclave-enabled keys

Always Encrypted con enclave sicuri introduce il concetto di chiavi abilitate per l'enclave:Always Encrypted with secure enclaves introduces the concept of enclave-enabled keys:

  • Chiave master di colonna abilitata per l'enclave - Chiave master della colonna con la proprietà ENCLAVE_COMPUTATIONS specificata nell'oggetto metadati chiave master della colonna all'interno del database.Enclave-enabled column master key - a column master key that has the ENCLAVE_COMPUTATIONS property specified in the column master key metadata object inside the database. L'oggetto metadati chiave master della colonna deve anche contenere una firma valida delle proprietà dei metadati.The column master key metadata object must also contain a valid signature of the metadata properties. Per altre informazioni, vedere CREATE COLUMN MASTER KEY (Transact-SQL).For more information, see CREATE COLUMN MASTER KEY (Transact-SQL)
  • Chiave di crittografia di colonna abilitata per l'enclave - Chiave di crittografia di colonna crittografata con una chiave master della colonna abilitata per l'enclave.Enclave-enabled column encryption key - a column encryption key that is encrypted with an enclave-enabled column master key. Solo le chiavi di crittografia di colonna abilitata per l'enclave possono essere usate per i calcoli all'interno dell'enclave sicura.Only enclave-enabled column encryption keys can be used for computations inside the secure enclave.

Per altre informazioni, vedere Gestire le chiavi per Always Encrypted con enclave sicuri.For more information, see Manage keys for Always Encrypted with secure enclaves.

Colonne abilitate per l'enclaveEnclave-enabled columns

Una colonna abilitata per l'enclave è una colonna del database crittografata con una chiave di crittografia di colonna abilitata per l'enclave.An enclave-enabled column is a database column encrypted with an enclave-enabled column encryption key.

Funzionalità di confidential computing per le colonne abilitate per l'enclaveConfidential computing capabilities for enclave-enabled columns

I due principali vantaggi di Always Encrypted con le enclave sicure sono la crittografia sul posto e le query riservate avanzate.The two key benefits of Always Encrypted with secure enclaves are in-place encryption and rich confidential queries.

Crittografia sul postoIn-place encryption

La crittografia sul posto consente di eseguire operazioni crittografiche sulle colonne del database all'interno dell'enclave sicura, senza spostare i dati all'esterno del database.In-place encryption allows cryptographic operations on database columns inside the secure enclave, without moving the data outside of the database. La crittografia sul posto migliora le prestazioni e l'affidabilità della crittografia.In-place encryption improves the performance and the reliability of encryption. È possibile eseguire la crittografia sul posto usando l'istruzione ALTER TABLE (Transact-SQL).You can perform in-place encryption using the ALTER TABLE (Transact-SQL) statement.

Le operazioni crittografiche supportate sul posto sono:The cryptographic operations supported in-place are:

  • Crittografia di una colonna di testo non crittografato con una chiave di crittografia della colonna abilitata per l'enclave.Encrypting a plaintext column with an enclave-enabled column encryption key.
  • Riapplicazione della crittografia a una colonna crittografata abilitata per l'enclave per:Re-encrypting an encrypted enclave-enabled column to:
    • Ruotare una chiave di crittografia della colonna: crittografare nuovamente la colonna con una nuova chiave di crittografia della colonna abilitata per l'enclave.Rotate a column encryption key - re-encrypt the column with a new enclave-enabled column encryption key.
    • Cambiare il tipo di crittografia di una colonna abilitata per l'enclave, ad esempio da deterministica a casuale.Change the encryption type of an enclave-enabled column, for example, from deterministic to randomized.
  • Decrittografia dei dati archiviati in una colonna abilitata per l'enclave (conversione della colonna in colonna di testo non crittografato).Decrypting data stored in an enclave-enabled column (converting the column into a plaintext column).

La crittografia sul posto è consentita sia con la crittografia deterministica che con quella casuale, purché le chiavi di crittografia della colonna usate in un'operazione di crittografia siano abilitate per l'enclave.In-place encryption is allowed with both deterministic and randomized encryption, as long as the column encryption keys involved in a cryptographic operation are enclave-enabled.

Query riservateConfidential queries

Le query riservate sono query DML che comportano operazioni sulle colonne abilitate per l'enclave, eseguite all'interno dell'enclave sicura.Confidential queries are DML queries that involve operations on enclave-enabled columns performed inside the secure enclave.

Le operazioni supportate all'interno delle enclave sicure sono:The operations supported inside the secure enclaves are:

OperazioneOperation SQL Server 2019 (15.x)SQL Server 2019 (15.x) database SQL di AzureAzure SQL Database
Operatori di confrontoComparison Operators SupportatoSupported SupportatoSupported
BETWEEN (Transact-SQL)BETWEEN (Transact-SQL) SupportatoSupported SupportatoSupported
IN (Transact-SQL)IN (Transact-SQL) SupportatoSupported SupportatoSupported
LIKE (Transact-SQL)LIKE (Transact-SQL) SupportatoSupported SupportatoSupported
DISTINCTDISTINCT SupportatoSupported SupportatoSupported
JoinJoins Sono supportati solo i join annidati di cicliOnly nested loop joins supported SupportatoSupported
Clausola SELECT - ORDER BY (Transact-SQL)SELECT - ORDER BY Clause (Transact-SQL) Non supportatoNot supported SupportatoSupported
SELECT - GROUP BY- Transact-SQLSELECT - GROUP BY- Transact-SQL Non supportatoNot supported SupportatoSupported

Nota

Le operazioni precedenti sono supportate nelle enclave sicure solo sulle colonne abilitate per le enclave che usano la crittografia casuale e non la crittografia deterministica.The above operations are supported in secure enclaves only on enclave-enabled columns using randomized encryption, and not deterministic encryption. L'operatore per il confronto di uguaglianza rimane l'unico operatore di calcolo supportato sulle colonne che usano la crittografia deterministica e viene eseguito tramite il confronto del testo crittografato al di fuori dell'enclave, indipendentemente dal fatto che la colonna sia abilitata o meno per l'enclave.Equality comparison remains the only computation supported on columns using deterministic encryption, and it's performed by comparing the ciphertext outside of the enclave, regardless if the column is enclave-enabled or not. La crittografia deterministica supporta le operazioni seguenti che usano gli operatori per il confronto di uguaglianza:Deterministic encryption supports the following operations involving equality comparisons:

In SQL Server 2019 (15.x)SQL Server 2019 (15.x), le query riservate che usano le enclave su una colonna di stringhe di caratteri (char, nchar) richiedono che la colonna usi regole di confronto binary2 (BIN2) per l'ordinamento.In SQL Server 2019 (15.x)SQL Server 2019 (15.x), confidential queries using enclaves on a character string column (char, nchar) require the column uses a binary2 sort order (BIN2) collation. In database SQL di AzureAzure SQL Database, le query riservate sulle stringhe di caratteri richiedono regole di confronto BIN2 o UTF-8.In database SQL di AzureAzure SQL Database, confidential queries on character strings require a BIN2 collation or a UTF-8 collation.

Indici sulle colonne abilitate per l'enclaveIndexes on enclave-enabled columns

È possibile creare indici non cluster sulle colonne abilitate per l'enclave tramite la crittografia casuale per velocizzare l'esecuzione delle query DML riservate che usano l'enclave sicura.You can create nonclustered indexes on enclave-enabled columns using randomized encryption to make confidential DML queries using the secure enclave run faster.

Per garantire che un indice su una colonna crittografata tramite la crittografia casuale non determini una perdita di dati sensibili, i valori di chiave nella struttura dei dati di indice (albero B) sono crittografati e ordinati in base ai relativi valori di testo non crittografato.To ensure an index on a column that is encrypted using randomized encryption doesn't leak sensitive data, the key values in the index data structure (B-tree) are encrypted and sorted based on their plaintext values. L'ordinamento in base al valore di testo non crittografato è utile anche per l'elaborazione di query all'interno dell'enclave.Sorting by the plaintext value is also useful for processing queries inside the enclave. Quando l'utilità di esecuzione query nel Motore di databaseDatabase Engine usa un indice su una colonna crittografata per i calcoli all'interno dell'enclave, esegue una ricerca nell'indice dei valori specifici archiviati nella colonna.When the query executor in the Motore di databaseDatabase Engine uses an index on an encrypted column for computations inside the enclave, it searches the index to look up specific values stored in the column. Ogni ricerca può implicare più confronti.Each search may involve multiple comparisons. L'utilità di esecuzione query delega ogni confronto all'enclave, che decrittografa un valore archiviato nella colonna e il valore della chiave di indice crittografata da confrontare, esegue il confronto in testo non crittografato e restituisce il risultato del confronto all'utilità di esecuzione.The query executor delegates each comparison to the enclave, which decrypts a value stored in the column and the encrypted index key value to be compared, it performs the comparison on plaintext and it returns the result of the comparison to the executor.

La creazione di indici su colonne che usano la crittografia casuale e non sono abilitate per l'enclave non è supportata.Creating indexes on columns that use randomized encryption and are not enclave-enabled remains unsupported.

Un indice su una colonna con crittografia deterministica è ordinato in base al testo crittografato (non al testo non crittografato), indipendentemente dal fatto che la colonna sia abilitata per l'enclave o meno.An index on a column using deterministic encryption is sorted based on ciphertext (not plaintext), regardless if the column is enclave-enabled or not.

Per altre informazioni, vedere Creare e usare indici in colonne usando Always Encrypted con enclave sicuri.For more information, see Create and use indexes on columns using Always Encrypted with secure enclaves. Per informazioni generali sul funzionamento dell'indicizzazione nel Motore di databaseDatabase Engine, vedere l'articolo Descrizione di indici cluster e non cluster.For general information on how indexing in Motore di databaseDatabase Engine works, see the article, Clustered and Nonclustered Indexes Described.

Ripristino del databaseDatabase recovery

Se si verifica un errore in un'istanza di SQL Server, i relativi database possono rimanere in uno stato in cui i file di dati possono contenere alcune modifiche da transazioni incomplete.If an instance of SQL Server fails, its databases may be left in a state where the data files may contain some modifications from incomplete transactions. Quando l'istanza viene avviata, viene eseguito un processo denominato ripristino del database, che implica il rollback di tutte le transazioni incomplete rilevate nel log delle transazioni per salvaguardare l'integrità del database.When the instance is started, it runs a process called database recovery, which involves rolling back every incomplete transaction found in the transaction log to make sure the integrity of the database is preserved. Se una transazione incompleta ha apportato modifiche a un indice, anche tali modifiche devono essere annullate.If an incomplete transaction made any changes to an index, those changes also need to be undone. Ad esempio, potrebbe essere necessario rimuovere o reinserire alcuni valori di chiave nell'indice.For example, some key values in the index may need to be removed or reinserted.

Importante

Microsoft consiglia di abilitare il ripristino accelerato del database nel database prima di creare il primo indice su una colonna abilitata per l'enclave crittografata con la crittografia casuale.Microsoft strongly recommends enabling Accelerated database recovery (ADR) for your database, before creating the first index on an enclave-enabled column encrypted with randomized encryption. Il ripristino accelerato del database è abilitato per impostazione predefinita nel database SQL di AzureAzure SQL Database, ma non in SQL Server 2019 (15.x)SQL Server 2019 (15.x).ADR is enabled by default in database SQL di AzureAzure SQL Database, but not in SQL Server 2019 (15.x)SQL Server 2019 (15.x).

Con il tradizionale processo di ripristino del database (che segue il modello di ripristino ARIES), per annullare una modifica a un indice, SQL Server deve attendere che un'applicazione fornisca all'enclave la chiave di crittografia della colonna, operazione che può richiedere molto tempo.With the traditional database recovery process (that follows the ARIES recovery model), to undo a change to an index, SQL Server needs to wait until an application provides the column encryption key for the column to the enclave, which can take a long time. Il ripristino accelerato del database riduce notevolmente il numero di operazioni di annullamento che devono essere rinviate perché una chiave di crittografia della colonna non è disponibile nella cache all'interno dell'enclave.Accelerated database recovery (ADR) dramatically reduces the number of undo operations that must be deferred because a column encryption key is not available in the cache inside the enclave. Di conseguenza, incrementa notevolmente la disponibilità del database, riducendo al minimo la possibilità che una nuova transazione resti bloccata.Consequently, it substantially increases the database availability by minimizing a chance for a new transaction to get blocked. Con il ripristino accelerato del database abilitato, SQL Server potrebbe comunque richiedere una chiave di crittografia della colonna per completare la pulizia delle versioni precedenti dei dati, ma esegue tale operazione come un'attività in background che non influisce sulla disponibilità delle transazioni del database o degli utenti.With ADR enabled, SQL Server still may need a column encryption key to complete cleaning up old data versions but it does that as a background task that does not impact the availability of the database or user transactions. Potrebbero tuttavia essere visualizzati messaggi di errore nel log degli errori, che indicano operazioni di pulizia non riuscite a causa di una chiave di crittografia della colonna mancante.You may, however, see error messages in the error log, indicating failed cleanup operations due to a missing column encryption key.

Considerazioni relative alla sicurezzaSecurity considerations

Le considerazioni sulla sicurezza seguenti si applicano ad Always Encrypted con enclave sicuri.The following security considerations apply to Always Encrypted with secure enclaves.

  • La sicurezza dei dati all'interno dell'enclave dipende da un protocollo di attestazione e un servizio di attestazione.The security of your data inside the enclave depends on an attestation protocol and an attestation service. È pertanto necessario assicurarsi che il servizio di attestazione e i criteri di attestazione applicati da tale servizio vengano gestiti da un amministratore attendibile.Therefore, you need to ensure the attestation service and attestation policies, the attestation service enforces, are managed by a trusted administrator. Inoltre, i servizi di attestazione in genere supportano diversi criteri e protocolli di attestazione, alcuni dei quali eseguono una verifica minima dell'enclave e del relativo ambiente e sono progettati per il test e lo sviluppo.Also, attestation services typically support different policies and attestation protocols, some of which perform minimal verification of the enclave and its environment, and are designed for testing and development. Seguire attentamente le linee guida specifiche per il servizio di attestazione in uso, in modo da assicurarsi di usare le configurazioni e i criteri consigliati per le distribuzioni di produzione.Closely follow the guidelines specific to your attestation service to ensure you are using the recommended configurations and policies for your production deployments.
  • La crittografia di una colonna tramite la crittografia casuale con una chiave di crittografia della colonna abilitata per l'enclave può comportare la divulgazione dell'ordine dei dati archiviati nella colonna, in quanto tali colonne supportano i confronti degli intervalli.Encrypting a column using randomized encryption with an enclave-enabled column encryption key may result in leaking the order of data stored in the column, as such columns support range comparisons. Ad esempio, se una colonna crittografata che contiene gli stipendi dei dipendenti dispone di un indice, un amministratore di database malintenzionato potrebbe analizzare l'indice per trovare il valore crittografato dello stipendio massimo e identificare la persona con lo stipendio massimo (presupponendo che il nome della persona non sia crittografato).For example, if an encrypted column, containing employee salaries, has an index, a malicious DBA could scan the index to find the maximum encrypted salary value and identify a person with the maximum salary (assuming the name of the person is not encrypted).
  • Se si usa Always Encrypted per proteggere i dati sensibili dall'accesso non autorizzato da parte degli amministratori di database, non condividere le chiavi master della colonna o le chiavi di crittografia della colonna con gli amministratori di database.If you use Always Encrypted to protect sensitive data from unauthorized access by DBAs, do not share the column master keys or column encryption keys with the DBAs. Un amministratore di database può gestire gli indici nelle colonne crittografate senza avere accesso diretto alle chiavi, sfruttando la cache delle chiavi di crittografia di colonna all'interno dell'enclave.A DBA can manage indexes on encrypted columns without having direct access to the keys, by leveraging the cache of column encryption keys inside the enclave.

Considerazioni su continuità aziendale, ripristino di emergenza e migrazione dei datiConsiderations for business continuity, disaster recovery, and data migration

Quando si configura una soluzione di disponibilità elevata o di ripristino di emergenza per un database che usa Always Encrypted con enclave sicure, verificare che tutte le repliche del database possano usare un'enclave sicura.When configuring a high availability or disaster recovery solution for a database using Always Encrypted with secure enclaves, make sure that all database replicas can use a secure enclave. Se è disponibile un'enclave per la replica primaria, ma non per la replica secondaria, eventuali istruzioni che provano a usare la funzionalità di Always Encrypted con enclave sicure avranno esito negativo dopo il failover.If an enclave is available for the primary replica, but not for the secondary replica, any statement that attempts to use the functionality of Always Encrypted with secure enclaves will fail after the failover.

Quando si esegue la copia o la migrazione di un database che usa Always Encrypted con enclave sicure, verificare che l'ambiente di destinazione supporti sempre le enclave.When you copy or migrate a database using Always Encrypted with secure enclaves, make sure the target environment always supports enclaves. In caso contrario, le istruzioni che usano le enclave non funzioneranno sulla copia o sul database di cui è stata eseguita la migrazione.Otherwise, statements that use enclaves will not work on the copy or the migrated database.

Occorre tenere presenti queste considerazioni specifiche:Here are the specific considerations you should keep in mind:

  • SQL ServerSQL Server

    • Quando si configura un gruppo di disponibilità Always On, assicurarsi che ogni istanza di SQL Server che ospita un database nel gruppo di disponibilità supporti Always Encrypted con enclave sicure e che siano state configurate un'enclave e un'attestazione.When configuring an Always On availability group, make sure that each SQL Server instance hosting a database in the availability group support Always Encrypted with secure enclaves, and have an enclave and attestation configured.
    • Quando si ripristina un file di backup di un database che usa la funzionalità Always Encrypted con enclave sicure in un'istanza di SQL Server in cui non è configurata l'enclave, l'operazione di ripristino avrà esito positivo e tutte le funzionalità che non usano l'enclave saranno disponibili.When restoring from a backup file of a database that uses the functionality of Always Encrypted with secure enclaves on a SQL Server instance that doesn't have the enclave configured, the restore operation will succeed and all the functionality that doesn't rely on the enclave will be available. Tuttavia, tutte le istruzioni successive che usano la funzionalità dell'enclave avranno esito negativo e gli indici sulle colonne abilitate per l'enclave che usano la crittografia casuale non saranno più validi.However, any subsequent statement using the enclave functionality will fail, and indexes on enclave-enabled columns using randomized encryption will become invalid. Lo stesso vale quando si collega un database con Always Encrypted con enclave sicure nell'istanza in cui non è configurata l'enclave.The same applies when attaching a database using Always Encrypted with secure enclaves on the instance that doesn't have the enclave configured.
    • Se il database include indici sulle colonne abilitate per l'enclave con crittografia casuale, assicurarsi di abilitare il ripristino accelerato del database nel database prima di creare un backup del database.If your database contains indexes on enclave-enabled columns using randomized encryption, make sure to enable Accelerated database recovery (ADR) in the database before creating a database backup. Il ripristino accelerato del database garantirà che il database, inclusi gli indici, sarà immediatamente disponibile dopo il ripristino del database.ADR will ensure the database, including the indexes, is available immediately after you restore the database. Per altre informazioni, vedere Ripristino del database.For more information, see Database Recovery.
  • Database SQL di AzureAzure SQL Database

    • Quando si configura la replica geografica attiva, verificare che un database secondario supporti le enclave sicure, se il database primario le supporta.When configuring active geo-replication, make sure a secondary database supports secure enclaves, if the primary database does.

Sia in SQL Server che nel database SQL di Azure, quando si esegue la migrazione del database tramite un file con estensione bacpac, è necessario accertarsi di eliminare tutti gli indici per le colonne abilitate per l'enclave con crittografia casuale prima di creare il file con estensione bacpac.In both SQL Server and Azure SQL Database, when you migrate your database using a bacpac file, you need to make sure you drop all indexes for enclave-enabled columns using randomized encryption before creating the bacpac file.

Limitazioni noteKnown limitations

Always Encrypted con enclave sicure risolve alcune limitazioni di Always Encrypted supportando la crittografia sul posto e query riservate più avanzate con indici, come illustrato in Funzionalità di confidential computing per le colonne abilitate per l'enclave.Always Encrypted with secure enclaves addresses some limitations of Always Encrypted by supporting in-place encryption and richer confidential queries with indexes, as explained in Confidential computing capabilities for enclave-enabled columns.

Tutte le altre limitazioni per Always Encrypted elencate in Informazioni sulle funzionalità si applicano anche ad Always Encrypted con enclave sicure.All other limitations for Always Encrypted listed in Feature Details also apply to Always Encrypted with secure enclaves.

Le limitazioni seguenti sono specifiche per Always Encrypted con enclave sicuri:The following limitations are specific to Always Encrypted with secure enclaves:

  • Non è possibile creare indici cluster sulle colonne abilitate per l'enclave che usano la crittografia casuale.Clustered indexes can't be created on enclave-enabled columns using randomized encryption.
  • Le colonne abilitate per l'enclave che usano la crittografia casuale non possono essere colonne chiave primaria e non è possibile farvi riferimento da vincoli di chiave esterna o vincoli di chiave univoca.Enclave-enabled columns using randomized encryption can't be primary key columns and cannot be referenced by foreign key constraints or unique key constraints.
  • In SQL Server 2019 (15.x)SQL Server 2019 (15.x) (questa limitazione non si applica al database SQL di AzureAzure SQL Database) solo i join a cicli annidati (tramite indici, se disponibili) sono supportati nelle colonne abilitate per l'enclave che usano la crittografia casuale.In SQL Server 2019 (15.x)SQL Server 2019 (15.x) (this limitation does not apply to database SQL di AzureAzure SQL Database) only nested loop joins (using indexes, if available) are supported on enclave-enabled columns using randomized encryption. Per informazioni su altre differenze tra i diversi prodotti, vedere Query riservate.For information about other differences among different products, see Confidential queries.
  • Non è possibile combinare le operazioni di crittografia sul posto con qualsiasi altra modifica dei metadati di colonna, ad eccezione della modifica delle regole di confronto all'interno della stessa tabella codici e del supporto dei valori Null.In-place cryptographic operations cannot be combined with any other changes of column metadata, except changing a collation within the same code page and nullability. Ad esempio, non è possibile crittografare, crittografare nuovamente o decrittografare una colonna E modificare un tipo di dati della colonna in un'unica istruzione Transact-SQL ALTER TABLE/ALTER COLUMN.For example, you cannot encrypt, re-encrypt, or decrypt a column AND change a data type of the column in a single ALTER TABLE/ALTER COLUMN Transact-SQL statement. Usare due istruzioni separate.Use two separate statements.
  • L'uso di chiavi abilitate per l'enclave per le colonne in tabelle in memoria non è supportato.Using enclave-enabled keys for columns in in-memory tables isn't supported.
  • Le espressioni che definiscono le colonne calcolate non possono eseguire alcun calcolo sulle colonne abilitate per le enclave usando la crittografia casuale (anche se i calcoli sono tra le operazioni supportate elencate in Query riservate).Expressions defining computed columns cannot perform any computations on enclave-enabled columns using randomized encryption (even if the computations are among the supported operations listed in Confidential queries).
  • I caratteri di escape non sono supportati nei parametri dell'operatore LIKE nelle colonne abilitate per l'enclave che usano la crittografia casuale.Escape characters are not supported in parameters of the LIKE operator on enclave-enabled columns using randomized encryption.
  • Le query con l'operatore LIKE o un operatore di confronto con un parametro di query che usa uno dei seguenti tipi di dati (che dopo la crittografia, diventano oggetti di grandi dimensioni) ignorano gli indici ed eseguono scansioni di tabella.Queries with the LIKE operator or a comparison operator that has a query parameter using one of the following data types (that become large objects after encryption) ignore indexes and perform table scans.
    • nchar[n] e nvarchar[n], se n è maggiore di 3967.nchar[n] and nvarchar[n], if n is greater than 3967.
    • char[n], varchar[n], binary[n], varbinary[n], se n è maggiore di 7935.char[n], varchar[n], binary[n], varbinary[n], if n is greater than 7935.
  • Limitazioni degli strumenti:Tooling limitations:
    • Gli unici archivi di chiavi supportati per l'archiviazione di chiavi master della colonna abilitate per l'enclave sono Archivio certificati Windows e Azure Key Vault.The only supported key stores for storing enclave-enabled column master keys are Windows Certificate Store and Azure Key Vault.
    • L'importazione e l'esportazione di database che contengono chiavi abilitate per l'enclave non sono supportate.Importing/exporting databases containing enclave-enabled keys is not supported.
    • Per attivare un'operazione di crittografia sul posto tramite ALTER TABLE/ALTER COLUMN, è necessario eseguire l'istruzione in una finestra di query in SSMS oppure è possibile scrivere un programma personalizzato che esegue l'istruzione.To trigger an in-place cryptographic operation via ALTER TABLE/ALTER COLUMN, you need to issue the statement using a query window in SSMS, or you can write your own program that issues the statement. Il cmdlet Set-SqlColumnEncryption nel modulo SqlServer di PowerShell e la procedura guidata Always Encrypted in SQL Server Management Studio attualmente non supportano la crittografia sul posto, ma spostano i dati fuori dal database per le operazioni di crittografia, anche se le chiavi di crittografia di colonna usate per le operazioni sono abilitate per l'enclave.Currently, the Set-SqlColumnEncryption cmdlet in the SqlServer PowerShell module and the Always Encrypted wizard in SQL Server Management Studio do not support in-place encryption - they move the data out of the database for cryptographic operations, even if the column encryption keys used for the operations are enclave-enabled.

Passaggi successiviNext steps

Vedere ancheSee also