Modèle ARM pour la prise en charge du pare-feu pour le compte de stockage d’espace de travail

Cette page vous fournit le modèle ARM et une description des champs requis pour la prise en charge du pare-feu pour le compte de stockage de l’espace de travail. La prise en charge du pare-feu pour votre compte de stockage d’espace de travail est contrôlée par la propriété de modèle ARM storageAccountFirewall, qui doit être définie sur Enabled.

Pour certaines configurations d’espace de travail, telles que l’activation du profil de sécurité de conformité, vous devrez peut-être personnaliser le modèle ARM. Si vous avez des questions concernant le modèle ARM, veuillez déposer un ticket de Azure support. Vous pouvez également utiliser Terraform pour gérer les configurations d’espace de travail. Consultez le fournisseur terraform azurerm_databricks_workspace, y compris la compliance_security_profile_enabled propriété.

Champs de modèle ARM

Ce tableau répertorie les champs et leurs descriptions pour le modèle ARM suivant pour la prise en charge du pare-feu pour le compte de stockage de l’espace de travail.

Champ Descriptif
Abonnement Abonnement Azure à utiliser.
Groupe de ressources Groupe de ressources à utiliser. Il s’agit généralement du groupe de ressources de votre réseau virtuel.
Nom de l’espace de travail Nom de l’espace de travail. Si vous utilisez un espace de travail existant, ce nom doit correspondre exactement au nom de l'espace de travail existant.
Nom du groupe de ressources managé Le groupe de ressources managé pour votre espace de travail. Ce champ se remplit automatiquement avec une valeur par défaut dans le formulaire. Modifiez-le si votre organisation souhaite personnaliser le nom du groupe de ressources managé.
Nom du compte de stockage Compte de stockage d’espace de travail Azure dans votre groupe de ressources managé. Ce champ se remplit automatiquement avec une valeur par défaut dans le formulaire. Modifiez-le si votre organisation souhaite personnaliser le nom du groupe de ressources managé.
Identifiant du VNet de l’espace de travail L’identifiant de ressource pour votre réseau virtuel. Pour un espace de travail existant, vous pouvez l’obtenir en accédant à l’espace de travail dans le portail Azure. Cliquez sur Propriétés. Sous Identifiant de réseau virtuel personnalisé, cliquez sur Afficher la valeur en tant que JSON. Copiez l’ID de la ressource dans le champ value.
Nom du sous-réseau privé personnalisé Le sous-réseau privé de votre réseau virtuel. Pour un espace de travail existant, vous pouvez l’obtenir en accédant à l’espace de travail dans le portail Azure. Cliquez sur Propriétés. Sous Sous-réseau personnalisé privé, cliquez sur Afficher la valeur en tant que JSON. Copiez le nom du sous-réseau dans le champ value.
Nom de sous-réseau public personnalisé Le sous-réseau public de votre réseau virtuel. Pour un espace de travail existant, vous pouvez l’obtenir en accédant à l’espace de travail dans le portail Azure. Cliquez sur Propriétés. Sous Sous-réseau personnalisé public, cliquez sur Afficher la valeur en tant que JSON. Copiez le nom du sous-réseau dans le champ value.
Lieu Nom court de la région Azure qui se remplit automatiquement pour correspondre au champ principal Region.
Nom du connecteur d’accès Pour les déploiements classiques, ne modifiez pas ce champ. Azure Databricks crée un connecteur Access.
Type d'identité managée Pour les déploiements classiques, ne modifiez pas ce champ.
ID de ressource gérée par l'utilisateur Pour les déploiements classiques, ne modifiez pas ce champ.
Pare-feu du compte de stockage Indique si la prise en charge du pare-feu doit être activée pour votre compte de stockage d’espace de travail.
Désactiver l'IP publique Sa valeur doit être true. Cela permet une connectivité de cluster sécurisée, qui est requise pour la prise en charge du pare-feu pour votre compte de stockage d’espace de travail.
Accès au réseau public Définissez généralement cette option sur Activé. Si vous activez Private Link, consultez Azure Private Link concepts pour connaître les paramètres à utiliser.
Règles NSG requises Définissez généralement cette option sur Toutes les règles. Si vous activez Private Link, consultez Azure Private Link concepts pour connaître les paramètres à utiliser.
Clés gérées par le client activées Définissez ce paramètre sur vrai si vous utilisez des clés gérées par le client pour les services gérés ou les disques managés. Référez-vous à la section Clés gérées par le client pour le chiffrement.
Type de clés gérées par le client Si les clés gérées par le client sont activées, sélectionnez les types de clés gérées par le client pour cet espace de travail. Choisissez Services gérés, ManagedDisksou Les deux.
Managed Srvc Key Vault Id de clé Si vous utilisez des clés gérées par le client pour les services gérés, indiquez l’identifiant de clé du coffre de clés.
Id de clé de coffre de clés de disque managé Si vous utilisez des clés gérées par le client pour les disques managés, indiquez l’identifiant de clé du coffre de clés.
Rotation automatique du disque managé Si vous utilisez des clés gérées par le client pour les disques managés, indiquez si les nouvelles versions de clés doivent être récupérées automatiquement.

Modèle ARM pour la prise en charge du pare-feu pour votre compte de stockage d’espace de travail

Copiez le modèle ARM suivant pour activer ou désactiver la fonctionnalité de pare-feu pour votre compte de stockage de l'espace de travail.

{
  "$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')]"
    }
  ]
}