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.
- Erstellen eine durch Azure Arc aktivierten SQL Managed Instance-Instanz
- Herstellen einer Verbindung zu den von Azure Arc aktivierten verwalteten SQL-Instanzen
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.
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>');
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
- 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
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.
- 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
- 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
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>' );
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"