Freigeben über


Konfigurieren kundenseitig verwalteter Schlüssel für verwaltete Azure-Datenträger

Azure Databricks-Computeworkloads auf Computeebene speichern temporäre Daten auf verwalteten Azure-Datenträgern. Standardmäßig werden auf verwalteten Datenträgern gespeicherte Daten im Ruhezustand verschlüsselt, indem die serverseitige Verschlüsselung mit von Microsoft verwalteten Schlüsseln verwendet wird. In diesem Artikel wird beschrieben, wie Sie einen kundenseitig verwalteten Schlüssel aus Azure Key Vault-Tresoren für Ihren Azure Databricks-Arbeitsbereich für die Verschlüsselung von verwalteten Datenträgern konfigurieren. Eine Anleitung zur Verwendung eines Schlüssels aus Azure Key Vault-HSM finden Sie unter Konfigurieren von kundenseitig verwalteten HSM-Schlüsseln für verwaltete Azure-Datenträger.

Wichtig

  • Kundenseitig verwaltete Schlüssel für den Speicher für verwaltete Datenträger gelten für reguläre Datenträger, aber nicht für Betriebssystemdatenträger.
  • Kundenseitig verwaltete Schlüssel für den Speicher für verwaltete Datenträger gelten nicht für serverlose Computeressourcen wie serverlose SQL-Warehouses und Modellbereitstellung. Die Datenträger, die für serverlose Computeressourcen verwendet werden, sind kurzlebig und an den Lebenszyklus der serverlosen Workloads gebunden. Wenn Computeressourcen beendet oder herunterskaliert werden, werden die virtuellen Computer und deren Speicher zerstört.

Anforderungen

  • Ihr Azure Databricks-Arbeitsbereich muss sich im Premium-Tarif befinden.

  • Ihr Azure Key Vault und Ihr Azure Databricks-Arbeitsbereich müssen sich in derselben Region und im gleichen Microsoft Entra ID-Mandanten befinden. Sie können in unterschiedlichen Abonnements enthalten sein.

  • Wenn Sie die automatische Drehung aktivieren möchten, werden nur Softwareschlüssel und HSM-RSA der Größen 2048-Bit, 3072-Bit und 4096-Bit unterstützt.

  • Dieses Feature wird für Arbeitsbereiche mit FedRAMP-Konformität nicht unterstützt. Wenden Sie sich für weitere Informationen an Ihr Azure Databricks-Kundenberatungsteam.

  • Um die Azure CLI für diese Aufgaben zu verwenden, installieren Sie das Azure CLI-Tool, und installieren Sie die Databricks-Erweiterung:

    az extension add --name databricks
    
  • Um PowerShell für diese Aufgaben zu verwenden, installieren Sie Azure PowerShell und installieren Sie das Databricks PowerShell-Modul. Sie müssen sich auch anmelden:

    Connect-AzAccount
    

    Informationen zum Anmelden bei Ihrem Azure-Konto als Benutzer*in finden Sie unter PowerShell-Anmeldung mit einem Azure Databricks-Benutzerkonto. Informationen zum Anmelden bei Ihrem Azure-Konto als Dienstprinzipal finden Sie unter PowerShell-Anmeldung mit einem Microsoft Entra ID-Dienstprinzipal.

Schritt 1: Erstellen eines Key Vaults

Sie können einen Key Vault auf verschiedene Arten erstellen, z. B. mit dem Azure-Portal, der Azure CLI, mit PowerShell und optional mithilfe von ARM-Vorlagen. Die folgenden Abschnitte enthalten Prozeduren für die Verwendung der Azure CLI und PowerShell. Weitere Ansätze finden Sie in der Microsoft-Dokumentation.

Mithilfe der Azure-Befehlszeilenschnittstelle

  1. Erstellen Sie eine Key Vault-Instanz:

    az keyvault create --name <keyVaultName> --resource-group <resourceGroupName> --location <location> --sku <sku> --enable-purge-protection
    
  2. Abrufen der Tresor-URI:

    az keyvault show --name <key-vault-name>
    

    Kopieren Sie den vaultUri-Wert aus der Antwort.

Verwenden von PowerShell

Erstellen eines neuen Tresors:

$keyVault = New-AzKeyVault -Name <key-vault-name> -ResourceGroupName <resource-group-name> -Location <location> -Sku <sku> -EnablePurgeProtection

Abrufen eines vorhandenen Key Vaults:

$keyVault = Get-AzKeyVault -VaultName <key-vault-name>

Schritt 2: Vorbereiten eines Schlüssels

Sie können einen Schlüssel erstellen oder einen im Azure Key Vault gespeicherten vorhandenen Schlüssel abrufen, indem Sie das Azure-Portal, die Azure CLI, PowerShell und optional ARM-Vorlagen verwenden. Dieser Abschnitt enthält Prozeduren für die Azure CLI und PowerShell. Andere Möglichkeiten finden Sie in der Schlüssel-Dokumentation für Azure.

Mithilfe der Azure-Befehlszeilenschnittstelle

Sie können entweder einen Schlüssel erstellen oder einen vorhandenen Schlüssel abrufen.

Erstellen eines Schlüssels:

  1. Führen Sie den folgenden Befehl aus:

    az keyvault key create \
    --name <key-name> \
    --vault-name <key-vault-name> \
    --protection software
    
  2. Notieren Sie sich die folgenden Werte aus der Ausgabe:

    • Name des Schlüsseltresors: Name Ihres Schlüsseltresors
    • Schlüsselname: Name Ihres Schlüssels
    • Schlüsselversion: Die Version Ihres Schlüssels.
    • Schlüsseltresor-Ressourcengruppe: Ressourcengruppe Ihres Schlüsseltresors
  3. Abrufen der Schlüsselinformationen:

    az keyvault key show --vault-name <keyVaultName> --name <keyName>
    

    Kopieren Sie den Wert des kid-Felds, bei dem es sich um Ihre Schlüssel-ID handelt.

    Die vollständige Schlüssel-ID hat normalerweise die Form https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version>. Azure Key Vault-Schlüssel, die sich in einer nicht öffentlichen Cloud befinden, haben eine andere Form.

Rufen Sie einen vorhandenen Schlüssel ab:

  1. Führen Sie den folgenden Befehl aus:

    az keyvault key show --name <key-name> --vault-name <key-vault-name>
    
  2. Notieren Sie sich die folgenden Details für Ihren vorhandenen Schlüssel:

    • Schlüsseltresorname: Der Name Ihres Key Vaults.
    • Schlüsselname: Der Name Ihres Schlüssels.
    • Schlüsselversion: Die Version Ihres Schlüssels.
    • Schlüsseltresor-Ressourcengruppe: Die Ressourcengruppe Ihres Key Vaults.
  3. Abrufen der Schlüsselinformationen:

    az keyvault key show --vault-name <keyVaultName> --name <keyName>
    

    Kopieren Sie den Wert des kid-Felds, bei dem es sich um Ihre Schlüssel-ID handelt.

    Die vollständige Schlüssel-ID hat normalerweise die Form https://<key-vault-name>.vault.azure.net/keys/<key-name>/<key-version>. Azure Key Vault-Schlüssel, die sich in einer nicht öffentlichen Cloud befinden, haben eine andere Form.

  4. Überprüfen Sie, ob Ihr vorhandener Schlüssel aktiviert ist, bevor Sie fortfahren. Führen Sie zu diesem Zweck az keyvault key show --name <key name> erneut aus. Die Ausgabe zeigt "enabled": true an.

Verwenden von PowerShell

  1. Wenn Sie planen, einen Schlüssel zu erstellen, müssen Sie möglicherweise die Zugriffsrichtlinie festlegen, je nachdem, wie und wann Sie ihn erstellt haben. Wenn Sie beispielsweise kürzlich den Key Vault mithilfe von PowerShell erstellt haben, fehlt ihrem neuen Key Vault möglicherweise die Zugriffsrichtlinie, die zum Erstellen eines Schlüssels erforderlich ist. Im folgenden Beispiel wird der EmailAddress-Parameter verwendet, um die Richtlinie festzulegen. Weitere zugehörige Informationen finden Sie im Microsoft-Artikel zu Set-AzKeyVaultAccessPolicy.

    Legen Sie die Zugriffsrichtlinie für einen neuen Key Vault fest:

    Set-AzKeyVaultAccessPolicy \
    -VaultName $keyVault.VaultName \
    -PermissionsToKeys all \
    -EmailAddress <email-address>
    
  2. Sie können entweder einen Schlüssel erstellen oder einen vorhandenen Schlüssel abrufen:

    • Erstellen eines Schlüssels:

      $key = Add-AzKeyVaultKey \
      -VaultName $keyVault.VaultName \
      -Name <key-name> \
      -Destination 'Software'
      
    • Rufen Sie einen vorhandenen Schlüssel ab:

      $key = Get-AzKeyVaultKey \
      -VaultName $keyVault.VaultName \
      -Name <key-name>
      

Schritt 3: Beenden aller Computeressourcen

Beenden Sie alle Computeressourcen (Cluster, Pools und SQL Warehouses) in Ihrem Arbeitsbereich.

Schritt 4: Erstellen oder Aktualisieren eines Arbeitsbereichs

Wählen Sie eine der folgenden Bereitstellungsstrategien aus, um einen Arbeitsbereich mit einem kundenseitig verwalteten Schlüssel für verwaltete Datenträger zu erstellen oder zu aktualisieren:

Verwenden des Azure-Portals (ohne Vorlage)

In diesem Abschnitt wird beschrieben, wie das Azure-Portal verwendet wird, um einen Arbeitsbereich mit kundenseitig verwalteten Schlüsseln für verwaltete Datenträger zu erstellen oder zu aktualisieren, ohne eine Vorlage zu verwenden.

  1. Erstellen oder aktualisieren Sie einen Arbeitsbereich:

    Erstellen Sie einen neuen Arbeitsbereich mit einem Schlüssel:

    1. Navigieren Sie zur Startseite des Azure-Portals, und klicken Sie links oben auf der Seite auf Ressource erstellen.
    2. Geben Sie in der Suchleiste „Azure Databricks“ ein und klicken Sie auf Azure Databricks.
    3. Wählen Sie im Azure Databricks-Widget Erstellen aus.
    4. Geben Sie Werte in die Formularfelder auf den Registerkarten Grundlagen und Netzwerk ein.
    5. Aktivieren Sie auf der Registerkarte Verschlüsselung im Abschnitt Verwalteter Datenträger das Kontrollkästchen Eigenen Schlüssel verwenden.

    Fügen Sie zunächst einen Schlüssel zu einem vorhandenen Arbeitsbereich hinzu:

    1. Wechseln Sie zur Startseite des Azure-Portals für Azure Databricks.
    2. Navigieren Sie zu Ihrem vorhandenen Azure Databricks-Arbeitsbereich.
    3. Öffnen Sie im linken Bereich die Registerkarte Verschlüsselung.
    4. Aktivieren Sie im Abschnitt Kundenverwaltete SchlüsselVerwalteter Datenträger.
  2. Legen Sie den Verschlüsselungstyp fest.

    • Fügen Sie im Feld Schlüsselbezeichner den Schlüsselbezeichner Ihres Azure Key Vault-Schlüssels ein.
    • Geben Sie in der Dropdownliste Abonnement den Abonnementnamen Ihres Azure Key Vault-Schlüssels ein.
    • Um die automatische Rotation Ihres Schlüssels zu aktivieren, aktivieren Sie Automatische Rotation des Schlüssels aktivieren.
  3. Füllen Sie die restlichen Registerkarten aus, und klicken Sie auf Überprüfen und Erstellen (für einen neuen Arbeitsbereich) oder auf Speichern (zum Aktualisieren eines vorhandenen Arbeitsbereichs).

  4. Navigieren Sie nach der Bereitstellung Ihres Arbeitsbereichs zu Ihrem neuen Azure Databricks-Arbeitsbereich.

  5. Klicken Sie auf der Registerkarte Übersicht Ihres Azure Databricks-Arbeitsbereichs auf Verwaltete Ressourcengruppe.

  6. Suchen Sie auf der Registerkarte Übersicht der verwalteten Ressourcengruppe nach dem Objekt vom Typ Datenträgerverschlüsselungssatz, das in dieser Ressourcengruppe erstellt wurde. Kopieren Sie den Namen des Datenträgerverschlüsselungssatzes.

  7. Navigieren Sie im Azure-Portal zu dem Azure Key Vault, der zum Konfigurieren des Schlüssels verwendet wurde und den Sie für dieses Feature verwenden.

  8. Öffnen Sie im linken Bereich die Registerkarte Zugriffsrichtlinien. Sobald die Registerkarte geöffnet ist, klicken Sie oben auf der Seite auf Erstellen.

  9. Aktivieren Sie auf der Registerkarte „Berechtigungen“ im Abschnitt Schlüsselberechtigungen die Optionen Abrufen, Schlüssel entpacken und Schlüssel packen.

  10. Klicken Sie auf Weiter.

  11. Geben Sie auf der Registerkarte Prinzipal in der Suchleiste den Namen des Datenträgerverschlüsselungssatzes in der verwalteten Ressourcengruppe Ihres Azure Databricks-Arbeitsbereichs ein. Wählen Sie das Ergebnis aus, und klicken Sie auf Weiter.

    Eingeben des Namens des Datenträgerverschlüsselungssatzes und Auswählen des Ergebnisses

  12. Klicken Sie auf die Registerkarte Überprüfen und Erstellen und dann auf Erstellen.

Verwenden der Azure CLI (ohne Vorlage)

Fügen Sie diese Parameter sowohl für neue als auch für aktualisierte Arbeitsbereiche Ihrem Befehl hinzu:

  • disk-key-name: Name des Schlüssels
  • disk-key-vault: Name des Tresors
  • disk-key-version: Schlüsselversion. Verwenden Sie die spezifische Schlüsselversion und nicht latest.
  • disk-key-auto-rotation: Aktivieren der automatischen Rotation des Schlüssels (true oder false). Dies ist ein optionales Feld. Der Standardwert lautet false.

Verwenden Sie in den folgenden Befehlen den Tresor-URI-Wert aus der Antwort im vorherigen Schritt anstelle von <key-vault-uri>. Darüber hinaus können der Schlüsselname und die Werte der Schlüsselversion innerhalb des kid-Werts in der Antwort aus dem vorherigen Schritt gefunden werden.

  1. Erstellen oder Aktualisieren eines Arbeitsbereichs:

    • Beispiel zum Erstellen eines Arbeitsbereichs mit diesen Parametern für verwaltete Datenträger:

      az databricks workspace create --name <workspace-name> \
      --resource-group <resource-group-name> \
      --location <location> \
      --sku premium --disk-key-name <key-name> \
      --disk-key-vault <key-vault-uri> \
      --disk-key-version <key-version> \
      --disk-key-auto-rotation <true-or-false>
      
    • Beispiel für die Aktualisierung eines Arbeitsbereichs mithilfe dieser Parameter für verwaltete Datenträger:

      az databricks workspace update \
      --name <workspace-name> \
      --resource-group <resource-group-name> \
      --disk-key-name <key-name> \
      --disk-key-vault <key-vault-uri> \
      --disk-key-version <key-version> \
      --disk-key-auto-rotation <true-or-false>
      

    In der Ausgabe jedes dieser Befehle befindet sich ein managedDiskIdentity-Objekt. Speichern Sie den Wert der principalId-Eigenschaft in diesem Objekt. Dieser wird in einem späteren Schritt als Prinzipal-ID verwendet.

  2. Fügen Sie dem Key Vault eine Zugriffsrichtlinie mit Schlüsselberechtigung hinzu. Verwenden Sie den Tresornamen und die Prinzipal-ID aus den vorherigen Schritten:

    az keyvault set-policy \
    --name <key-vault-name> \
    --object-id <principal-id> \
    --key-permissions get wrapKey unwrapKey
    

Verwenden von PowerShell (ohne Vorlage)

Fügen Sie diese Parameter sowohl für neue als auch für aktualisierte Arbeitsbereiche Ihrem Befehl hinzu:

  • location: Speicherort für Arbeitsbereich
  • ManagedDiskKeyVaultPropertiesKeyName: Schlüsselname
  • ManagedDiskKeyVaultPropertiesKeyVaultUri: Key Vault-URI
  • ManagedDiskKeyVaultPropertiesKeyVersion: Schlüsselversion. Verwenden Sie die spezifische Schlüsselversion und nicht latest.
  • ManagedDiskRotationToLatestKeyVersionEnabled: Aktivieren der automatischen Rotation des Schlüssels (true oder false). Dies ist ein optionales Feld. Die Standardeinstellung ist „false“.
  1. Erstellen oder Aktualisieren eines Arbeitsbereichs:

    • Beispiel zum Erstellen eines Arbeitsbereichs mithilfe von Parametern für verwaltete Datenträger:

      $workspace = New-AzDatabricksWorkspace -Name <workspace-name> \
      -ResourceGroupName <resource-group-name> \
      -location $keyVault.Location \
      -Sku premium \
      -ManagedDiskKeyVaultPropertiesKeyName $key.Name \
      -ManagedDiskKeyVaultPropertiesKeyVaultUri $keyVault.VaultUri \
      -ManagedDiskKeyVaultPropertiesKeyVersion $key.Version -ManagedDiskRotationToLatestKeyVersionEnabled
      
    • Beispiel für die Aktualisierung eines Arbeitsbereichs mithilfe von Parametern für verwaltete Datenträger:

      $workspace = Update-AzDatabricksworkspace -Name <workspace-name> \
      -ResourceGroupName <resource-group-name> \
      -ManagedDiskKeyVaultPropertiesKeyName $key.Name \
      -ManagedDiskKeyVaultPropertiesKeyVaultUri $keyVault.VaultUri \
      -ManagedDiskKeyVaultPropertiesKeyVersion $key.Version -ManagedDiskRotationToLatestKeyVersionEnabled
      
  2. Fügen Sie dem Key Vault eine Zugriffsrichtlinie mit Schlüsselberechtigungen hinzu:

    Set-AzKeyVaultAccessPolicy -VaultName $keyVault.VaultName \
    -ObjectId $workspace.ManagedDiskIdentityPrincipalId \
    -PermissionsToKeys wrapkey,unwrapkey,get
    

Verwenden einer ARM-Vorlage (Azure-Portal oder CLI)

Azure-Schnellstartvorlagen finden Sie in der Azure-Dokumentation. Eine Liste der Bereitstellungsoptionen für ARM-Vorlagen finden Sie in der ARM-Vorlagendokumentation.

Wenn Sie einen Arbeitsbereich erstellen, wird auch eine Ressource für den Datenträgerverschlüsselungssatz innerhalb der verwalteten Ressourcengruppe Ihres Arbeitsbereichs erstellt. Sie umfasst eine vom System zugewiesene verwaltete Identität, die zum Zugreifen auf Ihren Schlüsseltresor verwendet wird. Bevor Azure Databricks Compute diesen Schlüssel zum Verschlüsseln Ihrer Daten verwenden kann, müssen Sie die Prinzipal-ID des Datenträgerverschlüsselungssatzes abrufen und der Identität dann die Schlüsselberechtigungen GET, WRAPund UNWRAP für Ihren Schlüsseltresor erteilen.

Databricks empfiehlt, den Arbeitsbereich zu erstellen oder zu aktualisieren und Schlüsseltresorberechtigungen in derselben Vorlagenbereitstellung zu gewähren. Sie müssen den Arbeitsbereich erstellen oder aktualisieren, bevor Sie Schlüsseltresorberechtigungen gewähren. Dabei gibt es allerdings eine Ausnahme. Wenn Sie einen vorhandenen Arbeitsbereich mit kundenseitig verwalteten Schlüsseln für verwaltete Datenträger aktualisieren, um einen neuen Schlüssel in einem neuen Schlüsseltresor zu verwenden, müssen Sie dem vorhandenen Datenträgerverschlüsselungssatz die Berechtigung für den Zugriff auf den neuen Schlüsseltresor erteilen. Aktualisieren Sie anschließend den Arbeitsbereich mit der neuen Schlüsselkonfiguration.

Die Beispielvorlage in diesem Abschnitt erfüllt die folgenden beiden Aufgaben:

  • Erstellt oder aktualisiert einen Arbeitsbereich, um Einstellungen für kundenseitig verwaltete Schlüssel für verwaltete Datenträger hinzuzufügen
  • Gewährt dem Datenträgerverschlüsselungssatz Zugriff auf Ihren Schlüsseltresor

Sie können die folgende ARM-Beispielvorlage verwenden, die zwei Aufgaben erfüllt:

  • Sie erstellt oder aktualisiert einen Arbeitsbereich mit einem vom Kunden verwalteten Datenträger.
  • Sie erstellt eine Schlüsselzugriffsrichtlinie.

Wenn Sie bereits eine ARM-Vorlage verwenden, können Sie die Parameter, Ressourcen und Ausgaben aus der Beispielvorlage in Ihrer vorhandenen Vorlage zusammenführen.

{
   "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   "parameters": {
       "workspaceName": {
           "type": "string",
           "metadata": {
               "description": "The name of the Azure Databricks workspace to create"
           }
       },
       "pricingTier": {
           "type": "string",
           "defaultValue": "premium",
           "allowedValues": [
               "premium"
           ],
           "metadata": {
               "description": "The pricing tier of workspace"
           }
       },
       "apiVersion": {
           "type": "string",
           "defaultValue": "2023-02-01",
           "allowedValues": [
               "2023-02-01",
               "2022-04-01-preview"
           ],
           "metadata": {
               "description": "The API version to use to create the workspace resources"
           }
       },
       "keyVaultName": {
           "type": "string",
           "metadata": {
               "description": "The Key Vault name used for CMK"
           }
       },
       "keyName": {
           "type": "string",
           "metadata": {
               "description": "The key name used for CMK"
           }
       },
       "keyVersion": {
           "type": "string",
           "metadata": {
               "description": "The key version used for CMK. Use the specific key version and not `latest`."
           }
       },
       "keyVaultResourceGroupName": {
           "type": "string",
           "metadata": {
               "description": "The resource group name of the Key Vault used for CMK"
           }
       },
       "enableAutoRotation": {
           "type": "bool",
           "defaultValue": false,
           "allowedValues": [
               true,
               false
           ],
           "metadata": {
               "description": "Whether managed disk picks up new key versions automatically"
           }
       }
   },
   "variables": {
       "managedResourceGroupName": "[concat('databricks-rg-', parameters('workspaceName'), '-', uniqueString(parameters('workspaceName'), resourceGroup().id))]"
   },
   "resources": [
       {
           "type": "Microsoft.Databricks/workspaces",
           "name": "[parameters('workspaceName')]",
           "location": "[resourceGroup().location]",
           "apiVersion": "[parameters('apiVersion')]",
           "sku": {
               "name": "[parameters('pricingTier')]"
           },
           "properties": {
               "managedResourceGroupId": "[concat(subscription().id, '/resourceGroups/', variables('managedResourceGroupName'))]",
               "encryption": {
                   "entities": {
                       "managedDisk": {
                           "keySource": "Microsoft.Keyvault",
                           "keyVaultProperties": {
                               "keyVaultUri": "[concat('https://', parameters('keyVaultName'), environment().suffixes.keyvaultDns)]",
                               "keyName": "[parameters('keyName')]",
                               "keyVersion": "[parameters('keyVersion')]"
                           },
                           "rotationToLatestKeyVersionEnabled": "[parameters('enableAutoRotation')]"
                       }
                   }
               }
           }
       },
       {
           "type": "Microsoft.Resources/deployments",
           "apiVersion": "2020-06-01",
           "name": "addAccessPolicy",
           "resourceGroup": "[parameters('keyVaultResourceGroupName')]",
           "dependsOn": [
               "[resourceId('Microsoft.Databricks/workspaces', parameters('workspaceName'))]"
           ],
           "properties": {
               "mode": "Incremental",
               "template": {
                   "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
                   "contentVersion": "0.9.0.0",
                   "resources": [
                       {
                           "type": "Microsoft.KeyVault/vaults/accessPolicies",
                           "apiVersion": "2019-09-01",
                           "name": "[concat(parameters('keyVaultName'), '/add')]",
                           "properties": {
                               "accessPolicies": [
                                   {
                                       "objectId": "[reference(resourceId('Microsoft.Databricks/workspaces', parameters('workspaceName')), '2023-02-01').managedDiskIdentity.principalId]",
                                       "tenantId": "[reference(resourceId('Microsoft.Databricks/workspaces', parameters('workspaceName')), '2023-02-01').managedDiskIdentity.tenantId]",
                                       "permissions": {
                                           "keys": [
                                               "get",
                                               "wrapKey",
                                               "unwrapKey"
                                           ]
                                       }
                                   }
                               ]
                           }
                       }
                   ]
               }
           }
       }
   ],
   "outputs": {
       "workspace": {
           "type": "object",
           "value": "[reference(resourceId('Microsoft.Databricks/workspaces', parameters('workspaceName')))]"
       }
   }
}

Verwenden Sie die Vorlage mit allen gewünschten Tools, einschließlich Azure-Portal, CLI usw. Details sind für die folgenden Vorlagenbereitstellungsstrategien enthalten:

Anwenden einer ARM-Vorlage mithilfe des Azure-Portals

Gehen Sie wie folgt vor, um einen Arbeitsbereich mithilfe einer ARM-Vorlage im Azure-Portal zu erstellen oder zu aktualisieren:

  1. Melden Sie sich beim Azure-Portal an.

  2. Klicken Sie auf Ressource erstellen und dann auf Vorlagenbereitstellung (Bereitstellen mithilfe benutzerdefinierter Vorlagen).

  3. Klicken Sie auf der Seite Benutzerdefinierte Bereitstellung auf Eigene Vorlage im Editor erstellen.

  4. Fügen Sie den Inhalt der Beispielvorlage im Editor ein.

    Seite „Bereitstellung bearbeiten“ im benutzerdefinierten Azure-Bereitstellungsportal

  5. Klicken Sie auf Speichern.

  6. Geben Sie Ihre Parameterwerte ein.

    Um einen vorhandenen Arbeitsbereich zu aktualisieren, verwenden Sie dieselben Parameter, die Sie zum Erstellen des Arbeitsbereichs verwendet haben. Um einen kundenseitig verwalteten Schlüssel zum ersten Mal hinzuzufügen, fügen Sie die schlüsselbezogenen Parameter unter „resources.properties.encryption.entities.managedDisk“ hinzu, wie in der obigen Vorlage dargestellt wird. Um den Schlüssel zu rotieren, ändern Sie einige oder alle schlüsselbezogenen Parameter.

    Wichtig

    Wenn Sie einen Arbeitsbereich aktualisieren, müssen der Name der Ressourcengruppe und der Arbeitsbereichsname in der Vorlage mit dem Namen der Ressourcengruppe und dem Arbeitsbereichsnamen Ihres vorhandenen Arbeitsbereichs identisch sein.

    Seite „Projektdetails“ im benutzerdefinierten Azure-Bereitstellungsportal

  7. Klicken Sie auf Überprüfen und erstellen.

  8. Beheben Sie alle Validierungsprobleme, und klicken Sie dann auf Erstellen.

Wichtig

Wenn Sie einen Schlüssel rotieren, dürfen Sie den alten Schlüssel erst nach Abschluss der Aktualisierung des Arbeitsbereichs löschen.

Anwenden einer ARM-Vorlage mithilfe der Azure CLI

In diesem Abschnitt wird beschrieben, wie Sie einen Arbeitsbereich mit Ihrem Schlüssel erstellen oder aktualisieren und dafür eine ARM-Vorlage mit der Azure CLI verwenden.

  1. Überprüfen Sie, ob Ihre Vorlage den Abschnitt für „resources.properties.encryption.entities.managedDisk“ und die zugehörigen Parameter keyvaultName, keyName, keyVersion und keyVaultResourceGroupName enthält. Wenn sie nicht vorhanden sind, finden Sie weiter oben in diesem Abschnitt eine Beispielvorlage. Führen Sie diesen Abschnitt und die Parameter in Ihrer Vorlage zusammen.

  2. Führen Sie den Befehl az deployment group create aus. Wenn der Name der Ressourcengruppe und der Arbeitsbereichsname mit dem Namen der Ressourcengruppe und dem Arbeitsbereichsnamen für einen vorhandenen Arbeitsbereich identisch sind, wird der vorhandene Arbeitsbereich durch diesen Befehl aktualisiert, anstatt einen neuen Arbeitsbereich zu erstellen. Wenn Sie eine vorhandene Bereitstellung aktualisieren, stellen Sie sicher, dass Sie denselben Ressourcengruppen- und Arbeitsbereichsnamen wie zuvor verwenden.

    az deployment group create --resource-group <existing-resource-group-name>  \
                               --template-file <file-name>.json \
                               --parameters workspaceName=<workspace-name> \
                                            keyvaultName=<key-vault-name> \
                                            keyName=<key-name> keyVersion=<key-version> \
                                            keyVaultResourceGroupName=<key-vault-resource-group>
    

    Wichtig

    Wenn Sie einen Schlüssel rotieren, kann der alte Schlüssel erst nach Abschluss der Aktualisierung des Arbeitsbereichs gelöscht werden.

Schritt 5: Vergewissern Sie sich, dass Ihre Computeressourcen Ihren Schlüssel verwenden (optional)

So stellen Sie sicher, dass das Feature „Kundenseitig verwalteter Schlüssel für verwaltete Datenträger“ für den Arbeitsbereich aktiviert ist:

  1. Rufen Sie die Details Ihres Azure Databricks-Arbeitsbereichs ab, indem Sie eine der folgenden Aktionen ausführen:

    • Azure-Portal

      1. Klicken Sie im Azure-Portal auf Arbeitsbereiche und dann auf den Namen Ihres Arbeitsbereichs.
      2. Klicken Sie auf der Seite des Arbeitsbereichs auf JSON-Ansicht.
      3. Klicken Sie auf eine API-Version, die mindestens der API-Version 2022-04-01-preview entspricht.
    • Azure-Befehlszeilenschnittstelle

      Führen Sie den folgenden Befehl aus:

      az databricks workspace show --resource-group <resource group name> --name <workspace name>
      

      Die Verschlüsselungsparameter für verwaltete Datenträger befinden sich unter properties. Beispiele:

      "properties": {
           "encryption": {
               "entities": {
                   "managedDisk": {
                     "keySource": "Microsoft.Keyvault",
                     "keyVaultProperties": {
                         "keyVaultUri": "<key-vault-uri>",
                         "keyName": "<key-name>",
                         "keyVersion": "<key-version>"
                     },
                     "rotationToLatestKeyVersionEnabled": "<rotation-enabled>"
                 }
            }
        }
      
    • PowerShell

      Get-AzDatabricksWorkspace -Name <workspace-name> -ResourceGroupName <resource-group-name> |
        Select-Object -Property ManagedDiskKeySource,
         ManagedDiskKeyVaultPropertiesKeyVaultUri,
         ManagedServicesKeyVaultPropertiesKeyName,
         ManagedServicesKeyVaultPropertiesKeyVersion,
         ManagedDiskRotationToLatestKeyVersionEnabled
      

      Überprüfen Sie die Werte für die Eigenschaften, die in der Ausgabe zurückgegeben werden:

      ManagedDiskKeySource                           : Microsoft.Keyvault
      ManagedDiskKeyVaultPropertiesKeyVaultUri       : <key-vault-uri>
      ManagedServicesKeyVaultPropertiesKeyName       : <key-name>
      ManagedServicesKeyVaultPropertiesKeyVersion    : <key-version>
      ManagedDiskRotationToLatestKeyVersionEnabled   : <rotation-enabled>
      
  2. Erstellen Sie eine beliebige Computeressource für Ihren Arbeitsbereich, die zum Testen verwendet werden soll:

    Wenn eine Computeressource nicht erfolgreich gestartet werden kann, liegt dies in der Regel daran, dass Sie dem Datenträgerverschlüsselungssatz erst noch entsprechende Berechtigungen für den Zugriff auf Ihren Schlüsseltresor erteilen müssen.

  3. Klicken Sie im Azure-Portal auf Arbeitsbereiche und dann auf den Namen Ihres Arbeitsbereichs.

  4. Klicken Sie auf der Seite des Arbeitsbereichs auf den Namen der verwalteten Ressourcengruppe, in der sich Ihr Arbeitsbereich befindet.

  5. Klicken Sie auf der Seite „Ressourcengruppe“ unter Ressourcen auf den Namen eines virtuellen Computers.

  6. Klicken Sie links auf der Seite des virtuellen Computers unter Einstellungen auf Datenträger.

    Vergewissern Sie sich, dass auf der Seite „Datenträger“ unter Datenträger das Feld Verschlüsselung für Ihren Datenträger den Wert „SSE with CMK“ hat.

Schritt 6: Starten von zuvor beendeten Computeressourcen

  1. Stellen Sie sicher, dass das Update des Arbeitsbereichs abgeschlossen ist. Wenn der Schlüssel die einzige Änderung an der Vorlage war, ist dies in der Regel in weniger als fünf Minuten abgeschlossen, andernfalls kann es mehr Zeit in Anspruch nehmen.
  2. Starten Sie alle Computeressourcen, die Sie zuvor beendet haben, manuell.

Wenn eine Computeressource nicht erfolgreich gestartet werden kann, liegt dies in der Regel daran, dass Sie dem Datenträgerverschlüsselungssatz erst noch die Berechtigung für den Zugriff auf Ihren Schlüsseltresor erteilen müssen.

Rotieren des Schlüssels zu einem späteren Zeitpunkt

Es gibt zwei Arten von Schlüsselrotationen für einen vorhandenen Arbeitsbereich, der bereits über einen Schlüssel verfügt:

  • Automatische Rotation: Wenn für Ihren Arbeitsbereich rotationToLatestKeyVersionEnabled = true gilt, erkennt der Datenträgerverschlüsselungssatz die Schlüsselversionsänderung und verweist auf die neueste Schlüsselversion.
  • Manuelle Rotation: Sie können einen vorhandenen Arbeitsbereich mit kundenseitig verwaltetem Schlüssel für verwaltete Datenträger mit einem neuen Schlüssel aktualisieren. Folgen Sie den obigen Anweisungen, als ob Sie zunächst einen Schlüssel zum vorhandenen Arbeitsbereich hinzufügen würden.

Problembehandlung

Cluster schlägt mit KeyVaultAccessForbidden fehl

Das Problem ist, dass ein Cluster mit folgendem Fehler nicht gestartet werden kann:

Cloud Provider Launch Failure: KeyVaultAccessForbidden

Gewähren Sie dem Datenträgerverschlüsselungssatz, der in der verwalteten Ressourcengruppe Ihres Arbeitsbereichs erstellt wird, die Berechtigung für den Zugriff auf Ihren Key Vault. Erforderliche Berechtigungen: GET, WRAPKEY, UNWRAPKEY.

Lesen Sie den Unterabschnitt von Schritt 4: Erstellen oder Aktualisieren eines Arbeitsbereichs für Ihren Bereitstellungstyp erneut, und achten Sie besonders auf die Key Vault-Zugriffsrichtlinienaktualisierung mit bestimmten Berechtigungen.

Schlüsselparameter fehlen

Das Problem sind fehlende Parameter für kundenseitig verwaltete Schlüssel für verwaltete Datenträger.

Vergewissern Sie sich, dass Ihre ARM-Vorlage die korrekte API-Version für die Microsoft.Databricks/workspaces-Ressource verwendet. Das Feature für kundenseitig verwaltete Schlüssel für verwaltete Datenträger ist nur mit der API-Version 2022-04-01-preview oder höher verfügbar. Wenn Sie andere API-Versionen verwenden, wird der Arbeitsbereich erstellt oder aktualisiert, die Parameter für verwaltete Datenträger werden jedoch ignoriert.

Aktualisieren des Arbeitsbereichs schlägt mit ApplicationUpdateFail fehl

Das Problem ist ein Vorgang zum Aktualisieren oder Patchen des Arbeitsbereichs, der für einen Arbeitsbereich mit aktiviertem verwalteten Datenträger mit dem folgenden Fehler fehlschlägt:

Failed to update application: `<workspace name>`, because patch resource group failure. (Code: ApplicationUpdateFail)

Gewähren Sie dem Datenträgerverschlüsselungssatz Zugriff auf Ihren Key Vault, und führen Sie dann Vorgänge zum Aktualisieren des Arbeitsbereichs aus, beispielsweise das Hinzufügen von Tags.

Zugriffsrichtlinie fehlt

Das Problem ist der folgende Fehler:

ERROR CODE: BadRequest MESSAGE: Invalid value found at accessPolicies[14].ObjectId: <objectId>

Die Zugriffsrichtlinie mit der obigen Objekt-ID ist in Ihrem Key Vault ungültig. Sie müssen sie entfernen, um Ihrem Key Vault neue Zugriffsrichtlinien hinzuzufügen.

Verloren gegangene Schlüssel können nicht wiederhergestellt werden

Verlorene Schlüssel können nicht wiederhergestellt werden. Wenn Sie Ihren Schlüssel verlieren oder widerrufen und ihn nicht wiederherstellen können, funktionieren Azure Databricks-Computeressourcen nicht mehr. Andere Funktionen des Arbeitsbereichs sind nicht betroffen.

Ressourcen