Partager via


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

Cet article vous fournit le modèle ARM et une description des champs obligatoires 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 aurez peut-être besoin d’un autre modèle ARM. Dans ce cas, contactez l'équipe de votre compte Databricks.

Vous pouvez également mettre à jour ou créer votre espace de travail à l’aide de Terraform. Consultez le fournisseur Terraform azurerm_databricks_workspace.

Champs de modèle ARM

Ce tableau répertorie les champs et leur description pour le modèle ARM ci-dessous pour la prise en charge du pare-feu pour le compte de stockage de l'espace de travail.

Champ Description
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 nom s'inscrit automatiquement dans le formulaire par défaut. Modifiez-le si votre organisation souhaite personnaliser le nom du groupe de ressources managé.
Nom du compte de stockage Le compte de stockage de l’espace de travail Azure dans votre groupe de ressources managé. Ce nom s'inscrit automatiquement dans le formulaire par défaut. Modifiez-le si votre organisation souhaite personnaliser le nom du groupe de ressources managé.
Identifiant réseau du réseau virtuel 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 naviguant vers l’espace de travail dans le Portail Microsoft 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 naviguant vers l’espace de travail dans le Portail Microsoft 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 naviguant vers l’espace de travail dans le Portail Microsoft 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 remplit automatiquement le champ Région principal.
Nom du connecteur d’accès Pour les déploiements classiques, ne modifiez pas ce champ. Azure Databricks crée un nouveau connecteur d’accès.
Type d'identité managée Pour les déploiements classiques, ne modifiez pas ce champ.
Identifiant de la ressource d'identité 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 Azure Private Link, consultez Activer les connexions principales et frontales Azure Private Link pour connaître les paramètres à utiliser.
Règles de groupe de sécurité réseau requises Définissez généralement cette option sur Toutes les règles. Si vous activez Azure Private Link, consultez Activer les connexions principales et frontales Azure Private Link 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.
Identifiant de clé Key Vault Srvc managé 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.
Identifiant de clé du coffre de clés du 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 prise en charge du pare-feu pour votre compte de stockage de l'espace de travail. Vous pouvez également déployer un exemple de modèle ARM :

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