Crittografare un database con Transparent Data Encryption in Istanza gestita di SQL abilitata da Azure Arc
Questo articolo descrive come abilitare Transparent Data Encryption in un database creato 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.
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
- Conettersi all'Istanza gestita di SQL abilitata da Azure Arc
Attivare Transparent Data Encryption in un database nell'istanza gestita
L'attivazione di Transparent Data Encryption nell'istanza gestita segue gli stessi passaggi di SQL Server in locale. Seguire i passaggi descritti in Guida a Transparent Data Encryption di SQL Server.
Dopo aver creato le credenziali necessarie, eseguire il backup di tutte le credenziali appena create.
Eseguire il backup delle credenziali Transparent Data Encryption
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.
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
- 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
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 una credenziale Transparent Data Encryption 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.
- 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
- 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
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"