Esercitazione: introduzione all’uso di Always Encrypted con enclave VBS nel database SQL di Azure
Si applica a: Database SQL di Azure
Questa esercitazione illustra come iniziare a usare Always Encrypted con enclavi sicure nel database SQL di Azure usando enclave di sicurezza basata su virtualizzazione. L’esercitazione illustra:
- Come creare un ambiente di base per i test e la valutazione di Always Encrypted con enclave VBS.
- Come crittografare i dati in locale ed eseguire query avanzate riservate su colonne crittografate usando SQL Server Management Studio (SSMS).
Prerequisiti
- Una sottoscrizione di Azure attiva. Se non si dispone di una sottoscrizione, creare un account gratuito. Per poter creare risorse è necessario essere membri del ruolo Collaboratore o del ruolo Proprietario della sottoscrizione.
- Facoltativo, ma consigliato per archiviare la chiave master della colonna per Always Encrypted: un insieme di credenziali delle chiavi in Azure Key Vault. Per altre informazioni su come creare un insieme di credenziali delle chiavi, vedere Guida introduttiva: creare un insieme di credenziali delle chiavi con il portale di Azure.
- Se l'insieme di credenziali delle chiavi usa il modello di autorizzazioni dei criteri di accesso, assicurarsi di disporre delle autorizzazioni di chiave seguenti nell'insieme di credenziali delle chiavi:
get
,list
,create
,unwrap key
,wrap key
,verify
,sign
. Vedere Assegnare criteri di accesso a Key Vault. - Se si usa il modello di autorizzazione del controllo degli accessi in base al ruolo (RBAC) di Azure, assicurarsi di essere un membro del ruolo Agente di crittografia di Key Vault per l'insieme di credenziali delle chiavi. Vedere Fornire l’accesso a chiavi, certificati e segreti di Key Vault con un controllo degli accessi in base al ruolo di Azure.
- Se l'insieme di credenziali delle chiavi usa il modello di autorizzazioni dei criteri di accesso, assicurarsi di disporre delle autorizzazioni di chiave seguenti nell'insieme di credenziali delle chiavi:
Requisiti per lo strumento
Per questa esercitazione è richiesto SQL Server Management Studio (SSMS). È possibile scegliere di usare PowerShell o l’interfaccia della riga di comando di Azure per abilitare le enclavi VBS.
Scaricare l’ultima versione di SQL Server Management Studio (SSMS).
Passaggio 1: creare e configurare un server e un database
In questo passaggio verranno creati un server logico del database SQL di Azure e un nuovo database.
Passare a Guida rapida: creare un database singolo - database SQL di Azure e seguire le istruzioni nella sezione Creare un database singolo per creare un nuovo server logico del database SQL di Azure e un nuovo database.
Importante
Assicurarsi di creare un database vuoto con il nome ContosoHR (non un database di esempio).
Passaggio 2: abilitare una enclave VBS
In questo passaggio si abiliterà una enclave VBS nel database, necessaria per Always Encrypted con enclavi sicure. Per abilitare le enclavi VBS nel database, è necessario impostare la proprietà di database preferredEnclaveType su VBS.
Aprire il portale di Azure e individuare il database per il quale si desidera abilitare enclavi sicure.
Nelle impostazioni di Sicurezza selezionare Crittografia dei dati.
Nel menu Crittografia dei dati selezionare la scheda Always Encrypted.
Impostare Abilita enclavi sicure su ON. Se è già impostato su ON, procedere con il passaggio successivo.
Selezionare Salva per salvare la configurazione di Always Encrypted.
Passaggio 3: popolare il database
In questo passaggio si crea una tabella e la si popola con alcuni dati che verranno crittografati e interrogati in un secondo momento.
Aprire SSMS e connettersi al database ContosoHR nel server logico SQL di Azure creato senza Always Encrypted abilitato nella connessione al database.
Nella finestra di dialogo Connessione al server specificare il nome completo del server, ad esempio myserver135.database.windows.net, e immettere il nome utente amministratore e la password specificata al momento della creazione del server.
Selezionare Opzioni >>, quindi la scheda Proprietà connessioni. Assicurarsi di selezionare il database ContosoHR (non il database predefinito
master
).Selezionare la scheda Always Encrypted.
Verificare che la casella di controllo Abilita Always Encrypted (crittografia colonna)non sia selezionata.
Selezionare Connetti.
Creare una nuova tabella di nome Employees.
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]; GO
Aggiungere alcuni record dei dipendenti alla tabella Employees.
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 4: Effettuare il provisioning delle chiavi abilitate per l'enclave
In questo passaggio si crea una chiave master della colonna e una chiave di crittografia della colonna che consentono i calcoli delle enclavi.
Usando l’istanza di SSMS nel passaggio precedente, in Esplora oggetti espandere il database e passare a Sicurezza>Chiavi Always Encrypted.
Effettuare il provisioning di una nuova chiave master della colonna abilitata per l’enclave:
- Fare clic con il pulsante destro del mouse su Chiavi Always Encrypted e scegliere Nuova chiave master della colonna.
- Immettere un nome per la nuova chiave master della colonna: CMK1.
- Verificare che l’opzione Consenti calcoli enclave sia selezionata. L’opzione è selezionata per impostazione predefinita se per il database è abilitata un’enclave sicura, perché il database usa la configurazione hardware della serie DC.
- Assicurarsi di selezionare Azure Key Vault (opzione consigliata) oppure Archivio certificati Windows (Utente corrente o Computer locale).
- Se si seleziona Azure Key Vault, accedere a Azure, selezionare una sottoscrizione di Azure contenente un insieme di credenziali delle chiavi che si vuole usare e selezionare l’insieme di credenziali delle chiavi. Selezionare Genera chiave per creare una nuova chiave.
- Se si seleziona Archivio certificati di Windows, selezionare il pulsante Genera certificato per creare un nuovo certificato.
- Seleziona OK.
Creare una nuova chiave di crittografia di colonna abilitata per l’enclave:
- Fare clic con il pulsante destro del mouse su Chiavi Always Encrypted e scegliere Nuova chiave di crittografia della colonna.
- Inserire un nome per la nuova chiave di crittografia della colonna: CEK1.
- Nell’elenco a discesa Chiave master della colonna selezionare la chiave master della colonna creata nei passaggi precedenti.
- Seleziona OK.
Passaggio 5: Crittografare alcune colonne in-place
In questo passaggio si esegue la crittografia dei dati archiviati nelle colonne SSN e Salary all’interno dell’enclave lato server, quindi si esegue il test di una query SELECT sui dati.
Aprire una nuova istanza di SSMS e connettersi al database con Always Encrypted abilitato per la connessione di database.
Avviare una nuova istanza di SSMS.
Nella finestra di dialogo Connessione al server specificare il nome completo del server, ad esempio myserver135.database.windows.net, e immettere il nome utente amministratore e la password specificata al momento della creazione del server.
Selezionare Opzioni >>, quindi la scheda Proprietà connessioni. Assicurarsi di selezionare il database ContosoHR (non il database predefinito
master
).Selezionare la scheda Always Encrypted.
Selezionare la casella di controllo Abilita Always Encrypted (crittografia colonna).
Selezionare Abilita enclavi sicure.
Impostare Protocollo su Nessuno. Vedere lo screenshot di seguito.
Selezionare Connetti.
Se viene chiesto di abilitare la parametrizzazione per le query Always Encrypted, selezionare Abilita.
Usando la stessa istanza di SSMS (con Always Encrypted abilitato), aprire una nuova finestra di query e crittografare le colonne SSN e Salary eseguendo le seguenti query.
ALTER TABLE [HR].[Employees] ALTER COLUMN [SSN] [char] (11) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL WITH (ONLINE = ON); ALTER TABLE [HR].[Employees] ALTER COLUMN [Salary] [money] ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL WITH (ONLINE = ON); ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
Nota
L’istruzione ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE cancella la cache del piano di query per il database nello script precedente. Dopo aver modificato la tabella è necessario cancellare i piani per tutti i batch e tutte le stored procedure che accedono alla tabella per aggiornare le informazioni di crittografia dei parametri.
Per verificare che le colonne SSN e Salary ora sono crittografate, aprire una nuova finestra di query nell’istanza di SSMS senza Always Encrypted abilitato per la connessione di database ed eseguire l’istruzione seguente. La finestra di query restituisce valori crittografati nelle colonne SSN e Salary. Se si esegue la stessa query usando l’istanza di SSMS con Always Encrypted abilitato, vengono visualizzati i dati decrittografati.
SELECT * FROM [HR].[Employees];
Passaggio 6: eseguire query avanzate su colonne crittografate
È possibile eseguire query avanzate sulle colonne crittografate. Vengono eseguite alcune operazioni di elaborazione query nell’enclave lato server.
Nell’istanza di SSMS con Always Encrypted abilitato verificare che la parametrizzazione per Always Encrypted sia abilitata.
- Selezionare Strumenti dal menu principale di SSMS.
- Selezionare Opzioni.
- Passare a Esecuzione query>SQL Server>Avanzata.
- Assicurarsi che sia selezionata l’opzione Abilita parametrizzazione per Always Encrypted.
- Seleziona OK.
Aprire una nuova finestra di query, incollare ed eseguire. La query restituisce valori di testo non crittografato e righe che soddisfano i criteri di ricerca specificati.
DECLARE @SSNPattern [char](11) = '%6818'; DECLARE @MinSalary [money] = $1000; SELECT * FROM [HR].[Employees] WHERE SSN LIKE @SSNPattern AND [Salary] >= @MinSalary;
Riprovare la stessa query nell’istanza di SSMS senza Always Encrypted abilitato. Si verifica un errore.
Passaggi successivi
Al termine dell’esercitazione, è possibile passare a una delle esercitazioni seguenti:
- Esercitazione: Sviluppare un'applicazione .NET usando Always Encrypted con enclavi sicure
- Esercitazione: Sviluppare un'applicazione .NET Framework usando Always Encrypted con enclavi sicure
- Esercitazione: Creazione e uso di indici sulle colonne abilitate per enclave tramite la crittografia casuale