Abilitare Transparent Data Encryption in Istanza gestita di SQL abilitato da Azure Arc (anteprima)

Questo articolo descrive come abilitare e disabilitare Transparent Data Encryption (TDE) inattivi in un Istanza gestita di SQL abilitato da Azure Arc. In questo articolo il termine Istanza gestita fa riferimento a una distribuzione di Istanza gestita di SQL abilitata da Azure Arc e l'abilitazione/disabilitazione di TDE si applicherà a tutti i database in esecuzione in un'istanza gestita.

Per altre informazioni su TDE, vedere Transparent Data Encryption.

L'attivazione della funzionalità TDE esegue le operazioni seguenti:

  • Tutti i database esistenti verranno ora crittografati automaticamente.
  • Tutti i database appena creati verranno crittografati automaticamente.

Nota

In quanto funzionalità di anteprima, la tecnologia presentata in questo articolo è soggetta alle condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure.

Gli aggiornamenti più recenti sono disponibili nelle note sulla versione.

Prerequisiti

Prima di procedere con questo articolo, è necessario avere un Istanza gestita di SQL abilitato dalla risorsa di Azure Arc creata e connettersi.

Limiti

Quando si abilita il TDE automatico, si applicano le limitazioni seguenti:

  • È supportato solo il livello utilizzo generico.
  • I gruppi di failover non sono supportati.

Creare un'istanza gestita con TDE abilitato (interfaccia della riga di comando di Azure)

L'esempio seguente crea una Istanza gestita di SQL abilitata da Azure Arc con una replica, TDE abilitata:

az sql mi-arc create --name sqlmi-tde --k8s-namespace arc --tde-mode ServiceManaged --use-k8s

Attivare TDE nell'istanza gestita

Quando TDE è abilitato nella Istanza gestita di SQL abilitata per Arc, il servizio dati esegue automaticamente le attività seguenti:

  1. Aggiunge la chiave master del database gestita dal servizio nel master database.
  2. Aggiunge la protezione del certificato gestita dal servizio.
  3. Aggiunge le chiavi DEK (Database Encryption Keys) associate in tutti i database dell'istanza gestita.
  4. Abilita la crittografia in tutti i database nell'istanza gestita.

È possibile impostare Istanza gestita di SQL abilitato da Azure Arc TDE in una delle due modalità seguenti:

  • Gestito dal servizio
  • Rete virtuale dell'area di lavoro di

In modalità gestita dal servizio, TDE richiede che l'istanza gestita usi una chiave master del database gestita dal servizio e il certificato del server gestito dal servizio. Queste credenziali vengono create automaticamente quando il TDE gestito dal servizio è abilitato.

In modalità gestita dal cliente, TDE usa una chiave master del database gestita dal servizio e usa le chiavi fornite per il certificato del server. Per configurare la modalità gestita dal cliente:

  1. Crea un certificato.
  2. Archiviare il certificato come segreto nello stesso spazio dei nomi Kubernetes dell'istanza.

Abilitazione

La sezione seguente illustra come abilitare TDE in modalità gestita dal servizio.

Per abilitare TDE in modalità gestita dal servizio, eseguire il comando seguente:

az sql mi-arc update --tde-mode ServiceManaged

Disattivare TDE nell'istanza gestita

Quando TDE è disabilitato nelle Istanza gestita di SQL abilitate per Arc, il servizio dati esegue automaticamente le attività seguenti:

  1. Disabilita la crittografia in tutti i database nell'istanza gestita.
  2. Elimina i DEK associati in tutti i database nell'istanza gestita.
  3. Elimina la protezione del certificato gestita dal servizio.
  4. Elimina la chiave master del database gestita dal servizio nel master database.

Per disabilitare TDE:

az sql mi-arc update --tde-mode Disabled

Eseguire il backup di credenziali TDE

Quando si esegue il backup delle credenziali dall'istanza gestita, le credenziali vengono archiviate all'interno del contenitore. Per archiviare le credenziali in un volume permanente, specificare il percorso di montaggio nel contenitore. Ad esempio, var/opt/mssql/data. Nell'esempio seguente viene eseguito il backup di un certificato dall'istanza gestita:

Nota

Se il kubectl cp comando viene eseguito da Windows, il comando potrebbe non riuscire quando si usano percorsi di Windows assoluti. Usare percorsi relativi o i comandi specificati di seguito.

  1. Eseguire il backup del certificato dal contenitore a /var/opt/mssql/data.

    USE master;
    GO
    
    BACKUP CERTIFICATE <cert-name> TO FILE = '<cert-path>'
    WITH PRIVATE KEY ( FILE = '<private-key-path>',
    ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>');
    

    Esempio:

    USE master;
    GO
    
    BACKUP CERTIFICATE MyServerCert TO FILE = '/var/opt/mssql/data/servercert.crt'
    WITH PRIVATE KEY ( FILE = '/var/opt/mssql/data/servercert.key',
    ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>');
    
  2. Copiare il certificato dal contenitore nel file system.

    kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-certificate-path> > <local-certificate-path>
    

    Esempio:

    kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.crt > $HOME\sqlcerts\servercert.crt
    

  1. Copiare la chiave privata dal contenitore al file system.

     kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-private-key-path> > <local-private-key-path>
    

    Esempio:

    kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.key > $HOME\sqlcerts\servercert.key
    

  1. Eliminare il certificato e la chiave privata dal contenitore.

    kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
    

    Esempio:

    kubectl exec -it --namespace arc-ns --container arc-sqlmi sql-0 -- bash -c "rm /var/opt/mssql/data/servercert.crt /var/opt/mssql/data/servercert.key"
    

Ripristinare le credenziali TDE in un'istanza gestita

Analogamente a quanto sopra, per ripristinare le credenziali, copiarle nel contenitore ed eseguire il T-SQL corrispondente in un secondo momento.

Nota

Se il kubectl cp comando viene eseguito da Windows, il comando potrebbe non riuscire quando si usano percorsi di Windows assoluti. Usare percorsi relativi o i comandi specificati di seguito. Per ripristinare i backup del database eseguiti prima di abilitare TDE, è necessario disabilitare TDE nel Istanza gestita di SQL, ripristinare il backup del database e abilitare di nuovo TDE.

  1. Copiare il certificato dal file system nel contenitore.

    type <local-certificate-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-certificate-path>
    

    Esempio:

    type $HOME\sqlcerts\servercert.crt | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.crt
    

  1. Copiare la chiave privata dal file system nel contenitore.

    type <local-private-key-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-private-key-path>
    

    Esempio:

    type $HOME\sqlcerts\servercert.key | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.key
    
  2. Creare il certificato usando i percorsi di file da /var/opt/mssql/data.

    USE master;
    GO
    
    CREATE CERTIFICATE <certicate-name>
    FROM FILE = '<certificate-path>'
    WITH PRIVATE KEY ( FILE = '<private-key-path>',
        DECRYPTION BY PASSWORD = '<UseStrongPasswordHere>' );
    

    Esempio:

    USE master;
    GO
    
    CREATE CERTIFICATE MyServerCertRestored
    FROM FILE = '/var/opt/mssql/data/servercert.crt'
    WITH PRIVATE KEY ( FILE = '/var/opt/mssql/data/servercert.key',
        DECRYPTION BY PASSWORD = '<UseStrongPasswordHere>' );
    
  3. Eliminare il certificato e la chiave privata dal contenitore.

    kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
    

    Esempio:

    kubectl exec -it --namespace arc-ns --container arc-sqlmi sql-0 -- bash -c "rm /var/opt/mssql/data/servercert.crt /var/opt/mssql/data/servercert.key"
    

Transparent Data Encryption