Activer des connexions back-end et front-end Azure Private Link

Cet article résume comment utiliser Azure Private Link pour activer la connectivité privée entre les utilisateurs et leurs espaces de travail Databricks ainsi qu’entre les clusters sur le plan de calcul classique et les services principaux du plan de contrôle dans l’infrastructure de l’espace de travail Databricks.

Cette fonctionnalité ne modifie pas l’accès réseau pour les entrepôts SQL serverless. Toutefois, il existe une fonctionnalité distincte pour contrôler l’accès réseau des entrepôts SQL aux sources de données. Consultez Configurer la connectivité privée à partir du calcul serverless.

Vue d’ensemble

Private Link fournit une connectivité privée à partir de réseaux virtuels Azure et de réseaux locaux vers des services Azure sans exposer le trafic au réseau public. Azure Databricks prend en charge les types de connexion Private Link suivants :

  • Private Link frontaux, également appelé utilisateur à l’espace de travail: une connexion de Private Link frontale permet aux utilisateurs de se connecter à l’application web Azure Databricks, à l’API REST et à l’API Databricks Connect sur un point de terminaison d’interface de réseau virtuel. La connexion front-end est également utilisée par les intégrations JDBC/ODBC et Power BI. Le trafic réseau pour une connexion front-end Private Link entre un réseau virtuel de transit et le plan de contrôle de l’espace de travail Azure Databricks traverse le réseau principal Microsoft.
  • Private Link back-end, également appelé plan de calcul pour le plan de contrôle : Les clusters Databricks Runtime dans un réseau virtuel managé par le client (le plan de calcul) se connectent aux services principaux d’un espace de travail Azure Databricks (le plan de contrôle) dans le compte cloud Azure Databricks. Cela permet la connectivité privée des clusters au point de terminaison de relais de connectivité de cluster sécurisé et au point de terminaison de l’API REST.
  • Point de terminaison privé d’authentification du navigateur : pour prendre en charge les connexions frontales privées à l’application web Azure Databricks pour les clients qui n’ont aucune connectivité Internet publique, vous devez ajouter un point de terminaison privé d’authentification par navigateur pour prendre en charge les rappels de connexion d’authentification unique à l’application web Azure Databricks à partir de Microsoft Entra ID (anciennement Azure Active Directory). Si vous autorisez les connexions de votre réseau à l’Internet public, l’ajout d’un point de terminaison privé d’authentification du navigateur est recommandé, mais pas obligatoire. Un point de terminaison privé d’authentification du navigateur est une connexion privée avec un type de sous-ressource browser_authentication.

Si vous implémentez Private Link pour les deux connexions frontales et principales, vous pouvez éventuellement mandater la connectivité privée pour l’espace de travail, ce qui signifie qu’Azure Databricks rejette toutes les connexions sur le réseau public. Si vous refusez d’implémenter les types de connexion frontales et principales, vous ne pouvez pas appliquer cette exigence.

Cet article concerne principalement la création d'un espace de travail. Vous pouvez toutefois activer ou désactiver Private Link sur un espace de travail existant. Voir Activer ou désactiver Azure Private Link sur un espace de travail existant.

Terminologie

Le tableau suivant décrit la terminologie importante.

Terminologie Description
Azure Private Link Une technologie Azure qui fournit une connectivité privée à partir de réseaux virtuels Azure et de réseaux locaux vers des services Azure sans exposer le trafic au réseau public.
Service Azure Private Link Service qui peut être la destination d’une connexion Private Link. Chaque instance de plan de contrôle Azure Databricks publie un service Azure Private Link.
Point de terminaison privé Azure Un point de terminaison privé Azure active une connexion privée entre un réseau virtuel et un service Private Link. Pour la connectivité frontale et principale, la cible d’un point de terminaison privé Azure est le plan de contrôle Azure Databricks.

Pour des informations générales sur les points de terminaison privés, consultez l’article Microsoft Qu’est-ce qu’un point de terminaison privé ?.

Choisir le déploiement standard ou simplifié

Il existe deux types de déploiement Private Link pris en charge par Azure Databricks et vous devez en choisir un :

  • Déploiement standard (recommandé) : pour améliorer la sécurité, Databricks vous recommande d’utiliser un point de terminaison privé distinct pour votre connexion front-end depuis un réseau virtuel de transit distinct. Vous pouvez implémenter les connexions Private Link frontales et principales ou simplement la connexion principale. Utilisez un réseau virtuel distinct pour encapsuler l’accès utilisateur séparément du réseau virtuel que vous utilisez pour vos ressources de calcul dans le plan de calcul classique. Créez des points de terminaison Private Link distincts pour l’accès back-end et front-end. Suivez les instructions fournies dans Activer Azure Private Link dans le cadre d’un déploiement standard.
  • Déploiement simplifié : Certaines organisations ne peuvent pas utiliser le déploiement standard pour diverses raisons liées aux stratégies réseau, par exemple l’interdiction de plusieurs points de terminaison privés ou des stratégies dissuadant d’utiliser des réseaux virtuels de transit distincts. Vous pouvez alors utiliser le déploiement simplifié Private Link. Aucun réseau virtuel distinct ne sépare l’accès utilisateur du réseau virtuel que vous utilisez pour vos ressources de calcul dans le plan de calcul classique. Au lieu de cela, un sous-réseau de transit dans le réseau virtuel du plan de calcul est utilisé pour l’accès utilisateur. Il n’existe qu’un point de terminaison Private Link. En règle générale, la connectivité front-end et la connectivité back-end sont configurées. Vous pouvez aussi ne configurer que la connexion back-end. Vous ne pouvez pas choisir d'utiliser uniquement les connexions front-end dans ce type de déploiement. Suivez les instructions fournies dans Activer Azure Private Link dans le cadre d’un déploiement simplifié.

Spécifications

Abonnement Azure

Votre espace de travail Azure Databricks doit être au niveau Premium ou Enterprise.

Architecture réseau de l'espace de travail Azure Databricks

  • Votre espace de travail Azure Databricks doit utiliser l’injection de réseau virtuel pour ajouter n’importe quelle connexion Private Link (même une connexion frontale uniquement).
  • Si vous implémentez la connexion Private Link back-end, votre espace de travail Azure Databricks doit utiliser la connectivité sécurisée des clusters (SCC / No Public IP / NPIP).
  • Vous avez besoin d’un réseau virtuel qui répond aux exigences de l’injection de réseau virtuel.
    • Comme indiqué dans l'article sur l'injection dans le réseau virtuel principal, vous devez définir deux sous-réseaux (désignés dans l'interface utilisateur comme sous-réseau public et sous-réseau privé). Les plages d’adresses IP de réseau virtuel et de sous-réseau que vous utilisez pour Azure Databricks définissent le nombre maximal de nœuds de cluster que vous pouvez utiliser à la fois. Choisissez attentivement ces valeurs.
    • Pour implémenter des Private Link frontaux, des Private Link principaux ou les deux, votre réseau virtuel d’espace de travail a besoin d’un troisième sous-réseau qui contient le point de terminaison Private Link et sa plage d’adresses IP ne doit pas chevaucher la plage de vos autres sous-réseaux d’espace de travail. Cet article fait référence à ce troisième sous-réseau comme sous-réseau de point de terminaison privé. Exemples et captures d’écran supposent le nom private-linkdu sous-réseau. Cela peut être aussi petit que la plage /27CIDR. Ne définissez aucune règle de groupe de sécurité réseau pour un sous-réseau qui contient des points de terminaison privés.
    • Si vous utilisez l’interface utilisateur pour créer des objets, vous devez créer manuellement le réseau et les sous-réseaux avant de créer l’espace de travail Azure Databricks. Si vous souhaitez utiliser un modèle, le modèle fourni par Azure Databricks crée un réseau virtuel et des sous-réseaux appropriés pour vous, y compris les deux sous-réseaux réguliers et un autre pour les points de terminaison privés.
  • Si vous utilisez ou que vous prévoyez d’utiliser un groupe de sécurité réseau ou un pare-feu autour de votre réseau virtuel pour contrôler la sortie, vous devez autoriser les ports 443, 6666, 3306 et 8443-8451 sur le sous-réseau du point de terminaison privé pour la sortie des connexions vers le plan de contrôle Azure Databricks, y compris le relais de connectivité sécurisée des clusters. Si une stratégie de groupes de sécurité réseau est activée sur le point de terminaison privé, vous devez également autoriser les ports 443, 6666 et 8443-8451 pour l’entrée dans le groupe de sécurité réseau sur le sous-réseau où le point de terminaison privé est déployé.

Architecture réseau de la connexion front-end

Pour Private Link front-end uniquement : pour que les utilisateurs accèdent à l'espace de travail à partir de votre réseau local, vous devez ajouter une connectivité privée de ce réseau à votre réseau Azure. Ajoutez cette connectivité avant de configurer Private Link. Les détails varient selon que vous choisissez le déploiement standard ou le déploiement simplifié de Private Link.

  • Pour le déploiement standard, vous créez ou utilisez un réseau virtuel de transit existant, parfois appelé réseau virtuel bastion ou réseau virtuel hub. Ce réseau virtuel doit être accessible à partir de l’environnement utilisateur local à l’aide d’ExpressRoute ou d’une connexion de passerelle VPN. Pour les Private Link frontaux, Databricks recommande de créer un réseau virtuel distinct pour votre connectivité au plan de contrôle, plutôt que de partager le réseau virtuel de l’espace de travail. Notez que le réseau virtuel de transit et son sous-réseau peuvent se trouver dans la même région, zone et groupe de ressources que votre réseau virtuel d’espace de travail et ses sous-réseaux, mais ils n’ont pas à correspondre. Créez un groupe de ressources pour le réseau virtuel de transit distinct et utilisez une autre zone DNS privée pour ce point de terminaison privé. Si vous utilisez deux points de terminaison privés distincts, vous ne pouvez pas partager la zone DNS.
  • Pour le déploiement simplifié, vous créez un sous-réseau de transit dans votre réseau virtuel d’espace de travail. Dans ce déploiement, le sous-réseau de transit n’a pas de point de terminaison privé distinct. Le sous-réseau de transit dans le réseau virtuel d’espace de travail utilise un seul point de terminaison privé pour les connexions back-end et front-end.

Autorisations des utilisateurs Azure

En tant qu'utilisateur Azure, vous disposez d'autorisations en lecture/écriture suffisantes pour :

  • Provisionnez un nouvel espace de travail Azure Databricks.
  • Créez des points de terminaison Azure Private Link dans votre réseau virtuel d’espace de travail et également (pour l’utilisation frontale) votre réseau virtuel de transit.

Si l’utilisateur qui a créé le point de terminaison privé pour le réseau virtuel de transit n’a pas d’autorisations propriétaire/contributeur pour l’espace de travail, un utilisateur distinct disposant d’autorisations propriétaire/contributeur pour l’espace de travail doit approuver manuellement la demande de création de point de terminaison privé.

Vous pouvez activer Private Link sur un espace de travail existant. La mise à niveau nécessite que l'espace de travail utilise l'injection dans un réseau virtuel, la connectivité de cluster sécurisée et le niveau tarifaire Premium. Vous pouvez effectuer une mise à jour vers la connectivité de cluster sécurisée et le niveau tarifaire Premium pendant la mise à jour.

Vous pouvez utiliser un modèle ARM ou un fournisseur azurerm Terraform version 3.41.0 ou ultérieure. Vous pouvez utiliser le Portail Azure pour appliquer un modèle personnalisé et modifier le paramètre dans l'interface utilisateur. Toutefois, il n'existe aucune prise en charge de l'interface utilisateur du Portail Azure pour cette mise à niveau sur l'instance même de l'espace de travail Azure Databricks.

Si vous rencontrez un problème lors de la mise à niveau, vous pouvez répéter l'étape de mise à jour de l'espace de travail en définissant les champs pour désactiver Private Link.

Bien que cette section vise à activer Private Link sur un espace de travail existant, vous pouvez le désactiver sur l'espace de travail existant. Pour cela, utilisez le même appel de mise à jour que celui de l'espace de travail avec le modèle ARM ou une mise à jour Terraform. Pour plus d'informations, consultez la section Étape 4 : Appliquer la mise à jour de l'espace de travail.

Étape 1 : Étudier la configuration requise et la documentation sur cette page

Avant de lancer une mise à niveau vers Private Link, vous devez connaître certains concepts clés et certaines exigences :

  1. Lisez cet article (y compris les concepts et les exigences) avant de continuer.
  2. Déterminez si vous souhaitez utiliser le déploiement standard ou le déploiement simplifié.
  3. Examinez attentivement le contenu de la page de déploiement standard ou de déploiement simplifié (selon l'approche choisie), y compris les différents scénarios. Recherchez le scénario qui correspond à votre cas d'usage. Consignez les valeurs que vous envisagez d'utiliser pour publicNetworkAccess et requiredNsgRules. Pour appliquer la configuration recommandée de Private Link front-end et back-end avec connectivité front-end verrouillée, utilisez les paramètres publicNetworkAccess=Disabled et requiredNsgRules=NoAzureDatabricksRules.

Étape 2 : Arrêter toutes les ressources de calcul

Avant de lancer la mise à niveau, vous devez arrêter toutes les ressources de calcul, comme les clusters, les pools ou les entrepôts SQL classiques. La tentative de mise à niveau échoue si une ressource de calcul de l'espace de travail est en cours d'exécution. Databricks recommande de planifier la mise à niveau pendant les temps d'arrêt.

Important

N'essayez pas de démarrer une ressource de calcul pendant la mise à jour. S'il détermine que des ressources de calcul ont été démarrées (ou sont en cours de démarrage), Azure Databricks les arrête à l'issue de la mise à jour.

Étape 3 : Créer un sous-réseau et des points de terminaison privés

  1. Ajoutez un sous-réseau à votre réseau virtuel d'espace de travail pour vos points de terminaison privés back-end.

  2. Ouvrez l'article sur le déploiement standard ou le déploiement simplifié (selon l'approche choisie).

    Suivez les instructions de la page pour créer les points de terminaison privés qui correspondent à votre type de déploiement.

  3. Créez tous les points de terminaison privés associés à la prise en charge back-end avant d'effectuer la mise à jour de l'espace de travail.

  4. Pour l'accès à l'interface utilisateur, créez un point de terminaison privé avec une sous-ressource databricks_ui_api en vue de prendre en charge l'authentification unique depuis le réseau virtuel de transit. Si plusieurs réseaux virtuels de transit accèdent à l'espace de travail pour un accès front-end, créez plusieurs points de terminaison privés avec une sous-ressource databricks_ui_api.

Étape 4 : Appliquer la mise à jour de l'espace de travail

Plutôt que de créer un espace de travail, appliquez la mise à jour de l'espace de travail.

Vous devez mettre à jour les paramètres publicNetworkAccess et requiredNsgRules avec les valeurs que vous avez choisies à l'étape précédente.

Utilisez l'une des méthodes suivantes :

Appliquer un modèle ARM mis à jour à l’aide du Portail Azure

Notes

Si le nom du groupe de ressources managées est personnalisé, modifiez le modèle en conséquence. Contactez l’équipe de votre compte Azure Databricks pour plus d’informations.

  1. Copiez le JSON du modèle ARM de mise à niveau suivant :

    {
       "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
       "contentVersion": "1.0.0.0",
       "parameters": {
           "location": {
               "defaultValue": "[resourceGroup().location]",
               "type": "String",
               "metadata": {
                   "description": "Location for all resources."
               }
           },
           "workspaceName": {
               "type": "String",
               "metadata": {
                   "description": "The name of the Azure Databricks workspace to create."
               }
           },
           "apiVersion": {
               "defaultValue": "2023-02-01",
               "allowedValues": [
                "2018-04-01",
                   "2020-02-15",
                   "2022-04-01-preview",
                   "2023-02-01"
               ],
               "type": "String",
               "metadata": {
                   "description": "2018-03-15 for 'full region isolation control plane' and 2020-02-15 for 'FedRAMP certified' regions"
               }
           },
           "publicNetworkAccess": {
               "defaultValue": "Enabled",
               "allowedValues": [
                   "Enabled",
                   "Disabled"
               ],
               "type": "String",
               "metadata": {
                   "description": "Whether the workspace allows access from the public Internet"
               }
           },
           "requiredNsgRules": {
               "defaultValue": "AllRules",
               "allowedValues": [
                   "AllRules",
                   "NoAzureDatabricksRules"
               ],
               "type": "String",
               "metadata": {
                   "description": "The security rules that are applied to the security group of the Vnet"
               }
           },
           "enableNoPublicIp": {
               "defaultValue": true,
               "type": "Bool"
           },
           "pricingTier": {
               "defaultValue": "premium",
               "allowedValues": [
                   "premium",
                   "standard",
                   "trial"
               ],
               "type": "String",
               "metadata": {
                   "description": "The pricing tier of workspace."
               }
           },
           "privateSubnetName": {
               "defaultValue": "private-subnet",
               "type": "String",
               "metadata": {
                   "description": "The name of the private subnet."
               }
           },
           "publicSubnetName": {
               "defaultValue": "public-subnet",
               "type": "String",
               "metadata": {
                   "description": "The name of the public subnet."
               }
           },
           "vnetId": {
               "type": "String",
               "metadata": {
                   "description": "The virtual network Resource ID."
               }
           }
       },
       "variables": {
           "managedResourceGroupName": "[concat('databricks-rg-', parameters('workspaceName'), '-', uniqueString(parameters('workspaceName'), resourceGroup().id))]",
           "managedResourceGroupId": "[subscriptionResourceId('Microsoft.Resources/resourceGroups', variables('managedResourceGroupName'))]"
        },
        "resources": [
           {
               "type": "Microsoft.Databricks/workspaces",
               "apiVersion": "[parameters('apiVersion')]",
               "name": "[parameters('workspaceName')]",
               "location": "[parameters('location')]",
               "sku": {
                   "name": "[parameters('pricingTier')]"
               },
               "properties": {
                   "ManagedResourceGroupId": "[variables('managedResourceGroupId')]",
                   "publicNetworkAccess": "[parameters('publicNetworkAccess')]",
                   "requiredNsgRules": "[parameters('requiredNsgRules')]",
                   "parameters": {
                       "enableNoPublicIp": {
                           "value": "[parameters('enableNoPublicIp')]"
                       },
                       "customVirtualNetworkId": {
                           "value": "[parameters('vnetId')]"
                       },
                       "customPublicSubnetName": {
                           "value": "[parameters('publicSubnetName')]"
                       },
                       "customPrivateSubnetName": {
                           "value": "[parameters('privateSubnetName')]"
                       }
                   }
               }
           }
       ]
    }
    
    1. Accédez à la page Déploiement personnalisé du Portail Azure.

    2. Cliquez sur Créer votre propre modèle dans l’éditeur.

    3. Collez le JSON du modèle que vous avez copié.

    4. Cliquez sur Enregistrer.

    5. Pour activer Private Link, définissez les paramètres publicNetworkAccess et requiredNsgRules en fonction du cas d'usage.

      Pour désactiver Private Link, définissez publicNetworkAccess sur true et requiredNsgRules sur AllRules.

    6. Pour les autres champs, reprenez les paramètres que vous avez utilisés pour créer l'espace de travail, comme l'abonnement, la région, le nom de l'espace de travail, les noms des sous-réseaux ou l'ID de la ressource du réseau virtuel existant.

      Important

      Les noms du groupe de ressources, de l'espace de travail et des sous-réseaux doivent être identiques à ceux de l'espace de travail existant. Ainsi, la commande met à jour l'espace de travail existant plutôt que d'en créer un nouveau.

    7. Cliquez sur Revoir + créer.

    8. S’il n’y a aucun problème de validation, cliquez sur créer.

    La mise à jour du réseau peut durer plus de 15 minutes.

Appliquer une mise à jour à l'aide de Terraform

Pour les espaces de travail créés avec Terraform, vous pouvez mettre à jour l'espace de travail pour utiliser Private Link.

Important

Vous devez utiliser terraform-provider-azurerm version 3.41.0 ou ultérieure. Vous devez donc, si nécessaire, mettre à niveau la version de votre fournisseur Terraform. Les versions antérieures tentent de recréer l'espace de travail lorsque vous modifiez l'un de ces paramètres.

Les étapes principales sont les suivantes :

  1. Vous pouvez gérer les paramètres d'espace de travail suivants :

    • public_network_access_enabled : à définir sur true (activé) ou false (désactivé) ;
    • network_security_group_rules_required : à définir sur AllRules ou NoAzureDatabricksRules.

    La mise à jour du réseau peut durer plus de 15 minutes.

  2. Créez vos points de terminaison privés.

Pour obtenir un guide détaillé sur l'activation de Private Link et la création de points de terminaison privés :

La mise à jour du réseau peut durer plus de 15 minutes.

Étape 5 : Tester l'authentification unique des utilisateurs et la connectivité back-end

Suivez votre page de déploiement principale pour savoir comment :

  • Tester l'authentification unique des utilisateurs sur votre espace de travail.
  • Tester la connexion Private Link back-end (obligatoire avec une connexion back-end).

Étape 6 : Valider la mise à jour

  1. Accédez à votre instance de service Azure Databricks dans le Portail Azure.
  2. Dans le volet de navigation de gauche, sous Paramètres, cliquez sur Mise en réseau.
  3. Vérifiez que la valeur d'Autoriser l'accès au réseau public correspond à celle que vous avez définie.
  4. Vérifiez que la valeur de Règles de groupe de sécurité réseau requises correspond à celle que vous avez définie.

Récupération après défaillance

Lorsque la mise à jour d'un espace de travail échoue, celui-ci peut être marqué en échec. En d'autres termes, l'espace de travail ne peut pas effectuer d'opérations de calcul. Pour rétablir l'état Actif d'un espace de travail en échec, consultez les instructions du message d'état de l'opération de mise à jour. Une fois ces problèmes résolus, relancez la mise à jour sur l'espace de travail ayant échoué. Répétez les étapes jusqu'à ce que la mise à jour s'achève correctement. Si vous avez des questions, contactez votre équipe de compte Azure Databricks.