Share via


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 (früher Azure Active Directory)-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: 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, wenn Sie einen Arbeitsbereich aktualisieren, um zunächst einen Schlüssel hinzuzufügen

Wenn Sie anfänglich einen kundenseitig verwalteten Schlüssel für verwaltete Datenträger für einen vorhandenen Arbeitsbereich hinzufügen, beenden Sie vor der Aktualisierung alle Ihre Computeressourcen (Cluster, Pools, klassische oder Pro-SQL-Warehouses).

Nach Abschluss des Updates können Sie die von Ihnen beendeten Computeressourcen neu starten. Für einen Arbeitsbereich, der bereits über einen kundenseitig verwalteten Schlüssel für verwaltete Datenträger verfügt, können Sie den Schlüssel rotieren, ohne Computeressourcen beenden zu müssen.

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. Beenden Sie alle Computeressourcen (Cluster, Pools).
    2. Wechseln Sie zur Startseite des Azure-Portals für Azure Databricks.
    3. Navigieren Sie zu Ihrem vorhandenen Azure Databricks-Arbeitsbereich.
    4. Öffnen Sie im linken Bereich die Registerkarte Verschlüsselung.
    5. Aktivieren Sie im Abschnitt Kundenverwaltete SchlüsselVerwalteter Datenträger.
  2. Legen Sie den Verschlüsselungstyp fest.

    Show fields in the Managed Disks section of the Azure Databricks blade

    • 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.

    Enter the name of disk encryption set and select the result

  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
  • 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
  • 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"
           }
       },
       "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. Beenden Sie alle Computeressourcen (Cluster, Pools) nur, wenn Sie zunächst einen Schlüssel zu einem vorhandenen Arbeitsbereich hinzufügen. Wenn Sie diesen Schritt nicht ausführen, werden Ressourcen während des Updates automatisch beendet, was zu Problemen bei einigen Arten von Workloads führen kann. Planen Sie Ausfallzeiten ein, um alle Computeressourcen zu beenden, bevor Sie den Schlüssel hinzufügen. Nach Abschluss des Updates starten Sie die beendeten Computeressourcen. Für einen Arbeitsbereich, der bereits über einen kundenseitig verwalteten Schlüssel für verwaltete Datenträger verfügt, können Sie den Schlüssel rotieren, ohne Computeressourcen beenden zu müssen.

  2. Melden Sie sich beim Azure-Portal an.

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

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

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

    Edit deployment page of the Azure custom deployment portal

  6. Klicke auf Speichern.

  7. 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.

    Project details page of the Azure custom deployment portal

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

  9. 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. Beenden Sie alle Computeressourcen (Cluster, Pools) nur, wenn Sie zunächst einen Schlüssel zu einem vorhandenen Arbeitsbereich hinzufügen. Wenn Sie diesen Schritt nicht ausführen, werden Ressourcen während des Updates automatisch beendet, was zu Problemen bei einigen Arten von Workloads führen kann. Möglicherweise sollten Sie dieses Update planen und Ausfallzeiten einplanen. Dieser Schritt ist nicht erforderlich, wenn Sie nur den Schlüssel rotieren.

  2. Ü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.

  3. 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:

  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

Dieser Schritt ist nur erforderlich, wenn Sie einen Arbeitsbereich aktualisiert haben, um zum ersten Mal einen Schlüssel hinzuzufügen. In diesem Fall haben Sie alle ausgeführten Computeressourcen in einem vorherigen Schritt beendet. Wenn Sie einen neuen Arbeitsbereich erstellt haben oder nur den Schlüssel rotieren, wurden die Computeressourcen in den vorherigen Schritten nicht beendet. In diesem Fall können Sie diesen Schritt überspringen.

  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. Befolgen Sie die obigen Anweisungen, als ob Sie zunächst einen Schlüssel zu einem vorhandenen Arbeitsbereich hinzufügen würden. Der wichtige Unterschied besteht darin, dass Sie keine ausgeführten Computeressourcen beenden müssen.

Für beide Rotationstypen übernimmt der Azure VM-Speicherdienst den neuen Schlüssel automatisch und verwendet ihn zum Verschlüsseln des Datenverschlüsselungsschlüssels. Ihre Azure Databricks-Computeressourcen sind nicht betroffen. Weitere Informationen finden Sie unter Kundenseitig verwaltete Schlüssel in der Azure-Dokumentation.

Sie müssen keine Computeressourcen beenden, bevor Sie den Schlüssel rotieren.

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