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.

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:

  1. Lägger till huvudnyckeln master för tjänsthanterad databas i databasen.
  2. Lägger till det tjänsthanterade certifikatskyddet.
  3. Lägger till de associerade databaskrypteringsnycklarna (DEK) på alla databaser på den hanterade instansen.
  4. 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:

  1. Skapa ett certifikat.
  2. 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:

  1. Inaktiverar kryptering på alla databaser på den hanterade instansen.
  2. Släpper de associerade DEK:erna på alla databaser på den hanterade instansen.
  3. Släpper det tjänsthanterade certifikatskyddet.
  4. 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.

  1. 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>');
    
  2. 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
    

  1. 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
    

  1. 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.

  1. 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
    

  1. 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
    
  2. 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>' );
    
  3. 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"
    

Transparent datakryptering