Share via


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

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 databasepreferredEnclaveType su VBS.

  1. Aprire il portale di Azure e individuare il database per il quale si desidera abilitare enclavi sicure.

  2. Nelle impostazioni di Sicurezza selezionare Crittografia dei dati.

  3. Nel menu Crittografia dei dati selezionare la scheda Always Encrypted.

  4. Impostare Abilita enclavi sicure su ON. Se è già impostato su ON, procedere con il passaggio successivo.

    Screenshot of enabling secure enclaves on an existing database in the Azure portal.

  5. 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.

  1. Aprire SSMS e connettersi al database ContosoHR nel server logico SQL di Azure creato senza Always Encrypted abilitato nella connessione al database.

    1. 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.

    2. Selezionare Opzioni >>, quindi la scheda Proprietà connessioni. Assicurarsi di selezionare il database ContosoHR (non il database predefinito master).

    3. Selezionare la scheda Always Encrypted.

    4. Verificare che la casella di controllo Abilita Always Encrypted (crittografia colonna)non sia selezionata.

      Screenshot of Connect to Server using SSMS without Always Encrypted enabled.

    5. Selezionare Connetti.

  2. 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
    
  3. 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 di enclave.

  1. Usando l’istanza di SSMS nel passaggio precedente, in Esplora oggetti espandere il database e passare a Sicurezza>Chiavi Always Encrypted.

  2. Effettuare il provisioning di una nuova chiave master della colonna abilitata per l’enclave:

    1. Fare clic con il pulsante destro del mouse su Chiavi Always Encrypted e scegliere Nuova chiave master della colonna.
    2. Immettere un nome per la nuova chiave master della colonna: CMK1.
    3. 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.
    4. 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. Screenshot of the allow enclave computations selection in SSMS when creating a new column master key.
    5. Selezionare OK.
  3. Creare una nuova chiave di crittografia di colonna abilitata per l’enclave:

    1. Fare clic con il pulsante destro del mouse su Chiavi Always Encrypted e scegliere Nuova chiave di crittografia della colonna.
    2. Immettere un nome per la nuova chiave di crittografia della colonna: CEK1.
    3. Nell’elenco a discesa Chiave master della colonna selezionare la chiave master della colonna creata nei passaggi precedenti.
    4. Selezionare OK.

Passaggio 5: crittografare alcune colonne in locale

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.

  1. Aprire una nuova istanza di SSMS e connettersi al database con Always Encrypted abilitato per la connessione di database.

    1. Avviare una nuova istanza di SSMS.

    2. 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.

    3. Selezionare Opzioni >>, quindi la scheda Proprietà connessioni. Assicurarsi di selezionare il database ContosoHR (non il database predefinito master).

    4. Selezionare la scheda Always Encrypted.

    5. Selezionare la casella di controllo Abilita Always Encrypted (crittografia colonna).

    6. Selezionare Abilita enclavi sicure.

    7. Impostare Protocollo su Nessuno. Vedere lo screenshot di seguito.

      Screenshot of the SSMS Connect to Server dialog Always Encrypted tab, with attestation protocol set to None.

    8. Selezionare Connetti.

    9. Se viene chiesto di abilitare la parametrizzazione per le query Always Encrypted, selezionare Abilita.

  2. 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.

  3. 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.

  1. Nell’istanza di SSMS con Always Encrypted abilitato verificare che la parametrizzazione per Always Encrypted sia abilitata.

    1. Selezionare Strumenti dal menu principale di SSMS.
    2. Selezionare Opzioni.
    3. Passare a Esecuzione query>SQL Server>Avanzata.
    4. Assicurarsi che sia selezionata l’opzione Abilita parametrizzazione per Always Encrypted.
    5. Selezionare OK.
  2. 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;
    
  3. 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:

Vedi anche