Freigeben über


Verschlüsseln einer Datenbank mit transparenter Datenverschlüsselung in einer durch Azure Arc aktivierten SQL Managed Instance

In diesem Artikel wird beschrieben, wie Sie die transparente Datenverschlüsselung in einer Datenbank aktivieren, die in einer SQL Managed Instance mit Azure Arc-Unterstützung erstellt wurde. In diesem Artikel verweist der Begriff verwaltete Instanz auf die Bereitstellung einer Azure Arc-fähigen SQL Managed Instance-Ressource.

Voraussetzungen

Bevor Sie mit diesem Artikel fortfahren, müssen Sie über eine Azure Arc-fähige SQL Managed Instance-Ressource verfügen und eine Verbindung mit ihr herstellen.

Aktivieren der transparenten Datenverschlüsselung in einer Datenbank in der verwalteten Instanz

Für das Aktivieren der transparenten Datenverschlüsselung in der verwalteten Instanz sind dieselben Schritten wie bei einer lokalen SQL Server-Instanz erforderlich. Führen Sie die in Leitfaden zur transparenten Datenverschlüsselung in SQL Server beschriebenen Schritte aus.

Nachdem Sie die erforderlichen Anmeldeinformationen erstellt haben, sichern Sie alle neu erstellten Anmeldeinformationen.

Sichern von Anmeldeinformationen für eine transparente Datenverschlüsselung

Wenn Sie Anmeldeinformationen der verwalteten Instanz sichern, werden die Anmeldeinformationen innerhalb des Containers gespeichert. Um Anmeldeinformationen auf einem dauerhaften Volume zu speichern, geben Sie den Einbindungspfad im Container an. Beispielsweise var/opt/mssql/data. Im folgenden Beispiel wird ein Zertifikat in der verwalteten Instanz gesichert:

Hinweis

Wenn der Befehl kubectl cp aus Windows ausgeführt wird und absolute Windows-Pfade verwendet werden, tritt möglicherweise ein Fehler auf. Verwenden Sie relative Pfade oder die unten angegebenen Befehle.

  1. Sichern Sie das Zertifikat aus dem Container in /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>');
    

    Beispiel:

    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. Kopieren Sie das Zertifikat aus dem Container in Ihr Dateisystem.

kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-certificate-path> > <local-certificate-path>

Beispiel:

kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.crt > $HOME\sqlcerts\servercert.crt
  1. Kopieren Sie den privaten Schlüssel aus dem Container in Ihr Dateisystem.
 kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-private-key-path> > <local-private-key-path>

Beispiel:

kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.key > $HOME\sqlcerts\servercert.key
  1. Löschen Sie das Zertifikat und den privaten Schlüssel aus dem Container.

    kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
    

    Beispiel:

    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"
    

Wiederherstellen von Anmeldeinformationen für die transparente Datenverschlüsselung in einer verwalteten Instanz

Ähnlich wie oben stellen Sie die Anmeldeinformationen wieder her, indem Sie sie in den Container kopieren und anschließend die entsprechenden T-SQL-Anweisungen ausführen.

Hinweis

Wenn der Befehl kubectl cp aus Windows ausgeführt wird und absolute Windows-Pfade verwendet werden, tritt möglicherweise ein Fehler auf. Verwenden Sie relative Pfade oder die unten angegebenen Befehle.

  1. Kopieren Sie das Zertifikat aus Ihrem Dateisystem in den Container.
type <local-certificate-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-certificate-path>

Beispiel:

type $HOME\sqlcerts\servercert.crt | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.crt
  1. Kopieren Sie den privaten Schlüssel aus Ihrem Dateisystem in den Container.
type <local-private-key-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-private-key-path>

Beispiel:

type $HOME\sqlcerts\servercert.key | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.key
  1. Erstellen Sie das Zertifikat mithilfe von Dateipfaden aus /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>' );
    

    Beispiel:

    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>' );
    
  2. Löschen Sie das Zertifikat und den privaten Schlüssel aus dem Container.

    kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
    

    Beispiel:

    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 Data Encryption