Aktivera transparent datakryptering på SQL Managed Instance som aktiveras av Azure Arc (förhandsversion)
Den här artikeln beskriver hur du aktiverar och inaktiverar transparent datakryptering (TDE) i vila på 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 och aktivering/inaktivering av TDE gäller för alla databaser som körs på en hanterad instans.
Mer information om TDE finns i Transparent datakryptering.
När du aktiverar TDE-funktionen gör du följande:
- Alla befintliga databaser krypteras nu automatiskt.
- Alla nyligen skapade databaser krypteras automatiskt.
Kommentar
Som en förhandsgranskningsfunktion omfattas tekniken som presenteras i den här artikeln av kompletterande användningsvillkor för Förhandsversioner av Microsoft Azure.
De senaste uppdateringarna är tillgängliga i viktig information.
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
Begränsningar
Följande begränsningar gäller när du aktiverar automatisk TDE:
- Endast Generell användning nivå stöds.
- Redundansgrupper stöds inte.
Skapa en hanterad instans med TDE aktiverat (Azure CLI)
I följande exempel skapas en SQL Managed Instance som aktiveras av Azure Arc med en replik, TDE aktiverat:
az sql mi-arc create --name sqlmi-tde --k8s-namespace arc --tde-mode ServiceManaged --use-k8s
Aktivera TDE på den hanterade instansen
När TDE är aktiverat på Arc-aktiverad SQL Managed Instance utför datatjänsten automatiskt följande uppgifter:
- Lägger till huvudnyckeln
master
för tjänsthanterad databas i databasen. - Lägger till det tjänsthanterade certifikatskyddet.
- Lägger till de associerade databaskrypteringsnycklarna (DEK) på alla databaser på den hanterade instansen.
- Aktiverar kryptering på alla databaser på den hanterade instansen.
Du kan ange SQL Managed Instance aktiverat av Azure Arc TDE i något av två lägen:
- Tjänsthanterad
- Kundhanterad
I tjänsthanterat läge kräver TDE att den hanterade instansen använder en tjänsthanterad databashuvudnyckel samt det tjänsthanterade servercertifikatet. Dessa autentiseringsuppgifter skapas automatiskt när tjänsthanterad TDE aktiveras.
I kundhanterat läge använder TDE en tjänsthanterad databashuvudnyckel och använder nycklar som du anger för servercertifikatet. Så här konfigurerar du kundhanterat läge:
- Skapa ett certifikat.
- Lagra certifikatet som en hemlighet i samma Kubernetes-namnområde som instansen.
Aktivera
I följande avsnitt beskrivs hur du aktiverar TDE i tjänsthanterat läge.
Om du vill aktivera TDE i tjänsthanterat läge kör du följande kommando:
az sql mi-arc update --tde-mode ServiceManaged
Inaktivera TDE på den hanterade instansen
När TDE är inaktiverat på Arc-aktiverad SQL Managed Instance utför datatjänsten automatiskt följande uppgifter:
- Inaktiverar kryptering på alla databaser på den hanterade instansen.
- Släpper de associerade DEK:erna på alla databaser på den hanterade instansen.
- Släpper det tjänsthanterade certifikatskyddet.
- Släpper huvudnyckeln
master
för den tjänsthanterade databasen i databasen.
Så här inaktiverar du TDE:
az sql mi-arc update --tde-mode Disabled
Säkerhetskopiera en TDE-autentiseringsuppgift
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.
Kopiera den privata nyckeln från containern till filsystemet.
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 TDE-autentiseringsuppgift 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.
Om du vill återställa databassäkerhetskopior som har gjorts innan du aktiverar TDE måste du inaktivera TDE på SQL Managed Instance, återställa databassäkerhetskopian och aktivera TDE igen.
Kopiera certifikatet från filsystemet till containern.
Kopiera den privata nyckeln från filsystemet till containern.
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"