Habilitar conexões back-end e front-end do Azure Private Link

Este artigo resume o uso do Azure Private Link para habilitar a conectividade privada entre usuários e seus espaços de trabalho Databricks, e também entre clusters no plano de computação clássico e os serviços principais no plano de controle dentro da infraestrutura do espaço de trabalho Databricks.

Para alterar o acesso à rede para armazéns SQL sem servidor, consulte Configurar conectividade privada a partir de computação sem servidor.

Descrição geral

O Private Link fornece conectividade privada de redes virtuais do Azure e redes locais para serviços do Azure sem expor o tráfego à rede pública. O Azure Databricks dá suporte aos seguintes tipos de conexão de Link Privado:

  • Link privado front-end, também conhecido como usuário para espaço de trabalho: uma conexão de link privado front-end permite que os usuários se conectem ao aplicativo Web Azure Databricks, à API REST e à API Databricks Connect por meio de um ponto de extremidade de interface VNet. A conexão front-end também é usada por integrações JDBC/ODBC e Power BI. O tráfego de rede para uma conexão de Link Privado front-end entre uma VNet de trânsito e o plano de controle do Azure Databricks do espaço de trabalho atravessa a rede de backbone da Microsoft.
  • Link privado back-end, também conhecido como plano de computação para controlar plano: os clusters de tempo de execução do Databricks em uma VNet gerenciada pelo cliente (o plano de computação) se conectam aos serviços principais de um espaço de trabalho do Azure Databricks (o plano de controle) na conta de nuvem do Azure Databricks. Isso permite a conectividade privada dos clusters para o ponto de extremidade de retransmissão de conectividade de cluster seguro e o ponto de extremidade da API REST.
  • Ponto de extremidade privado de autenticação do navegador: para dar suporte a conexões front-end privadas com o aplicativo Web Azure Databricks para clientes que não têm conectividade pública com a Internet, você deve adicionar um ponto de extremidade privado de autenticação do navegador para dar suporte a retornos de chamada de logon único (SSO) para o aplicativo Web Azure Databricks a partir da ID do Microsoft Entra (anteriormente Azure Ative Directory). Se você permitir conexões da sua rede com a Internet pública, adicionar um ponto de extremidade privado de autenticação do navegador é recomendado, mas não necessário. Um ponto de extremidade privado de autenticação do navegador é uma conexão privada com o tipo browser_authenticationde sub-recurso .

Se você implementar o Private Link para conexões front-end e back-end, poderá opcionalmente exigir conectividade privada para o espaço de trabalho, o que significa que o Azure Databricks rejeita quaisquer conexões pela rede pública. Se você se recusar a implementar os tipos de conexão front-end ou back-end, não poderá impor esse requisito.

A maior parte deste artigo é sobre a criação de um novo espaço de trabalho, mas você pode habilitar ou desabilitar o Link privado em um espaço de trabalho existente. Consulte Habilitar ou desabilitar o Link Privado do Azure em um espaço de trabalho existente.

Terminologia

A tabela a seguir descreve terminologia importante.

Terminologia Description
Azure Private Link Uma tecnologia do Azure que fornece conectividade privada de redes virtuais do Azure e redes locais para serviços do Azure sem expor o tráfego à rede pública.
Serviço de Link Privado do Azure Um serviço que pode ser o destino de uma conexão Private Link. Cada instância do plano de controle do Azure Databricks publica um serviço de Link Privado do Azure.
Ponto final privado do Azure Um ponto de extremidade privado do Azure permite uma conexão privada entre uma VNet e um serviço de Link Privado. Para conectividade front-end e back-end, o destino de um ponto de extremidade privado do Azure é o plano de controle do Azure Databricks.

Para obter informações gerais sobre pontos de extremidade privados, consulte o artigo da Microsoft O que é um ponto de extremidade privado?.

Escolha a implantação padrão ou simplificada

Há dois tipos de implantação de Link Privado que o Azure Databricks oferece suporte e você deve escolher um:

  • Implantação padrão (recomendada): para maior segurança, o Databricks recomenda que você use um ponto de extremidade privado separado para sua conexão front-end de uma VNet de trânsito separada. Você pode implementar conexões de Link Privado front-end e back-end ou apenas a conexão back-end. Use uma VNet separada para encapsular o acesso do usuário, separada da VNet que você usa para seus recursos de computação no plano de computação clássico. Crie pontos de extremidade de Link privado separados para acesso back-end e front-end. Siga as instruções em Habilitar o Azure Private Link como uma implantação padrão.
  • Implantação simplificada: algumas organizações não podem usar a implantação padrão por vários motivos de política de rede, como não permitir mais de um ponto de extremidade privado ou desencorajar VNets de trânsito separadas. Como alternativa, você pode usar a implantação simplificada do Private Link. Nenhuma VNet separada do acesso do usuário da VNet que você usa para seus recursos de computação no plano de computação clássico. Em vez disso, uma sub-rede de trânsito na VNet do plano de computação é usada para acesso do usuário. Há apenas um único ponto de extremidade de Link Privado. Normalmente, a conectividade front-end e back-end é configurada. Opcionalmente, você pode configurar apenas a conexão back-end. Não é possível optar por usar apenas as conexões front-end nesse tipo de implantação. Siga as instruções em Habilitar o Azure Private Link como uma implantação simplificada.

Requisitos

Subscrição do Azure

Seu espaço de trabalho do Azure Databricks deve estar na camada Premium ou Enterprise.

Arquitetura de rede do espaço de trabalho do Azure Databricks

  • Seu espaço de trabalho do Azure Databricks deve usar a injeção de VNet para adicionar qualquer conexão de Link Privado (até mesmo uma conexão somente front-end).
  • Se você implementar a conexão de Link Privado back-end, seu espaço de trabalho do Azure Databricks deverá usar conectividade de cluster segura (SCC / Sem IP Público / NPIP).
  • Você precisa de uma VNet que satisfaça os requisitos da injeção de VNet.
    • Conforme discutido no artigo principal de injeção de VNet, você deve definir duas sub-redes (referidas na interface do usuário como a sub-rede pública e a sub-rede privada). Os intervalos de IP de rede virtual e de sub-rede que você usa para o Azure Databricks definem o número máximo de nós de cluster que você pode usar ao mesmo tempo. Escolha estes valores cuidadosamente.
    • Para implementar o Link Privado front-end, o Link Privado back-end ou ambos, a VNet do espaço de trabalho precisa de uma terceira sub-rede que contenha o ponto de extremidade do Link Privado e seu intervalo de endereços IP não deve se sobrepor ao intervalo das outras sub-redes do espaço de trabalho. Este artigo refere-se a esta terceira sub-rede como a sub-rede privada do ponto final. Exemplos e capturas de tela assumem o nome private-linkda sub-rede. Isso pode ser tão pequeno quanto o intervalo /27CIDR. Não defina nenhuma regra NSG para uma sub-rede que contenha pontos de extremidade privados.
    • Se você usar a interface do usuário para criar objetos, precisará criar a rede e as sub-redes manualmente antes de criar o espaço de trabalho do Azure Databricks. Se você quiser usar um modelo, o modelo que o Azure Databricks fornece cria uma VNet e sub-redes apropriadas para você, incluindo as duas sub-redes regulares mais outra para pontos de extremidade privados.
  • Se você usar ou planeja usar um grupo de segurança de rede ou firewall em torno de sua VNet para controlar a saída, deverá permitir que as portas 443, 6666, 3306 e 8443-8451 na sub-rede de ponto de extremidade privada saiam para conexões com o plano de controle do Azure Databricks, incluindo a retransmissão de conectividade de cluster seguro. Se você tiver uma política de Grupos de Segurança de Rede habilitada no ponto de extremidade privado, também precisará permitir a entrada das portas 443, 6666 e 8443-8451 no grupo de segurança de rede na sub-rede onde o ponto de extremidade privado está implantado.
  • Para se conectar entre sua rede e o portal do Azure e seus serviços, talvez seja necessário adicionar URLs do portal do Azure à sua lista de permissões. Consulte Permitir as URLs do portal do Azure em seu firewall ou servidor proxy

Arquitetura de rede de conexão front-end

Somente para Link Privado front-end, para que os usuários acessem o espaço de trabalho de sua rede local, você deve adicionar conectividade privada dessa rede à sua rede do Azure. Adicione essa conectividade antes de configurar o Private Link. Os detalhes variam de acordo com a escolha da implantação padrão do Link Privado ou da implantação simplificada.

  • Para a implantação padrão, você criaria ou usaria uma VNet de trânsito existente, às vezes chamada de VNet bastion ou VNet de hub. Essa rede virtual deve ser acessível a partir do ambiente de usuário local usando a rota expressa ou uma conexão de gateway VPN. Para o Link Privado front-end, o Databricks recomenda a criação de uma VNet separada para sua conectividade com o plano de controle, em vez de compartilhar a VNet do espaço de trabalho. Observe que a VNet de trânsito e sua sub-rede podem estar na mesma região, zona e grupo de recursos que a VNet do espaço de trabalho e suas sub-redes, mas não precisam corresponder. Crie um grupo de recursos para a VNet de trânsito separada e use uma zona DNS privada diferente para esse ponto de extremidade privado. Se você usar dois pontos de extremidade privados separados, não poderá compartilhar a zona DNS.
  • Para a implantação simplificada, você cria uma sub-rede de trânsito na VNet do espaço de trabalho. Nesta implantação, a sub-rede de trânsito não tem um ponto de extremidade privado separado. A sub-rede de trânsito na VNet do espaço de trabalho usa um único ponto de extremidade privado para conexões back-end e front-end.

Permissões de usuário do Azure

Como usuário do Azure, você deve ter permissões de leitura/gravação suficientes para:

  • Provisione um novo espaço de trabalho do Azure Databricks.
  • Crie pontos de extremidade do Azure Private Link em sua VNet de espaço de trabalho e também (para uso front-end) sua VNet de trânsito.

Se o usuário que criou o ponto de extremidade privado para a VNet de trânsito não tiver permissões de proprietário/colaborador para o espaço de trabalho, um usuário separado com permissões de proprietário/colaborador para o espaço de trabalho deverá aprovar manualmente a solicitação de criação de ponto de extremidade privado.

Pode ativar o Private Link numa área de trabalho existente. A atualização requer que a área de trabalho utilize a Injeção da VNet, a conectividade a clusters seguros e o escalão de preços Premium. Pode atualizar para proteger a conectividade ao cluster e para o escalão de preços Premium durante a atualização.

Você pode usar um modelo ARM ou azurerm provedor Terraform versão 3.41.0+. Você pode usar o portal do Azure para aplicar um modelo personalizado e modificar o parâmetro na interface do usuário. No entanto, não há suporte à interface do usuário do Portal do Azure para essa atualização na própria instância do espaço de trabalho do Azure Databricks.

Se algo der errado com a atualização e você puder repetir a etapa de atualização do espaço de trabalho, mas definir os campos para desativar o Link Privado.

Embora o foco desta seção seja habilitar o Link Privado em um espaço de trabalho existente, você pode desativá-lo em um espaço de trabalho existente usando a mesma chamada de atualização do espaço de trabalho com o modelo ARM ou uma atualização do Terraform. Consulte a etapa Etapa 4: Aplicar a atualização do espaço de trabalho para obter detalhes.

Etapa 1: Leia os requisitos e a documentação nesta página

Antes de tentar uma atualização para o Private Link, há conceitos e requisitos importantes que você deve ler:

  1. Leia este artigo, incluindo conceitos e requisitos, antes de prosseguir.
  2. Determine se você deseja usar a implantação padrão ou a implantação simplificada.
  3. Na página para implantação padrão ou a implantação simplificada (qualquer abordagem que você usar), revise cuidadosamente a página, incluindo os vários cenários. Encontre o cenário que corresponde ao seu caso de uso. Anote para quais valores você pretende usar e publicNetworkAccessrequiredNsgRules. Para a configuração recomendada de Link Privado front-end e back-end com conectividade front-end bloqueada, use as configurações publicNetworkAccess=Disabled e requiredNsgRules=NoAzureDatabricksRules

Etapa 2: Pare todos os recursos de computação

Antes de tentar essa atualização, você deve parar todos os recursos de computação, como clusters, pools ou armazéns SQL clássicos. Nenhum recurso de computação do espaço de trabalho pode estar em execução ou a tentativa de atualização falha. A Databricks recomenda planejar o tempo da atualização para o tempo de inatividade.

Importante

Não tente iniciar nenhum recurso de computação durante a atualização. Se o Azure Databricks determinar que os recursos de computação foram iniciados (ou ainda estão começando), o Azure Databricks os encerrará após a atualização.

Etapa 3: Criar pontos de extremidade privados e de sub-rede

  1. Adicione uma sub-rede à VNet do seu espaço de trabalho para seus pontos de extremidade privados de back-end.

  2. Abra o artigo para implantação padrão ou a implantação simplificada (qualquer abordagem que você usar).

    Siga as instruções nessa página para criar os pontos de extremidade privados que correspondem ao seu tipo de implantação.

  3. Crie todos os seus pontos de extremidade privados para suporte back-end antes de fazer a atualização do espaço de trabalho.

  4. Para acesso à interface do usuário, crie um ponto de extremidade privado com subrecurso databricks_ui_api para dar suporte ao SSO a partir de sua VNet de trânsito. Se você tiver mais de uma VNet de trânsito que acesse o espaço de trabalho para acesso front-end, crie vários pontos de extremidade privados com subrecurso databricks_ui_api.

Etapa 4: Aplicar a atualização do espaço de trabalho

Em vez de criar um novo espaço de trabalho, você precisa aplicar a atualização do espaço de trabalho.

Você deve atualizar os publicNetworkAccess parâmetros e requiredNsgRules para os valores escolhidos em uma etapa anterior.

Use um destes métodos:

  • Usar a interface do usuário do portal do Azure (sem modelo)

  • Aplicar um modelo ARM atualizado usando o portal do Azure

  • Aplicar uma atualização usando o Terraform

    Usar a interface do usuário do portal do Azure (sem modelo)

    1. Vá para sua instância do Serviço Azure Databricks no portal do Azure.

    2. No painel de navegação esquerdo, em Configurações, clique em Rede.

    3. Defina Permitir acesso à rede pública e Regras NSG necessárias para os valores apropriados com base no seu caso de uso. Consulte Etapa 1: Leia os requisitos e a documentação nesta página.

      Nota

      Para habilitar o Azure Private Link, o espaço de trabalho deve habilitar a conectividade de cluster segura (às vezes chamada de Sem IP Público). Se ainda não estiver habilitado, ao mesmo tempo que a atualização do Link Privado, você poderá optar por habilitar a conectividade de cluster seguro definindo Sem IP Público como Verdadeiro. No entanto, o Azure Databricks recomenda habilitar a conectividade de cluster seguro como uma etapa separada antes de habilitar o Private Link para que você possa validar separadamente o sucesso.

    4. Clique em Guardar.

    A atualização de rede pode levar mais de 15 minutos para ser concluída.

Aplicar um modelo ARM atualizado usando o portal do Azure

Nota

Se o grupo de recursos gerenciados tiver um nome personalizado, você deverá modificar o modelo de acordo. Entre em contato com sua equipe de conta do Azure Databricks para obter mais informações.

  1. Copie o seguinte modelo ARM de atualização JSON:

    {
       "$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. Vá para a página de implantação personalizada do portal do Azure.

    2. Clique em Criar seu próprio modelo no editor.

    3. Cole no JSON para o modelo que você copiou.

    4. Clique em Guardar.

    5. Para ativar o Private Link, defina publicNetworkAccess e requiredNsgRules defina parâmetros de acordo com o seu caso de uso.

      Para desativar o Private Link, defina publicNetworkAccess como true e defina requiredNsgRules como AllRules.

    6. Para outros campos, use os mesmos parâmetros que você usou para criar o espaço de trabalho, como assinatura, região, nome do espaço de trabalho, nomes de sub-rede, ID do recurso da rede virtual existente.

      Importante

      O nome do grupo de recursos, o nome do espaço de trabalho e os nomes de sub-rede devem ser idênticos ao espaço de trabalho existente para que este comando atualize o espaço de trabalho existente em vez de criar um novo espaço de trabalho.

    7. Clique em Rever + Criar.

    8. Se não houver problemas de validação, clique em Criar.

    A atualização de rede pode levar mais de 15 minutos para ser concluída.

Aplicar uma atualização usando o Terraform

Para espaços de trabalho criados com o Terraform, você pode atualizar o espaço de trabalho para usar o Link Privado.

Importante

Você deve usar terraform-provider-azurerm a versão 3.41.0 ou posterior, portanto, atualize sua versão do provedor Terraform conforme necessário. As versões anteriores tentam recriar o espaço de trabalho se você alterar qualquer uma dessas configurações.

As etapas de alto nível são:

  1. Altere as seguintes configurações do espaço de trabalho:

    • public_network_access_enabled: Definido como true (Ativado) ou false (Desativado)
    • network_security_group_rules_required: Defina como AllRules ou NoAzureDatabricksRules.

    A atualização de rede pode levar mais de 15 minutos para ser concluída.

  2. Crie seus endpoints privados.

Para obter um guia detalhado sobre como habilitar o Private Link e criar os pontos de extremidade privados:

  • Para uma implantação padrão, consulte o guia Terraform para implantação padrão do Azure Private Link
  • Para obter uma implantação simplificada, consulte o guia Terraform para implantação simplificada do Azure Private Link

A atualização de rede pode levar mais de 15 minutos para ser concluída.

Etapa 5: Testar a autenticação SSO do usuário e a conectividade de back-end

Siga sua página de implantação principal para obter detalhes sobre como:

  • Teste a autenticação SSO do usuário em seu espaço de trabalho.
  • Testar conexão de link privado back-end (necessária para uma conexão back-end)

Etapa 6: Validar a atualização

  1. Vá para sua instância do Serviço Azure Databricks no portal do Azure.
  2. No painel de navegação esquerdo, em Configurações, clique em Rede.
  3. Confirme se o valor de Permitir Acesso à Rede Pública corresponde ao valor definido.
  4. Confirme se o valor de Required NSG Rules corresponde ao valor que você definiu.

Recuperação de falhas

Se uma atualização de espaço de trabalho falhar, o espaço de trabalho poderá ser marcado como um estado Falha , o que significa que o espaço de trabalho não pode executar operações de computação. Para restaurar um espaço de trabalho com falha de volta ao estado Ativo , revise as instruções na mensagem de status da operação de atualização. Depois de corrigir os problemas, refaça a atualização no espaço de trabalho com falha. Repita as etapas até que a atualização seja concluída com êxito. Se você tiver dúvidas, entre em contato com sua equipe de conta do Azure Databricks.