Kryptera en databas med transparent datakryptering på SQL Managed Instance som aktiveras av Azure Arc
Den här artikeln beskriver hur du aktiverar transparent datakryptering på en databas som skapats i en SQL Managed Instance som aktiveras av Azure Arc. I den här artikeln refererar termen hanterad instans till en distribution av SQL Managed Instance som aktiveras av Azure Arc.
Förutsättningar
Innan du fortsätter med den här artikeln måste du ha en SQL Managed Instance aktiverad av Azure Arc-resursen och ansluta till den.
- Skapa en SQL Managed Instance aktiverad av Azure Arc
- Ansluta till SQL Managed Instance aktiverat av Azure Arc
Aktivera transparent datakryptering på en databas i den hanterade instansen
Om du aktiverar transparent datakryptering i den hanterade instansen följer du samma steg som sql Server lokalt. Följ stegen som beskrivs i SQL Server:s guide för transparent datakryptering.
När du har skapat nödvändiga autentiseringsuppgifter säkerhetskopierar du eventuella nyligen skapade autentiseringsuppgifter.
Säkerhetskopiera en transparent autentiseringsuppgift för datakryptering
När du säkerhetskopierar autentiseringsuppgifter från den hanterade instansen lagras autentiseringsuppgifterna i containern. Om du vill lagra autentiseringsuppgifter på en beständig volym anger du monteringssökvägen i containern. Exempel: var/opt/mssql/data
I följande exempel säkerhetskopieras ett certifikat från den hanterade instansen:
Kommentar
kubectl cp
Om kommandot körs från Windows kan kommandot misslyckas när du använder absoluta Windows-sökvägar. Använd relativa sökvägar eller kommandona som anges nedan.
Säkerhetskopiera certifikatet från containern till
/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>');
Exempel:
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>');
Kopiera certifikatet från containern till filsystemet.
kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-certificate-path> > <local-certificate-path>
Exempel:
kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.crt > $HOME\sqlcerts\servercert.crt
- Kopiera den privata nyckeln från containern till filsystemet.
kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-private-key-path> > <local-private-key-path>
Exempel:
kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.key > $HOME\sqlcerts\servercert.key
Ta bort certifikatet och den privata nyckeln från containern.
kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
Exempel:
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"
Återställa en transparent datakrypteringsautentiseringsuppgift till en hanterad instans
Om du vill återställa autentiseringsuppgifterna, kopierar du dem till containern och kör motsvarande T-SQL efteråt.
Kommentar
kubectl cp
Om kommandot körs från Windows kan kommandot misslyckas när du använder absoluta Windows-sökvägar. Använd relativa sökvägar eller kommandona som anges nedan.
- Kopiera certifikatet från filsystemet till containern.
type <local-certificate-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-certificate-path>
Exempel:
type $HOME\sqlcerts\servercert.crt | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.crt
- Kopiera den privata nyckeln från filsystemet till containern.
type <local-private-key-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-private-key-path>
Exempel:
type $HOME\sqlcerts\servercert.key | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.key
Skapa certifikatet med hjälp av filsökvägar från
/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>' );
Exempel:
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>' );
Ta bort certifikatet och den privata nyckeln från containern.
kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
Exempel:
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"