Share via


Esercitazione: introduzione all’uso di Always Encrypted con enclave Intel SGX 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. Si useranno enclave Intel Software Guard Extensions (Intel SGX). L’esercitazione illustra:

  • come creare un ambiente per i test e la valutazione di Always Encrypted con enclave Intel SGX;
  • Come crittografare i dati in locale ed eseguire query avanzate riservate su colonne crittografate usando SQL Server Management Studio (SSMS).

Prerequisiti

Requisiti di PowerShell

Nota

I prerequisiti elencati in questa sezione si applicano solo se si sceglie di usare PowerShell per alcuni passaggi descritti nell’esercitazione. Se invece si prevede di usare il portale di Azure, è possibile ignorare la sezione.

Richiede il modulo Az PowerShell 9.3.0 o versioni successive. Per informazioni più generali sul nuovo modulo Az PowerShell, vedere Installazione del modulo Az di Azure PowerShell. Per individuare la versione del modulo Az PowerShell installato nel computer, eseguire il comando seguente da PowerShell.

Get-InstalledModule -Name Az

Passaggio 1: creare e configurare un server e un database serie DC

In questo passaggio si creerà un nuovo server logico del database SQL di Azure e un nuovo database usando l’hardware serie DC, necessario per Always Encrypted con enclavi sicure. Per altre informazioni, consultare Serie DC.

  1. Accedere alla pagina Selezione l’opzione di distribuzione SQL.

  2. Se non lo si è già fatto, eseguire l’accesso al portale di Azure quando richiesto.

  3. In Database SQL lasciare l'opzione Tipo di risorsa impostata su Database singolo e selezionare Crea.

    Screenshot of Azure portal, showing the Add to Azure SQL deployment option.

  4. Nella scheda Dati principali del modulo Crea database SQL selezionare la Sottoscrizione di Azure corretta in Dettagli del progetto.

  5. In Gruppo di risorse selezionare Crea nuovo, immettere un nome per il gruppo di risorse, quindi selezionare OK.

  6. Per Nome database immettere ContosoHR.

  7. In Server, selezionare Crea nuovo e compilare il modulo per il nuovo server con i valori seguenti:

    • Nome server: immettere mysqlserver e aggiungere alcuni caratteri che rendano il nome univoco. Non è possibile specificare un nome del server esatto da usare perché i nomi di tutti i server di Azure devono essere univoci a livello globale, oltre che univoci all’interno di una sottoscrizione. Immettere quindi un valore come mysqlserver135 e il portale segnala se è disponibile o meno.
    • Posizione: selezionare una posizione dall’elenco a discesa.

      Importante

      È necessario selezionare una località (un’area di Azure) che supporti sia l’hardware della serie DC sia attestazione di Microsoft Azure. Per l’elenco delle aree che supportano la serie DC, vedere Disponibilità della serie DC. Ecco la disponibilità a livello di area di Microsoft attestazione di Azure.

    • Metodo di autenticazione: selezionare Usare l’autenticazione SQL
    • Accesso amministratore server: immettere un nome di accesso amministratore, ad esempio: azureuser.
    • Password: immettere una password che soddisfi i requisiti, quindi confermarla nell’apposito campo Conferma password.
    • Selezionare OK.
  8. Lasciare l’opzione Usare il pool elastico SQL impostata su No.

  9. In Calcolo e archiviazione selezionare Configura database, quindi Modifica configurazione.

    Screenshot of Azure portal hardware configuration, and where to configure database.

  10. Selezionare la configurazione hardware della serie DC, quindi OK.

    Screenshot of Azure portal, showing Configure DC-series database.

  11. Selezionare Applica.

  12. Tornare alla scheda Dati principali e verificare che Calcolo e archiviazione siano impostati su Utilizzo generico, DC, 2 vCore, spazio di archiviazione di 32 GB.

  13. Per Ridondanza dell’archivio di backup selezionare Archivio di backup con ridondanza locale.

  14. Selezionare Avanti: Rete nella parte inferiore della pagina.

    Screenshot of Azure portal, showing Configure DC-series database - basics.

  15. Nella scheda Rete selezionare Endpoint pubblico in Metodo di connettività.

  16. In Regole del firewall impostare Aggiungi indirizzo IP client corrente su . Lasciare l'opzione Consenti alle risorse e ai servizi di Azure di accedere a questo server impostata su No.

  17. Per Criterio di connessione lasciare Criterio di connessione su Predefinito: usa i criteri di reindirizzamento per tutte le connessioni client provenienti da Azure e proxy per tutte le connessioni client che hanno origine all’esterno di Azure

  18. Per Connessioni crittografate lasciare Versione minima TLS su TLS 1.2.

  19. Selezionare Rivedi e crea nella parte inferiore della pagina.

    Screenshot of the Azure portal Create SQL Database, networking tab.

  20. Nella pagina Rivedi e crea, dopo aver rivisto le impostazioni, selezionare Crea.

Passaggio 2: configurare un provider di attestazioni di Azure

In questo passaggio verrà creato e configurato un provider di attestazioni in attestazione di Microsoft Azure. Questa operazione è necessaria per attestare l’enclave sicura usata dal database.

  1. Passare alla pagina Crea provider di attestazione.

  2. Nella pagina Crea provider di attestazione specificare gli input seguenti:

    • Sottoscrizione: scegliere la sottoscrizione in cui è stato creato il server logico SQL di Azure.
    • Gruppo di risorse: scegliere il gruppo di risorse in cui è stato creato il server logico SQL di Azure.
    • Nome: immettere myattestprovider e aggiungere alcuni caratteri che rendano il nome univoco. Non è possibile specificare un nome esatto del provider di attestazione da usare perché i nomi devono essere univoci a livello globale. Immetti quindi un valore simile a myattestprovider12345 e il portale segnalerà se è disponibile o meno.
    • Percorso: scegliere la posizione del server logico SQL di Azure.
    • File dei certificati del firmatario dei criteri: lasciare vuoto questo campo: si configurerà un criterio non firmato.
  3. Una volta specificati gli input necessari, selezionare Rivedi e crea.

    Screenshot of the Azure portal Create attestation provider menu.

  4. Seleziona Crea.

  5. Dopo aver creato il provider di attestazioni, selezionare Vai alla risorsa.

  6. Nella scheda Panoramica per il provider di attestazione copiare il valore della proprietà URI di attestazione negli Appunti e salvarlo in un file. Si tratta dell’URL di attestazione, che servirà nei passaggi successivi.

    Screenshot of the attestation URL in the Azure portal.

  7. Selezionare Criterio nel menu delle risorse sul lato sinistro della finestra o nel riquadro inferiore.

  8. Impostare Tipo di attestazione su SGX-IntelSDK.

  9. Selezionare Configura nel menu in alto.

    Screenshot of configuring attestation policy in the Azure portal.

  10. Impostare Formato criteri su Testo. Lasciare le opzioni dei criteri impostate su Immetti criterio.

  11. Nel campo Testo criteri sostituire il criterio predefinito con il criterio seguente. Per altre informazioni, consultare Creare e configurare un provider di attestazioni.

version= 1.0;
authorizationrules 
{
       [ type=="x-ms-sgx-is-debuggable", value==false ]
        && [ type=="x-ms-sgx-product-id", value==4639 ]
        && [ type=="x-ms-sgx-svn", value>= 2 ]
        && [ type=="x-ms-sgx-mrsigner", value=="e31c9e505f37a58de09335075fc8591254313eb20bb1a27e5443cc450b6e33e5"] 
    => permit();
};

  1. Selezionare Salva.

    Screenshot of editing an attestation policy in the Azure portal.

  2. Selezionare Aggiorna nel menu superiore per visualizzare i criteri configurati.

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. Deve essere abilitata 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. Questo passaggio si applica a SSMS 19 o versioni successive.

    7. Impostare Protocollo su Attestazione di Microsoft Azure. Questo passaggio si applica a SSMS 19 o versioni successive.

    8. Specificare l’URL di attestazione dell’enclave ottenuto seguendo i passaggi descritti in Passaggio 2: configurare un provider di attestazioni. Vedere lo screenshot di seguito.

      Screenshot of the SSMS Connect to Server dialog Always Encrypted tab, with attestation enabled.

    9. Selezionare Connetti.

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

    Si noti l’istruzione ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE per cancellare 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