Freigeben über


Externe Schlüsselanbieter in SQL Server-Big Data-Clustern

Important

Die Big Data Cluster von Microsoft SQL Server 2019 werden eingestellt. Der Support für SQL Server 2019 Big Data Cluster endete am 28. Februar 2025. Weitere Informationen finden Sie im Ankündigungsblogbeitrag und den Big Data-Optionen auf der Microsoft SQL Server-Plattform.

Dieser Artikel enthält Details zum Konfigurieren externer Schlüsselanbieter in SQL Server Big Data Clustern für die Schlüsselverwaltung.

Weitere Informationen dazu, wie wichtige Versionen in SQL Server Big Data Clustern verwendet werden, finden Sie unter: Schlüsselversionen in SQL Server Big Data Clustern.

Informationen zum Konfigurieren und Verwenden der Verschlüsselung im Ruhezustand finden Sie in den folgenden Leitfäden:

Prerequisites

Stammschlüsselverschlüsselung mit externen Anbietern

Mit der Möglichkeit, externe Schlüssel in SQL Server Big Data Clustern bereitzustellen, ruft der Hauptverschlüsselungsschlüssel den öffentlichen Schlüssel mithilfe der Anwendung ab, die der Kunde bereitstellt. Wenn HDFS-Schlüssel gedreht und verwendet werden, werden die Aufrufe zum Entschlüsseln der HDFS-Schlüssel an die Steuerebene gesendet und dann mithilfe des vom Kunden bereitgestellten Schlüsselbezeichners an die Anwendung umgeleitet. 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 umgeleitet, die mit dem externen Anbieter, z. B. einem HardwareSicherheitsmodul (Hardware Security Module, HSM), verbunden ist.

Diagramm stellt die Situation dar, nachdem Customer Key installiert wurde.

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

Diagramm erläutert die Interaktionen beim Konfigurieren externer Schlüssel in der Steuerebene.

Nachdem der Schlüssel installiert wurde, werden die Verschlüsselung und Entschlüsselung verschiedener Nutzlasten durch den Hauptverschlüsselungsschlüssel geschützt. Dieser Schutz ähnelt systemverwalteten Schlüsseln, mit der Ausnahme, dass die Entschlüsselungsaufrufe, die an die Steuerungsebene weitergeleitet werden, dann an die KMS-Plug-In-App (Key Management Service) weitergeleitet werden. Die KMS-Plug-In-App leitet die Anforderung an einen geeigneten Standort, z. B. ein HSM, Hashicorp Vault oder ein anderes Produkt.

Configuration

Die bereitgestellte Vorlagenanwendung ist das Plug-In, das für die Schnittstelle mit dem externen Schlüsselanbieter verwendet wird. Diese Anwendung muss angepasst und in Big Data-Clustern bereitgestellt werden, um als Integrationspunkt mit dem ausgewählten externen Schlüsselanbieter zu dienen.

In der Vorlagenanwendung gibt es Beispiele für die Integration in externe Anbieterimplementierungen mithilfe des standardmäßigen PKCS11-Protokolls mit SoftHSM. Es gibt auch Beispiele für Azure Key Vault und Hashicorp Vault. Die Vorlagenanwendungen werden als Referenzimplementierungen as-is bereitgestellt.

In den folgenden Abschnitten werden die Schritte beschrieben, die zum Konfigurieren eines externen Schlüsselanbieters erforderlich sind, 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 in Ihrem externen Schlüsselanbieter hoch.

Die Schlüsseldatei kann z. B. dem KV-Speicher im Hashicorp Vault unter pfad bdc-encryption-secret hinzugefügt werden, und der Name des Geheimen kann rsa2048 sein.

Anpassen und Bereitstellen der Integrationsanwendung auf Big Data-Clustern

  1. Navigieren Sie auf Ihrem lokalen Computer zu dem Ordner, der kms_plugin_app enthält, den Vorlagenanwendungen "Big Data Clusters AppDeploy".

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

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

    Caution

    Ändern Sie nicht die Funktionsverträge oder Signaturen, bei denen es sich um die Integrationspunkte handelt. Ändern Sie bei Bedarf nur die Funktionsimplementierungen.

  3. Benennen Sie die Datei, die Sie aus der obigen Vorlage erstellen. Speichern Sie z. B. custom_softhsm.py als my_custom_integration_v1.py , und führen Sie dann Ihre Anpassungen aus. Dieser Ansatz ist für den nächsten Schritt wichtig.

  4. app.py ist der Einstiegspunkt, der die Anwendung lädt. In dieser Datei müssen Sie Zeile 11 ändern, um auf den benutzerdefinierten Dateinamen ohne die .py Erweiterung aus dem vorherigen Schritt zu verweisen. Ändern Sie im obigen Beispiel Folgendes:

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

    zum 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 aus dem Ordner mit dem "spec.yaml" die Anwendung mithilfe dieses Befehls in Big Data-Clustern bereit:

    azdata app create -s
    
  6. Warten Sie, bis die Anwendungsbereitstellung abgeschlossen ist, und der Status "Bereit" kann mit diesem 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 bereitzustellen, das den Zugriff auf den externen Schlüsselanbieter ermöglicht:

    export AZDATA_EXTERNAL_KEY_PIN=<your PIN/token here>
    

    Note

    Der Bereitstellungsprozess der Integrationsanwendung verwendet das Token für den Zugriff auf Ihren externen Schlüsselanbieter. AZDATA_EXTERNAL_KEY_PIN Die Variable wird jedoch in der Big Data Cluster-Steuerebene verschlüsselt, sodass sie von der Anwendung interpretiert werden kann. Auch ein anderer Authentifizierungsmechanismus kann verwendet werden, die Anwendung muss jedoch geändert werden. Überprüfen Sie die benutzerdefinierte*.py Python-Anwendung auf die vollständige Integrationslogik, die verwendet wird.

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

    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 Big Data Cluster KMS so, dass die Integrationsanwendung als Endpunkt für Schlüsselvorgänge verwendet wird.

  3. Überprüfen Sie den Stammverschlüsselungsschlüssel als extern verwalteter Schlüssel mithilfe des folgenden Befehls.

    azdata bdc kms show
    

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

Nach der Konfiguration werden SQL Server-Datenbanken und HDFS-Verschlüsselungszonen weiterhin durch die vorherige Schlüsselhierarchie verschlüsselt. Sie müssen explizit mithilfe der extern verwalteten Schlüssel verschlüsseln.

In SQL Server wird ein neuer asymmetrischer Schlüssel basierend auf dem extern verwalteten Schlüssel installiert. Verwenden Sie diese Option, 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 wird mit der Benennungskonvention tde_asymmetric_key_<version>angezeigt. 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. Abrufen von Informationen zur Version des Schlüssels, der den Verschlüsselungszonenschlüssel schützt:

    azdata bdc hdfs key describe --name <key name>
    
  3. Verschieben Sie Ihren Schlüssel zu dem neuen extern verwalteten Schlüssel.

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

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

    azdata bdc kms show
    azdata bdc hdfs key describe
    

Next steps