Abilitare Transparent Data Encryption in Istanza gestita di SQL abilitata da Azure Arc (anteprima)
Questo articolo descrive come abilitare e disabilitare Transparent Data Encryption (TDE) inattivi in un'istanza gestita di SQL abilitata 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 verrà applicata 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 abilitata dalla risorsa di Azure Arc creata e connettersi a tale istanza.
- Creare un'Istanza gestita di SQL abilitata da Azure Arc
- Connettersi all'Istanza gestita di SQL abilitata da Azure Arc
Limiti
Quando si abilita il TDE automatico, si applicano le limitazioni seguenti:
- È supportato solo il livello di 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 un'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 in Istanza gestita di SQL abilitata per Arc, il servizio dati esegue automaticamente le attività seguenti:
- Aggiunge la chiave master del database gestita dal servizio nel database
master
. - Aggiunge la protezione del certificato gestita dal servizio.
- Aggiunge le chiavi DEK (Database Encryption Keys) associate in tutti i database dell'istanza gestita.
- Abilita la crittografia in tutti i database nell'istanza gestita.
È possibile impostare Istanza gestita di SQL abilitata 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:
- Creare un certificato.
- Archiviare il certificato come segreto nello stesso spazio dei nomi Kubernetes dell'istanza.
Abilitare
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 in Istanza gestita di SQL abilitata per Arc, il servizio dati esegue automaticamente le attività seguenti:
- Disabilita la crittografia in tutti i database nell'istanza gestita.
- Elimina i DEK associati in tutti i database nell'istanza gestita.
- Elimina la protezione del certificato gestita dal servizio.
- Elimina la chiave master del database gestita dal servizio nel database
master
.
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 comando kubectl cp
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.
Eseguire il backup del certificato dal contenitore per
/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>');
Copiare il certificato dal contenitore nel file system.
Copiare la chiave privata dal contenitore al file system.
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 comando kubectl cp
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 nell'istanza gestita di SQL, ripristinare il backup del database e abilitare di nuovo TDE.
Copiare il certificato dal file system nel contenitore.
Copiare la chiave privata dal file system nel contenitore.
Creare il certificato usando 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>' );
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"