Share via


Externe Schlüsselanbieter in Big Data-Cluster für SQL Server

Wichtig

Das Microsoft SQL Server 2019-Big Data-Cluster-Add-On wird eingestellt. Der Support für SQL Server 2019-Big Data-Clusters endet am 28. Februar 2025. Alle vorhandenen Benutzer*innen von SQL Server 2019 mit Software Assurance werden auf der Plattform vollständig unterstützt, und die Software wird bis zu diesem Zeitpunkt weiterhin über kumulative SQL Server-Updates verwaltet. Weitere Informationen finden Sie im Ankündigungsblogbeitrag und unter Big Data-Optionen auf der Microsoft SQL Server-Plattform.

Dieser Artikel enthält Details zur Konfiguration von externen Schlüsselanbietern in Big Data-Cluster für SQL Server für die Schlüsselverwaltung.

Weitere Informationen zur Verwendung von Schlüsselversionen in SQL Server-Big Data-Clustern finden Sie im Artikel zu Schlüsselversionen in SQL Server-Big Data-Clustern.

Informationen zur Konfiguration und Verwendung der Funktion zur Verschlüsselung ruhender Daten finden Sie in den folgenden Leitfäden:

Voraussetzungen

Verschlüsselung des Stammschlüssels mit externen Anbietern

Bei der Funktion zur Verwendung von externen Schlüsseln in Big Data-Cluster für SQL Server ruft der Hauptverschlüsselungsschlüssel den öffentlichen Schlüssel mithilfe der vom Kunden bereitgestellten Anwendung ab. Wenn HDFS-Schlüssel rotiert und verwendet werden, werden die Aufrufe zum Entschlüsseln der HDFS-Schlüssel mithilfe des vom Kunden bereitgestellten Schlüsselbezeichners an die Steuerungsebene gesendet und an die Anwendung weitergeleitet. Bei SQL Server werden die Verschlüsselungsanforderungen durch die Steuerungsebene gesendet und bearbeitet, da sich hier der öffentliche Schlüssel befindet. Die Anforderungen zum Entschlüsseln des Datenverschlüsselungsschlüssels (Data Encryption Key, DEK) von SQL Server werden ebenfalls an die Steuerungsebene gesendet und dann an die Anwendung weitergeleitet, die über eine Schnittstelle mit dem externen Anbieter verfügt (z. B. ein Hardwaresicherheitsmodul, HSM).

Das Diagramm stellt die Situation nach der Installation des Kundenschlüssels dar.

In der folgenden Abbildung sind die Interaktionen beim Konfigurieren von externen Schlüsseln in der Steuerungsebene dargestellt:

Das Diagramm zeigt die Interaktionen beim Konfigurieren von externen Schlüsseln in der Steuerungsebene

Nach der Installation des Schlüssels werden die Verschlüsselung und die Entschlüsselung verschiedener Nutzdaten durch den Hauptverschlüsselungsschlüssel geschützt. Dieser Schutzmechanismus ist mit dem Schutz durch vom System verwaltete Schlüssel vergleichbar, unterscheidet sich jedoch dadurch, dass die Entschlüsselungsaufrufe an die Steuerungsebene und anschließend an die Key Management Service (KMS)-Plug-In-App weitergeleitet werden. Die Anforderung wird von der KMS-Plug-In-App an eine geeignete Stelle wie etwa ein HSM, HashiCorp Vault oder ein anderes Produkt weitergeleitet.

Konfiguration

Bei der bereitgestellten Vorlagenanwendung handelt es sich um das Plug-In, das für die Schnittstelle mit dem externen Schlüsselanbieter verwendet wird. Diese Anwendung muss angepasst und im Big Data-Cluster bereitgestellt werden, um als Integrationspunkt mit dem ausgewählten externen Schlüsselanbieter verwendet werden zu können.

Die Vorlagenanwendung umfasst Beispiele für die Integration mit Implementierungen externer Anbieter mithilfe des PKCS11-Standardprotokolls und unter Verwendung von SoftHSM. Es gibt auch Beispiele für die Verwendung von Azure Key Vault und HashiCorp Vault. Die Vorlagenanwendungen werden in der vorliegenden Form als Referenzimplementierungen bereitgestellt.

In den folgenden Abschnitten sind die erforderlichen Schritte für die Konfiguration eines externen Schlüsselanbieters beschrieben, der als Stammschlüssel der Verschlüsselung für SQL Server-Datenbanken und HDFS-Verschlüsselungszonen dient.

Erstellen eines RSA 2048-Schlüssels in Ihrem externen Schlüsselanbieter

Erstellen Sie eine PEM-Datei mit einem 2048-Bit-RSA-Schlüssel, und laden Sie sie in den Schlüsselwertspeicher Ihres externen Schlüsselanbieters hoch.

Beispiel: Die Schlüsseldatei kann dem KV-Speicher in HashiCorp Vault im Pfad bdc-encryption-secret hinzugefügt werden, und der Name des Geheimnisses kann „rsa2048“ lauten.

Anpassen und Bereitstellen der Integrationsanwendung in Big Data-Clustern

  1. Navigieren Sie auf Ihrem lokalen Computer zu dem Ordner mit kms_plugin_app, in dem sich die AppDeploy-Vorlagenanwendungen für Big Data-Cluster befinden.

  2. Passen Sie die Anwendung an, indem Sie eine der Vorlagen auswählen und an Ihr Szenario anpassen:

    • Die Datei custom_softhsm.py enthält eine Referenzimplementierung mit SoftHSM.
    • Die Datei custom_akv.py enthält ein Azure Key Vault-Beispiel.
    • Die Datei custom_hcv.py enthält ein HashiCorp Vault-Beispiel.

    Achtung

    Die Funktionsverträge und Signaturen, die die Integrationspunkte sind, dürfen nicht geändert werden. Ändern Sie lediglich die Funktionsimplementierungen (falls erforderlich).

  3. Benennen Sie die Datei, die Sie aus der obigen Vorlage erstellen, entsprechend. Speichern Sie custom_softhsm.py beispielsweise als my_custom_integration_v1.py, und nehmen Sie dann Ihre Anpassungen vor. Diese Vorgehensweise ist wichtig für den nächsten Schritt.

  4. app.py ist der Einstiegspunkt zum Laden der Anwendung. In dieser Datei müssen Sie Zeile 11 ändern, um auf den benutzerdefinierten Dateinamen (ohne die Erweiterung „.py“) aus dem vorherigen Schritt zu verweisen. Ändern Sie gemäß obigem Beispiel:

    ...
    import utils
    from json_objects import EncryptDecryptRequest
    import custom_softhsm as custom
    
    def handler(operation, payload, pin, key_attributes, version):
    ...
    

    in den folgenden Wert:

    ...
    import utils
    from json_objects import EncryptDecryptRequest
    import my_custom_integration_v1 as custom
    
    def handler(operation, payload, pin, key_attributes, version):
    ...
    
  5. Stellen Sie im Ordner, in dem sich spec.yaml befindet, die Anwendung mit dem folgenden Befehl im Big Data-Cluster bereit:

    azdata app create -s
    
  6. Warten Sie, bis die Anwendungsbereitstellung abgeschlossen ist. Der Status „Bereit“ kann mit dem folgenden Befehl überprüft werden:

    azdata app list
    

Konfigurieren von Big Data-Clustern für die Verwendung des externen Schlüsselanbieters

  1. Legen Sie die AZDATA_EXTERNAL_KEY_PIN-Umgebungsvariable fest, um das Token für den Zugriff auf den externen Schlüsselanbieter bereitzustellen:

    export AZDATA_EXTERNAL_KEY_PIN=<your PIN/token here>
    

    Hinweis

    Der Bereitstellungsprozess für die Integrationsanwendung verwendet das Token, um auf den externen Schlüsselanbieter zuzugreifen. Die AZDATA_EXTERNAL_KEY_PIN-Variable wird jedoch in der Steuerungsebene des Big Data-Clusters verschlüsselt gespeichert, sodass sie von der Anwendung interpretiert werden kann. Es kann auch ein anderer Authentifizierungsmechanismus verwendet werden. Die Anwendung muss jedoch geändert werden. Überprüfen Sie die Python-Anwendung custom*.py auf die vollständige Integrationslogik, die verwendet wird.

  2. Konfigurieren Sie den Schlüssel im Big Data-Cluster mithilfe der folgenden azdata-Befehlsstruktur. Ändern Sie die erforderlichen Parameter für die jeweilige Implementierung. Im folgenden Beispiel wird eine HashiCorp Vault-Struktur verwendet, die von custom2.py bereitgestellt wird.

    azdata bdc kms update --app-name <YOUR-APP-NAME> --app-version <YOUR-APP-VERSION> \
    --key-attributes keypath=<YOUR-KEY-PATH>,vaulturl=http://<YOUR-IP>:<YOUR-PORT>,keyname=<YOUR-KEY-NAME> \
    --provider External
    

    Der --provider External-Parameterwert konfiguriert das KMS für Big Data-Cluster, damit die Integrationsanwendung als Endpunkt für Schlüsselvorgänge verwendet wird.

  3. Überprüfen Sie den Stammverschlüsselungsschlüssel als extern verwalteten Schlüssel mit dem folgenden Befehl.

    azdata bdc kms show
    

Verschlüsseln der Datenbanken und Verschlüsselungszonen mit den neuen Schlüsseln

Nach der Konfiguration werden SQL Server-Datenbanken und HDFS-Verschlüsselungszonen weiterhin von der vorherigen Schlüsselhierarchie verschlüsselt. Die Verschlüsselung mit den extern verwalteten Schlüsseln muss explizit durchgeführt werden.

In SQL Server wird ein neuer asymmetrischer Schlüssel installiert, der auf dem extern verwalteten Schlüssel basiert. Verwenden Sie diesen Schlüssel, um Ihre Datenbanken zu verschlüsseln.

Der asymmetrische Schlüssel kann mithilfe der folgenden T-SQL-Abfrage mit der Systemkatalogsicht sys.asymmetric_keys angezeigt werden.

USE master;
select * from sys.asymmetric_keys;

Der asymmetrische Schlüssel verwendet die Benennungskonvention tde_asymmetric_key_<version>. Der SQL Server Administrator kann dann die Schutzvorrichtung des DEK mithilfe von ALTER DATABASE ENCRYPTION KEY so ändern, dass der asymmetrische Schlüssel verwendet wird. Verwenden Sie beispielsweise den folgenden T-SQL-Befehl:

USE db1;
ALTER DATABASE ENCRYPTION KEY ENCRYPTION BY SERVER ASYMMETRIC KEY tde_asymmetric_key_0;
  1. Führen Sie den folgenden Befehl aus, um den aktuellen Verschlüsselungsschlüssel zu überprüfen:

    azdata bdc hdfs key describe
    
  2. Rufen Sie Informationen zur Version des Schlüssels ab, mit dem der Schlüssel der Verschlüsselungszone geschützt wird:

    azdata bdc hdfs key describe --name <key name>
    
  3. Ändern Sie Ihren Schlüssel in den neuen extern verwalteten Schlüssel:

    azdata bdc hdfs key roll --name <new key name>
    
  4. Starten Sie die Verschlüsselung mit dem folgenden Befehl:

    azdata bdc hdfs encryption-zone reencrypt –-path <your EZ path> --action start
    
  5. Überprüfen Sie die Schlüsselhierarchie mit den folgenden Befehlen:

    azdata bdc kms show
    azdata bdc hdfs key describe
    

Nächste Schritte