Migrare dati sensibili protetti da Crittografia sempre attivaMigrate Sensitive Data Protected by Always Encrypted

Per caricare i dati crittografati senza eseguire controlli dei metadati sul server durante le operazioni di copia bulk, creare l'utente con l'opzione ALLOW_ENCRYPTED_VALUE_MODIFICATIONS .To load encrypted data without performing metadata checks on the server during bulk copy operations, create the user with the ALLOW_ENCRYPTED_VALUE_MODIFICATIONS option. Questa opzione è destinata all'uso da parte di strumenti legacy appartenenti a versioni di SQL ServerSQL Server precedenti a SQL Server 2016SQL Server 2016 (come bcp.exe) o con flussi di lavoro Extract-Transform-Load (ETL) di terze parti che non possono usare Always Encrypted.This option is intended to be used by legacy tools from versions of SQL ServerSQL Server older than SQL Server 2016SQL Server 2016 (such as bcp.exe) or by using third-party Extract-Transform-Load (ETL) work flows that cannot use Always Encrypted. In questo modo un utente può spostare in sicurezza i dati crittografati da un set di tabelle contenenti colonne crittografate a un altro set di tabelle con colonne crittografate (nello stesso database o in un altro).This allows a user to securely move encrypted data from one set of tables, containing encrypted columns, to another set of tables with encrypted columns (in the same or a different database).

Opzione ALLOW_ENCRYPTED_VALUE_MODIFICATIONSThe ALLOW_ENCRYPTED_VALUE_MODIFICATIONS Option

Sia CREATE USER che ALTER USER hanno un'opzione ALLOW_ENCRYPTED_VALUE_MODIFICATIONS.Both CREATE USER and ALTER USER have an ALLOW_ENCRYPTED_VALUE_MODIFICATIONS option. Quando è impostata su ON (il valore predefinito è OFF), questa opzione disattiva i controlli dei dati crittografici sul server nelle operazioni di copia bulk, il che consente all'utente di eseguire la copia bulk dei dati crittografati fra tabelle o database senza decrittografarli.When set to ON (the default is OFF), this option suppresses cryptographic metadata checks on the server in bulk copy operations, which enables the user to bulk copy encrypted data between tables or databases, without decrypting the data.

Scenari di migrazioneData Migration Scenarios

La tabella seguente mostra le impostazioni consigliate appropriate per diversi scenari di migrazione.The following table shows the recommended settings appropriate for several migration scenarios.

always-encrypted-migrationalways-encrypted-migration

Caricamento bulk di dati crittografatiBulk Loading of Encrypted Data

Usare la seguente procedura per caricare dati crittografati.Use the following process to load encrypted data.

  1. Impostare l'opzione su ON per l'utente nel database di destinazione dell'operazione di copia bulk.Set the option to ON for the user in the database that is the target for the bulk copy operation. Esempio:For example:

    ALTER USER Bob WITH ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON;  
    
  2. Eseguire l'applicazione o lo strumento di copia bulk connettendosi con le credenziali di quell'utente.Run your bulk copy application or tool connecting as that user. Se l'applicazione usa un driver client con Always Encrypted, verificare che la stringa di connessione per l'origine dati non contenga column encryption setting=enabled per garantire che i dati recuperati dalle colonne crittografate rimangano crittografati.(If your application uses an Always Encrypted enabled client driver, make sure the connection string for the data source does not contain column encryption setting=enabled to ensure the data retrieved from encrypted columns remains encrypted. Per altre informazioni, vedere Always Encrypted (client development) (Always Encrypted - sviluppo client)(Always Encrypted - sviluppo client).For more information, see Always Encrypted (client development).)

  3. Impostare di nuovo l'opzione ALLOW_ENCRYPTED_VALUE_MODIFICATIONS su OFF.Set the ALLOW_ENCRYPTED_VALUE_MODIFICATIONS option back to OFF. Esempio:For example:

    ALTER USER Bob WITH ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = OFF;  
    

Possibile danneggiamento dei datiPotential for Data Corruption

L'uso improprio di questa opzione può causare il danneggiamento dei dati.Improper use of this option can lead to data corruption. L'opzione ALLOW_ENCRYPTED_VALUE_MODIFICATIONS consente all'utente di inserire dati di qualsiasi tipo in colonne crittografate del database, compresi i dati crittografati con chiavi diverse, crittografati in modo non corretto o non crittografati.The ALLOW_ENCRYPTED_VALUE_MODIFICATIONS option allows the user to insert any data into encrypted columns in the database, including data that is encrypted with different keys, incorrectly encrypted, or not encrypted at all. Se l'utente copia accidentalmente dati che non sono crittografati in modo corretto usando lo schema di crittografia (chiave di crittografia della colonna, algoritmo, tipo di crittografia) impostato per la colonna di destinazione, non sarà possibile decrittografare i dati (i dati verranno danneggiati).If the user accidently copies the data that is not correctly encrypted using the encryption scheme (column encryption key, algorithm, encryption type) set up for the target column, you will not be able to decrypt the data (the data will be corrupted). Questa opzione deve essere utilizzata con attenzione, in quanto può causare il danneggiamento dei dati nel database.This option must be used carefully, as it can lead to corrupting data in the database.

Lo scenario seguente dimostra come un'importazione non corretta può causare il danneggiamento dei dati:The following scenario demonstrates how improperly importing data could lead to data corruption:

  1. L'opzione è impostata su ON per un utente.The option is set to ON for a user.

  2. L'utente esegue l'applicazione che si connette al database.The user runs the application that connects to the database. L'applicazione usa le API bulk per inserire valori di testo normale nelle colonne crittografate.The application uses bulk APIs to insert plain text values to encrypted columns. L'applicazione si aspetta che un driver client con Crittografia sempre attiva crittografi i dati durante l'inserimento.The application expects an Always Encrypted-enabled client driver to encrypt the data on insert. L'applicazione, tuttavia, non è configurata correttamente e di conseguenza o usa un driver che non supporta Always Encrypted o la stringa di connessione non contiene column encryption setting=enabled.However, the application is misconfigured, so that either it ends up using a driver that does not support Always Encrypted or the connection string does not contain column encryption setting=enabled.

  3. L'applicazione invia i valori di testo normale al server.The application sends plaintext values to the server. Poiché i controlli dei metadati crittografici sono disattivati nel server per l'utente, il server lascia che i dati non corretti (testo normale anziché testo crittografato) siano inseriti nella colonna crittografata.As cryptographic metadata checks are disabled in the server for the user, the server lets the incorrect data (plaintext instead of correctly encrypted ciphertext) to be inserted into an encrypted column.

  4. La stessa applicazione o un'altra si collega al database usando un driver con Always Encrypted e con column encryption setting=enabled nella stringa di connessione e recupera i dati.The same or another application connects to the database using an Always Encrypted-enabled driver and with column encryption setting=enabled in the connection string, and retrieves the data. L'applicazione si aspetta che i dati siano decrittografati in modo trasparente.The application expects the data to be transparently decrypted. Tuttavia, il driver non riesce a decrittografare i dati perché sono costituiti da testo crittografato non corretto.However, the driver fails to decrypt the data because the data is incorrect ciphertext.

Procedura consigliataBest practice

  • Usare account utente designati per i carichi di lavoro con esecuzione prolungata.Use designated user accounts for long running workloads using this option.

  • Per applicazioni o strumenti di copia bulk con esecuzione breve che richiedono di spostare i dati crittografati senza decrittografarli, impostare l'opzione su ON immediatamente prima di eseguire l'applicazione e impostarla di nuovo su OFF immediatamente dopo averla eseguita.For short running bulk copy applications or tools that need to move encrypted data without decrypting it, set the option to ON immediately before running the application and set it back to OFF immediately after running the operation.

  • Evitare l'uso di questa opzione per sviluppare nuove applicazioni.Do not use this option for developing new applications. Usare invece un driver client (ad esempio, ADO 4.6.1) che offre un'API per la disattivazione dei controlli dei metadati crittografici per una singola sessione.Instead, use a client driver (such as ADO 4.6.1) that offers an API for suppressing cryptographic metadata checks for a single session.

Vedere ancheSee Also

CREATE USER (Transact-SQL) CREATE USER (Transact-SQL)
ALTER USER (Transact-SQL) ALTER USER (Transact-SQL)
Always Encrypted (Motore di database) Always Encrypted (Database Engine)
Procedura guidata Crittografia sempre attiva Always Encrypted Wizard
Always Encrypted (client development) (Always Encrypted - sviluppo client) Always Encrypted (client development)