Freigeben über


ARM-Vorlage zur Unterstützung der Firewall für das Speicherkonto des Arbeitsbereichs

Dieser Artikel enthält die ARM-Vorlage sowie eine Beschreibung der Felder, die zur Unterstützung der Firewall für das Speicherkonto des Arbeitsbereichs erforderlich sind. Die Firewallunterstützung für das Speicherkonto des Arbeitsbereichs wird durch die ARM-Vorlageneigenschaft storageAccountFirewall gesteuert. Diese muss auf Enabled festgelegt werden.

Für bestimmte Arbeitsbereichskonfigurationen wie etwa das Aktivieren des Compliancesicherheitsprofils ist ggf. eine andere ARM-Vorlage erforderlich. Wenden Sie sich in diesem Fall an Ihr Databricks-Kontoteam.

Sie können Ihren Arbeitsbereich auch mithilfe von Terraform aktualisieren oder erstellen. Sehen Sie sich den Terraform-Anbieter azurerm_databricks_workspace an.

ARM-Vorlagenfelder

Diese Tabelle enthält die Felder und die zugehörigen Beschreibungen für die weiter unten bereitgestellte ARM-Vorlage zur Unterstützung der Firewall für das Speicherkonto des Arbeitsbereichs.

Feld BESCHREIBUNG
Abonnement Das zu verwendende Azure-Abonnement.
Ressourcengruppe Die zu verwendende Ressourcengruppe. Dies ist in der Regel die Ressourcengruppe Ihres VNet.
Arbeitsbereichname Name des Arbeitsbereichs Bei Verwendung eines bereits vorhandenen Arbeitsbereichs muss diese Angabe exakt dem Namen des vorhandenen Arbeitsbereichs entsprechen.
Name der verwalteten Ressourcengruppe Die verwaltete Ressourcengruppe für Ihren Arbeitsbereich. Wird im Formular automatisch mit einem Standardnamen aufgefüllt. Ändern Sie diesen, wenn Ihre Organisation den Namen der verwalteten Ressourcengruppe anpassen möchte.
Speicherkontoname Das Speicherkonto des Azure-Arbeitsbereichs in Ihrer verwalteten Ressourcengruppe. Wird im Formular automatisch mit einem Standardnamen aufgefüllt. Ändern Sie diesen, wenn Ihre Organisation den Namen der verwalteten Ressourcengruppe anpassen möchte.
Netzwerk-ID des Arbeitsbereichs-VNet Die Ressourcen-ID für Ihr VNet. Für einen bereits vorhandenen Arbeitsbereich können Sie diese Angabe abrufen, indem Sie im Azure-Portal zu dem Arbeitsbereich navigieren. Klicken Sie auf Eigenschaften. Klicken Sie unter Benutzerdefinierte VNet-ID auf Wert als JSON anzeigen. Kopieren Sie die Ressourcen-ID aus dem Feld value.
Benutzerdefinierter Name des privaten Subnetzes Das private Subnetz für Ihr VNet. Für einen bereits vorhandenen Arbeitsbereich können Sie diese Angabe abrufen, indem Sie im Azure-Portal zu dem Arbeitsbereich navigieren. Klicken Sie auf Eigenschaften. Klicken Sie unter Benutzerdefiniertes privates Subnetz auf Wert als JSON anzeigen. Kopieren Sie den Subnetznamen im Feld value.
Benutzerdefinierter Name des öffentlichen Subnetzes Das öffentliche Subnetz für Ihr VNet. Für einen bereits vorhandenen Arbeitsbereich können Sie diese Angabe abrufen, indem Sie im Azure-Portal zu dem Arbeitsbereich navigieren. Klicken Sie auf Eigenschaften. Klicken Sie unter Benutzerdefiniertes öffentliches Subnetz auf Wert als JSON anzeigen. Kopieren Sie den Subnetznamen im Feld value.
Location Der Kurzname für die Azure-Region. Wird automatisch aufgefüllt, um dem Hauptfeld für Region zu entsprechen.
Name des Zugriffsconnectors Lassen Sie dieses Feld bei einer typischen Bereitstellung unverändert. Azure Databricks erstellt einen neuen Zugriffsconnector.
Typ der verwalteten Identität Lassen Sie dieses Feld bei einer typischen Bereitstellung unverändert.
Ressourcen-ID der benutzerseitig verwalteten Identität Lassen Sie dieses Feld bei einer typischen Bereitstellung unverändert.
Speicherkontofirewall Gibt an, ob die Firewallunterstützung für das Speicherkonto des Arbeitsbereichs aktiviert werden soll.
Öffentliche IP-Adresse deaktivieren Dieser muss auf true festgelegt werden. Dies ermöglicht Konnektivität für sichere Cluster – eine Voraussetzung für die Firewallunterstützung für das Speicherkonto des Arbeitsbereichs.
Öffentlicher Netzwerkzugriff Diese Option muss in der Regel auf Aktiviert festgelegt werden. Wenn Sie Private Link aktivieren, informieren Sie sich unter Aktivieren von Azure Private Link Back-End- und Front-End-Verbindungen über die zu verwendenden Einstellungen.
Erforderliche NSG-Regeln Diese Option muss in der Regel auf Alle Regeln festgelegt werden. Wenn Sie Private Link aktivieren, informieren Sie sich unter Aktivieren von Azure Private Link Back-End- und Front-End-Verbindungen über die zu verwendenden Einstellungen.
Kundenseitig verwaltete Schlüssel aktiviert Legen Sie diese Option auf „true“ fest, wenn Sie kundenseitig verwaltete Schlüssel für verwaltete Dienste oder verwaltete Datenträger verwenden. Weitere Informationen finden Sie unter Kundenseitig verwaltete Schlüssel für die Verschlüsselung.
Art der kundenseitig verwalteten Schlüssel Wenn die Option für kundenseitig verwaltete Schlüssel aktiviert ist, wählen Sie die Arten der kundenseitig verwalteten Schlüssel für diesen Arbeitsbereich aus. Wählen Sie Verwaltete Dienste, ManagedDisks oder Beides aus.
Verwalteter Dienst: Schlüssel-ID des Schlüsseltresors Wenn Sie kundenseitig verwaltete Schlüssel für verwaltete Dienste verwenden, geben Sie die Schlüssel-ID des Schlüsseltresors an.
Verwalteter Datenträger: Schlüssel-ID des Schlüsseltresors Wenn Sie kundenseitig verwaltete Schlüssel für verwaltete Datenträger verwenden, geben Sie die Schlüssel-ID des Schlüsseltresors an.
Verwalteter Datenträger: Automatische Rotation Wenn Sie kundenseitig verwaltete Schlüssel für verwaltete Datenträger verwenden, geben Sie an, ob neue Schlüsselversionen automatisch übernommen werden sollen.

ARM-Vorlage zur Unterstützung der Firewall für das Speicherkonto des Arbeitsbereichs

Kopieren Sie die folgende ARM-Vorlage, um die Firewallunterstützung für das Speicherkonto des Arbeitsbereichs zu aktivieren oder zu deaktivieren. Sie können auch eine ARM-Beispielvorlage bereitstellen:

{
  "$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 update."
      }
    },
    "location": {
      "defaultValue": "[resourceGroup().location]",
      "type": "String",
      "metadata": {
        "description": "Location for all resources."
      }
    },
    "managedResourceGroupName": {
      "defaultValue": "[format('databricks-rg-{0}-{1}', parameters('workspaceName'), uniqueString(parameters('workspaceName'), resourceGroup().id))]",
      "type": "String",
      "metadata": {
        "description": "The Managed Resource GroupName of the workspace. Do not change unless using a custom managed resource group name."
      }
    },
    "storageAccountName": {
      "defaultValue": "[concat('dbstorage', uniqueString(resourceGroup().id, subscription().id))]",
      "type": "String",
      "metadata": {
        "description": "Workspace storage account name. Do not change unless using a custom storage account name."
      }
    },
    "workspaceVnetResourceId": {
      "defaultValue": "Required Resource ID of the workspace VNet",
      "type": "String",
      "metadata": {
        "description": "The Resource ID of the injected VNet for the workspace"
      }
    },
    "workspacePrivateSubnetName": {
      "defaultValue": "private-subnet",
      "type": "String",
      "metadata": {
        "description": "The private subnet name for the workspace"
      }
    },
    "workspacePublicSubnetName": {
      "defaultValue": "public-subnet",
      "type": "String",
      "metadata": {
        "description": "The public subnet name for the workspace"
      }
    },
    "accessConnectorName": {
      "defaultValue": "[format('{0}-access-connector', parameters('workspaceName'))]",
      "type": "String",
      "metadata": {
        "description": "The access connector to create for the workspace"
      }
    },
    "ManagedIdentityType": {
      "defaultValue": "SystemAssigned",
      "allowedValues": [
        "SystemAssigned",
        "UserAssigned",
        "SystemAssigned,UserAssigned"
      ],
      "type": "String",
      "metadata": {
        "description": "Access Connector Managed Identity Type"
      }
    },
    "userManagedIdentityResourceId": {
      "defaultValue": "Required For User Mananged Identity",
      "type": "String",
      "metadata": {
        "description": "The Resource Id of the User Managed Identity"
      }
    },
    "storageAccountFirewall": {
      "defaultValue": "Enabled",
      "allowedValues": [
        "Enabled",
        "Disabled"
      ],
      "type": "String",
      "metadata": {
        "description": "Enable or Disable firewall support for workspace default storage feature"
      }
    },
    "disablePublicIp": {
      "defaultValue": true,
      "type": "Bool",
      "metadata": {
        "description": "Specifies whether to deploy Azure Databricks workspace with secure cluster connectivity (SCC) enabled or not (No Public IP)."
      }
    },
    "publicNetworkAccess": {
      "defaultValue": "Enabled",
      "allowedValues": [
        "Enabled",
        "Disabled"
      ],
      "type": "String",
      "metadata": {
        "description": "Indicates whether public network access is allowed to the workspace with private endpoint - possible values are Enabled or Disabled."
      }
    },
    "requiredNsgRules": {
      "defaultValue": "AllRules",
      "allowedValues": [
        "AllRules",
        "NoAzureDatabricksRules"
      ],
      "type": "String",
      "metadata": {
        "description": "Indicates whether to retain or remove the AzureDatabricks outbound NSG rule - possible values are AllRules, NoAzureDatabricksRules (private link)."
      }
    },
    "storageDoubleEncryption": {
      "defaultValue": false,
      "type": "Bool",
      "metadata": {
        "description": "Is double encryption for managed storage enabled ?"
      }
    },
    "customerManagedKeysEnabled": {
      "defaultValue": false,
      "type": "Bool",
      "metadata": {
        "description": "Is CMK for managed services enabled ?"
      }
    },
    "CustomerManagedKeyType": {
      "defaultValue": "ManagedServicesCMK",
      "allowedValues": [
        "ManagedServicesCMK",
        "ManagedDisksCMK",
        "BothCMK"
      ],
      "type": "String",
      "metadata": {
        "description": "Selects the CMK types for this workspace, Managed Services and/or Disks, Workspace storage account is not enabled here"
      }
    },

    "ManagedSrvcKeyVaultKeyId": {
      "defaultValue": "https://kv-url/keys/keyname/version",
      "type": "String",
      "metadata": {
        "description": "The Key Vault Key ID"
      }
    },
    "ManagedDiskKeyVaultKeyId": {
      "defaultValue": "https://kv-url/keys/keyname/version",
      "type": "String",
      "metadata": {
        "description": "The Key Vault Key ID"
      }
    },
    "ManagedDiskAutoRotation": {
      "type": "bool",
      "defaultValue": false,
      "allowedValues": [
        true,
        false
      ],
      "metadata": {
        "description": "Whether managed disk will pick up new key version automatically."
      }
    }
  },
  "variables": {
    "ApiVersion": "2024-05-01",
    "workspaceSku": "premium",
    "systemAssignedObject": {
      "type": "[parameters('ManagedIdentityType')]"
    },
    "userAssignedObject": {
      "type": "[parameters('ManagedIdentityType')]",
      "userAssignedIdentities": {
        "[parameters('userManagedIdentityResourceId')]": {}
      }
    },
    "ConnectorSystemAssigned": {
      "id": "[resourceId('Microsoft.Databricks/accessConnectors', parameters('accessConnectorName'))]",
      "identityType": "[parameters('ManagedIdentityType')]"
    },
    "connectorUserAssigned": {
      "id": "[resourceId('Microsoft.Databricks/accessConnectors', parameters('accessConnectorName'))]",
      "identityType": "[parameters('ManagedIdentityType')]",
      "userAssignedIdentityId": "[parameters('userManagedIdentityResourceId')]"
    },
    "managedSrvcFirst" : "[split(parameters('ManagedSrvcKeyVaultKeyId'),'/keys/')]",
    "managedSrvcSecond" : "[split(variables('managedSrvcFirst')[1],'/')]",
     "managedDiskFirst" : "[split(parameters('ManagedDiskKeyVaultKeyId'),'/keys/')]",
    "managedDiskSecond" : "[split(variables('managedDiskFirst')[1],'/')]",
    "ManagedServicesCMK": {
      "managedServices": {
        "keySource": "Microsoft.Keyvault",
        "keyVaultProperties": {
          "keyVaultUri": "[variables('managedSrvcFirst')[0]]",
          "keyName": "[variables('managedSrvcSecond')[0]]",
          "keyVersion": "[variables('managedSrvcSecond')[1]]"
        }
      }
    },
    "ManagedDisksCMK": {
      "managedDisk": {
        "keySource": "Microsoft.Keyvault",
        "keyVaultProperties": {
          "keyVaultUri": "[variables('managedDiskFirst')[0]]",
          "keyName": "[variables('managedDiskSecond')[0]]",
          "keyVersion": "[variables('managedDiskSecond')[1]]"
        },
        "rotationToLatestKeyVersionEnabled": "[parameters('ManagedDiskAutoRotation')]"
      }
    },
    "BothCMK": {
      "managedServices": {
        "keySource": "Microsoft.Keyvault",
        "keyVaultProperties": {
          "keyVaultUri": "[variables('managedSrvcFirst')[0]]",
          "keyName": "[variables('managedSrvcSecond')[0]]",
          "keyVersion": "[variables('managedSrvcSecond')[1]]"
        }
      },
      "managedDisk": {
        "keySource": "Microsoft.Keyvault",
        "keyVaultProperties": {
          "keyVaultUri": "[variables('managedDiskFirst')[0]]",
          "keyName": "[variables('managedDiskSecond')[0]]",
          "keyVersion": "[variables('managedDiskSecond')[1]]"
        },
        "rotationToLatestKeyVersionEnabled": "[parameters('ManagedDiskAutoRotation')]"
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Databricks/accessConnectors",
      "apiVersion": "2023-05-01",
      "name": "[parameters('accessConnectorName')]",
      "location": "[parameters('location')]",
      "identity": "[if(equals(parameters('ManagedIdentityType'),'SystemAssigned'),variables('systemAssignedObject'),variables('userAssignedObject'))]",
      "properties": {}
    },
    {
      "type": "Microsoft.Databricks/workspaces",
      "apiVersion": "[variables('ApiVersion')]",
      "name": "[parameters('workspaceName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Databricks/accessConnectors', parameters('accessConnectorName'))]"
      ],
      "sku": {
        "name": "[variables('workspaceSku')]"
      },
      "properties": {
        "managedResourceGroupId": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('managedResourceGroupName'))]",
        "publicNetworkAccess": "[parameters('publicNetworkAccess')]",
        "requiredNsgRules": "[parameters('requiredNsgRules')]",
        "accessConnector": "[if(equals(parameters('ManagedIdentityType'),'SystemAssigned'),variables('ConnectorSystemAssigned'),variables('connectorUserAssigned'))]",
        "defaultStorageFirewall": "[parameters('storageAccountFirewall')]",
        "parameters": {
          "customVirtualNetworkId": {
            "value": "[parameters('workspaceVnetResourceId')]"
          },
          "customPrivateSubnetName": {
            "value": "[parameters('workspacePrivateSubnetName')]"
          },
          "customPublicSubnetName": {
            "value": "[parameters('workspacePublicSubnetName')]"
          },
          "enableNoPublicIp": {
            "value": "[parameters('disablePublicIp')]"
          },
          "storageAccountName": {
            "value": "[parameters('storageAccountName')]"
          },
          "requireInfrastructureEncryption": {
            "value": "[parameters('storageDoubleEncryption')]"
          }
        }
      },
      "condition": "[not(parameters('customerManagedKeysEnabled'))]"
    },
    {
      "type": "Microsoft.Databricks/workspaces",
      "apiVersion": "[variables('ApiVersion')]",
      "name": "[parameters('workspaceName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[resourceId('Microsoft.Databricks/accessConnectors', parameters('accessConnectorName'))]"
      ],
      "sku": {
        "name": "[variables('workspaceSku')]"
      },
      "properties": {
        "managedResourceGroupId": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', parameters('managedResourceGroupName'))]",
        "publicNetworkAccess": "[parameters('publicNetworkAccess')]",
        "requiredNsgRules": "[parameters('requiredNsgRules')]",
        "accessConnector": "[if(equals(parameters('ManagedIdentityType'),'SystemAssigned'),variables('ConnectorSystemAssigned'),variables('connectorUserAssigned'))]",
        "encryption": {
          "entities": "[variables(parameters('CustomerManagedKeyType'))]"
        },
        "defaultStorageFirewall": "[parameters('storageAccountFirewall')]",
        "parameters": {
          "customVirtualNetworkId": {
            "value": "[parameters('workspaceVnetResourceId')]"
          },
          "customPrivateSubnetName": {
            "value": "[parameters('workspacePrivateSubnetName')]"
          },
          "customPublicSubnetName": {
            "value": "[parameters('workspacePublicSubnetName')]"
          },
          "enableNoPublicIp": {
            "value": "[parameters('disablePublicIp')]"
          },
          "storageAccountName": {
            "value": "[parameters('storageAccountName')]"
          },
          "requireInfrastructureEncryption": {
            "value": "[parameters('storageDoubleEncryption')]"
          }
        }
      },
      "condition": "[parameters('customerManagedKeysEnabled')]"
    }
  ]
}