Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Questa esercitazione illustra come iniziare a usare Always Encrypted. Il tutorial tratta:
- Come crittografare le colonne selezionate nel database.
- Come eseguire query su colonne crittografate.
Nota
Se si cercano informazioni su Always Encrypted con enclave sicure, consultare invece le esercitazioni seguenti:
Prerequisiti
Per eseguire questa esercitazione, è necessario avere:
- Un database vuoto in Database SQL di Azure, Istanza gestita di SQL di Azure o SQL Server. Le istruzioni seguenti presuppongono che il nome del database sia ContosoHR. È necessario essere un proprietario del database (membro del ruolo db_owner). Per informazioni su come creare un database, vedere Avvio rapido: Creare un database singolo - Database SQL di Azure o Creare un database in SQL Server.
- Facoltativo, ma consigliato, soprattutto se il database è in Azure: un insieme di credenziali in Azure Key Vault. Per ulteriori informazioni su come creare un insieme di credenziali delle chiavi, vedere Guida introduttiva: creare un insieme di credenziali delle chiavi usando il portale di Azure.
- Se l'insieme di credenziali usa il modello di autorizzazione con criteri di accesso, assicurati di disporre delle autorizzazioni per le chiavi seguenti nell'insieme di credenziali:
get,list,create,unwrap key,wrap key,verify,sign. Vedere Assegnare criteri di accesso a Key Vault. - Se si utilizza il modello di autorizzazioni di controllo degli accessi in base al ruolo di Azure (RBAC), assicurarsi di essere membri del ruolo Key Vault Crypto Officer per l'insieme di credenziali delle chiavi. Vedi Concedere l'accesso a chiavi, certificati e segreti di Key Vault con il controllo degli accessi in base al ruolo di Azure.
- Se l'insieme di credenziali usa il modello di autorizzazione con criteri di accesso, assicurati di disporre delle autorizzazioni per le chiavi seguenti nell'insieme di credenziali:
- L'ultima versione di SQL Server Management Studio (SSMS) o l'ultima versione dei moduli di PowerShell SqlServer e Az. Il modulo Az di PowerShell è necessario solo se si usa Azure Key Vault.
Nota
Microsoft consiglia di usare PowerShell 7 o versione successiva quando si eseguono script di PowerShell Always Encrypted. PowerShell 7 offre un supporto multipiattaforma migliorato, prestazioni migliori e la compatibilità più recente con il modulo SqlServer (v22+), necessario per molti scenari Always Encrypted.
Passaggio 1: Creare e popolare lo schema del database
In questo passaggio, si creeranno lo schema HR e la tabella Dipendenti . Verrà quindi popolata la tabella con alcuni dati.
Connettersi al database. Per istruzioni su come connettersi a un database da SSMS, vedere Guida introduttiva: Connettersi ed eseguire query su un database SQL di Azure o su un'istanza gestita di SQL di Azure usando SQL Server Management Studio (SSMS) o Guida introduttiva: Connettersi ed eseguire query su un'istanza di SQL Server usando SQL Server Management Studio (SSMS).
Apri una nuova finestra di query per il database ContosoHR.
Incollare ed eseguire le istruzioni seguenti per creare una nuova tabella, denominata Dipendenti.
CREATE SCHEMA [HR]; GO CREATE TABLE [HR].[Employees] ( [EmployeeID] [int] IDENTITY(1,1) NOT NULL , [SSN] [char](11) NOT NULL , [FirstName] [nvarchar](50) NOT NULL , [LastName] [nvarchar](50) NOT NULL , [Salary] [money] NOT NULL ) ON [PRIMARY];Incollare ed eseguire le istruzioni seguenti per aggiungere alcuni record dei dipendenti nella tabella Dipendenti.
INSERT INTO [HR].[Employees] ( [SSN] , [FirstName] , [LastName] , [Salary] ) VALUES ( '795-73-9838' , N'Catherine' , N'Abel' , $31692 ); INSERT INTO [HR].[Employees] ( [SSN] , [FirstName] , [LastName] , [Salary] ) VALUES ( '990-00-6818' , N'Kim' , N'Abercrombie' , $55415 );
Passaggio 2: Crittografare le colonne
In questo passaggio, verrà effettuato il provisioning di una chiave master di colonna e di una chiave di crittografia di colonna per Always Encrypted. Verranno quindi crittografate le colonne SSN e Stipendio nella tabella Dipendenti .
SSMS offre una procedura guidata per configurare facilmente Always Encrypted impostando la chiave master della colonna e la chiave di crittografia della colonna e crittografando le colonne selezionate.
In Esplora oggetti, espandi Database>ContosoHR>Tabelle.
Fare clic con il pulsante destro del mouse sulla tabella Dipendenti e selezionare Crittografa colonne per aprire la procedura guidata Always Encrypted.
Nella pagina Introduzione della procedura guidata, selezionare Avanti.
Nella pagina Selezione della colonna.
- Selezionare le colonne SSN e Stipendio. Scegliere la crittografia deterministica per la colonna SSN e la crittografia casuale per la colonna Stipendio. La crittografia deterministica consente query, ad esempio ricerche puntuali basate su confronti di uguaglianza sulle colonne crittografate. La crittografia casuale non supporta alcun calcolo sulle colonne crittografate.
- Lasciare CEK-Auto1 (New) come chiave di crittografia della colonna per entrambe le colonne. Questa chiave non esiste ancora e verrà generata dalla procedura guidata.
- Selezionare Avanti.
Nella pagina Configurazione della chiave master, configurare una nuova chiave master di colonna che verrà generata dalla procedura guidata. Prima di tutto, è necessario selezionare la posizione in cui archiviare la chiave master della colonna. La procedura guidata supporta due tipi di archivio di chiavi:
- Azure Key Vault: consigliato se il database si trova in Azure
- Archivio certificati Windows
In generale, Azure Key Vault è l'opzione consigliata, soprattutto se il database si trova in Azure.
Per usare Azure Key Vault:
- Selezionare Azure Key Vault.
- Selezionare Accedi e completare l'accesso ad Azure.
- Dopo aver eseguito l'accesso, la pagina visualizzerà l'elenco delle sottoscrizioni e degli insiemi di credenziali delle chiavi a cui puoi accedere. Selezionare una sottoscrizione di Azure che contenga l'insieme di credenziali da utilizzare.
- Selezionare l'insieme di credenziali delle chiavi.
- Selezionare Avanti.
Per usare l'archivio certificati di Windows:
Selezionare Archivio certificati di Windows.
Lascia la selezione predefinita di Utente corrente - in questo modo la procedura guidata genererà un certificato (la nuova chiave master di colonna) nell'archivio Utente corrente.
Selezionare Avanti.
Nella pagina Impostazioni della crittografia sul posto, non è necessaria alcuna configurazione aggiuntiva perché il database non dispone di un'enclave abilitata. Selezionare Avanti.
Nella pagina Impostazioni esecuzione test, viene chiesto se si vuole procedere con la crittografia o generare uno script di PowerShell da eseguire in un secondo momento. Lasciare le impostazioni predefinite e selezionare Avanti.
Nella pagina Riepilogo, la procedura guidata ti informa su quali azioni verranno eseguite. Controllare che tutte le informazioni siano corrette e selezionare Fine.
Nella pagina Risultati, è possibile monitorare l'avanzamento delle operazioni della procedura guidata. Attendere il completamento di tutte le operazioni e selezionare Chiudi.
(Facoltativo) Esplora le modifiche apportate dalla procedura guidata nel tuo database.
Espandi ContosoHR>Sicurezza>Chiavi Always Encrypted per esplorare gli oggetti dei metadati relativi alla chiave master di colonna e alla crittografia di colonna create dalla procedura guidata.
È anche possibile eseguire le query seguenti sulle viste del catalogo di sistema che contengono metadati chiave.
SELECT * FROM sys.column_master_keys; SELECT * FROM sys.column_encryption_keys SELECT * FROM sys.column_encryption_key_valuesIn Esplora oggetti, fare clic con il pulsante destro del mouse sulla tabella Employees e selezionare Script Table as>CREATE To>New Editor di query Window. Verrà aperta una nuova finestra di query con l'istruzione CREATE TABLE per la tabella Employees . Si noti la clausola ENCRYPTED WITH visualizzata nelle definizioni delle colonne SSN e Stipendio.
È anche possibile eseguire la query seguente su sys.columns per riprendere i metadati di crittografia a livello di colonna per le due colonne crittografate.
SELECT [name] , [encryption_type] , [encryption_type_desc] , [encryption_algorithm_name] , [column_encryption_key_id] FROM sys.columns WHERE [encryption_type] IS NOT NULL;
Passaggio 3: Query colonne crittografate
Connettiti al database con Always Encrypted disabilitato per questa connessione.
- Aprire una nuova finestra Query.
- Fare clic con il pulsante destro del mouse nell'intervallo di query e selezionare Connessione>Cambia connessione. Si aprirà la finestra di dialogo Connessione al motore di database.
- Selezionare Opzioni<<. Appariranno delle schede aggiuntive nella finestra di dialogo Connessione al motore di database.
- Selezionare la scheda Always Encrypted.
- Assicurarsi che Abilita Always Encrypted (crittografia della colonna) non sia selezionata.
- Selezionare Connetti.
Incolla ed esegui la query seguente. La query deve restituire dati crittografati binari.
SELECT [SSN], [Salary] FROM [HR].[Employees]
Connettiti al database con Always Encrypted abilitato per la tua connessione.
- Fare clic con il pulsante destro del mouse nell'intervallo di query e selezionare Connessione>Cambia connessione. Si aprirà la finestra di dialogo Connessione al motore di database.
- Selezionare Opzioni<<. Appariranno delle schede aggiuntive nella finestra di dialogo Connessione al motore di database.
- Selezionare la scheda Always Encrypted.
- Selezionare Abilita Always Encrypted (crittografia della colonna).
- Selezionare Connetti.
Esegui nuovamente la query. Poiché si è connessi con Always Encrypted abilitato per la connessione al database, il driver client in SSMS tenterà di decriptare i dati archiviati in entrambe le colonne crittografate. Se si usa Azure Key Vault, potrebbe essere richiesto di accedere ad Azure.
Abilitare Parametrizzazione per Always Encrypted. Questa funzionalità consente di eseguire query che filtrano i dati in base alle colonne crittografate (o inseriscono i dati in colonne crittografate).
- Selezionare Query dal menu principale di SQL Server Management Studio.
- Selezionare Opzioni query....
- Passare a Esecuzione>Avanzata.
- Assicurarsi che Abilita parametrizzazione per Always Encrypted sia abilitata.
- Seleziona OK.
Incollare ed eseguire la seguente query, che filtra i dati in base alla colonna SSN crittografata. La query deve restituire una riga contenente valori di testo non crittografato.
DECLARE @SSN [char](11) = '795-73-9838' SELECT [SSN], [Salary] FROM [HR].[Employees] WHERE [SSN] = @SSNFacoltativamente, se si usa Azure Key Vault configurato con il modello di autorizzazioni dei criteri di accesso, seguire questa procedura per vedere cosa accade quando un utente tenta di riprendere dati di testo non crittografato da colonne crittografate senza avere accesso alla chiave master della colonna che protegge i dati.
- Rimuovere l'autorizzazione della chiave
unwrapper se stessi nei criteri di accesso per l'insieme di credenziali delle chiavi. Per ulteriori informazioni, vedi Assegnare un criterio di accesso a Key Vault. - Poiché il driver client in SSMS memorizza nella cache per 2 ore le chiavi di crittografia delle colonne ottenute da un key vault, chiudere e riaprire SSMS. In questo modo, si garantisce che la cache delle chiavi sia vuota.
- Connettiti al database con Always Encrypted abilitato per la tua connessione.
- Incolla ed esegui la query seguente. La query dovrebbe non riuscire e mostrare il messaggio di errore che indica che manca l'autorizzazione
unwraprichiesta.
SELECT [SSN], [Salary] FROM [HR].[Employees]- Rimuovere l'autorizzazione della chiave
Passaggi successivi
Vedi anche
- Documentazione di Always Encrypted
- Documentazione di Always Encrypted con enclave sicure
- Effettuare il provisioning di chiavi Always Encrypted con SQL Server Management Studio
- Configurare Always Encrypted tramite PowerShell
- Procedura guidata Always Encrypted
- Eseguire query sulle colonne usando Always Encrypted con SQL Server Management Studio