Tutorial: estabelecer ligação ao Azure Data Lake Storage Gen2

Nota

Este artigo descreve padrões herdados para configurar o acesso ao Azure Data Lake Storage Gen2. A Databricks recomenda o uso do Unity Catalog. Consulte Criar um metastore do Unity Catalog e Conectar-se ao armazenamento e serviços de objetos na nuvem usando o Unity Catalog.

Este tutorial orienta você por todas as etapas necessárias para se conectar do Azure Databricks ao Azure Data Lake Storage Gen2 usando OAuth 2.0 com uma entidade de serviço Microsoft Entra ID.

Requisitos

Conclua estas tarefas antes de começar este tutorial:

Etapa 1: Criar uma entidade de serviço do Microsoft Entra ID

Para usar entidades de serviço para se conectar ao Azure Data Lake Storage Gen2, um usuário administrador deve criar um novo aplicativo Microsoft Entra ID. Se você já tiver uma entidade de serviço Microsoft Entra ID disponível, pule para a Etapa 2: Criar um segredo de cliente para sua entidade de serviço.

Para criar uma entidade de serviço do Microsoft Entra ID, siga estas instruções:

  1. Inicie sessão no portal do Azure.

    Nota

    O portal a ser usado é diferente dependendo se seu aplicativo Microsoft Entra ID é executado na nuvem pública do Azure ou em uma nuvem nacional ou soberana. Para obter mais informações, consulte Nuvens nacionais.

  2. Se você tiver acesso a vários locatários, assinaturas ou diretórios, clique no ícone Diretórios + assinaturas (diretório com filtro) no menu superior para alternar para o diretório no qual deseja provisionar a entidade de serviço.

  3. Procure e selecione <Microsoft Entra ID.

  4. Em Gerir, clique em Registos de > aplicações Novo registo.

  5. Em Nome, insira um nome para o aplicativo.

  6. Na seção Tipos de conta suportados, selecione Contas somente neste diretório organizacional (Locatário único).

  7. Clique em Registar.

Etapa 2: Criar um segredo do cliente para sua entidade de serviço

  1. Em Gerenciar, clique em Certificados & segredos.

  2. Na guia Segredos do cliente, clique em Novo segredo do cliente.

    Novo segredo do cliente

  3. No painel Adicionar um segredo do cliente, para Descrição, insira uma descrição para o segredo do cliente.

  4. Em Expira, selecione um período de expiração para o segredo do cliente e clique em Adicionar.

  5. Copie e armazene o valor do segredo do cliente em um local seguro, pois esse segredo do cliente é a senha do seu aplicativo.

  6. Na página Visão geral da página do aplicativo, na seção Essenciais, copie os seguintes valores:

    • ID do aplicativo (cliente)
    • ID do diretório (locatário)

    Visão geral do aplicativo registrado do Azure

Etapa 3: Conceder à entidade de serviço acesso ao Azure Data Lake Storage Gen2

Você concede acesso aos recursos de armazenamento atribuindo funções à entidade de serviço. Neste tutorial, você atribui o Colaborador de Dados de Blob de Armazenamento à entidade de serviço em sua conta do Azure Data Lake Storage Gen2. Poderá ser necessário atribuir outras funções, dependendo dos requisitos específicos.

  1. No portal do Azure, vá para o serviço Contas de armazenamento .
  2. Selecione uma conta de armazenamento do Azure para usar.
  3. Clique em Controle de acesso (IAM).
  4. Clique em + Adicionar e selecione Adicionar atribuição de função no menu suspenso.
  5. Defina o campo Select como o nome do aplicativo Microsoft Entra ID que você criou na etapa 1 e defina Role como Storage Blob Data Contributor.
  6. Clique em Guardar.

Etapa 4: Adicionar o segredo do cliente ao Cofre da Chave do Azure

Você pode armazenar o segredo do cliente na etapa 1 no Cofre da Chave do Azure.

  1. No portal do Azure, vá para o serviço Cofre da chave.
  2. Selecione um Cofre da Chave do Azure para usar.
  3. Nas páginas de configurações do Cofre da Chave, selecione Segredos.
  4. Clique em + Gerar/Importar.
  5. Em Opções de carregamento, selecione Manual.
  6. Em Nome, insira um nome para o segredo. O nome do segredo tem de ser exclusivo dentro de um Key Vault.
  7. Em Valor, cole o Segredo do Cliente que você armazenou na Etapa 1.
  8. Clique em Criar.

Etapa 5: Criar o escopo secreto apoiado pelo Azure Key Vault em seu espaço de trabalho do Azure Databricks

Para fazer referência ao segredo do cliente armazenado em um Cofre de Chaves do Azure, você pode criar um escopo secreto apoiado pelo Cofre de Chaves do Azure no Azure Databricks.

  1. Aceda a https://<databricks-instance>#secrets/createScope. Este URL diferencia maiúsculas de minúsculas; o escopo deve createScope ser maiúsculo.

    Criar escopo

  2. Insira o nome do escopo secreto. Os nomes dos âmbitos de segredos são sensíveis a maiúsculas e minúsculas.

  3. Use o menu suspenso Gerenciar entidade para especificar se Todos os usuários têm MANAGE permissão para esse escopo secreto ou apenas o Criador do escopo secreto (ou seja, você).

  4. Insira o Nome DNS (por exemplo, https://databrickskv.vault.azure.net/) e o ID do Recurso, por exemplo:

    /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/databricks-rg/providers/Microsoft.KeyVault/vaults/databricksKV
    

    Essas propriedades estão disponíveis na guia *Propriedades de Configurações > de um Cofre da Chave do Azure em seu portal do Azure.

  5. Clique no botão Criar.

Etapa 6: Conectar-se ao Azure Data Lake Storage Gen2 usando python

Agora você pode acessar dados com segurança na conta de armazenamento do Azure usando o OAuth 2.0 com sua entidade de serviço de aplicativo Microsoft Entra ID para autenticação de um bloco de anotações do Azure Databricks.

  1. Navegue até seu espaço de trabalho do Azure Databricks e crie um novo bloco de anotações python.

  2. Execute o seguinte código python, com as substituições abaixo, para se conectar ao Azure Data Lake Storage Gen2.

    service_credential = dbutils.secrets.get(scope="<scope>",key="<service-credential-key>")
    
    spark.conf.set("fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net", "OAuth")
    spark.conf.set("fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
    spark.conf.set("fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net", "<application-id>")
    spark.conf.set("fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net", service_credential)
    spark.conf.set("fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net", "https://login.microsoftonline.com/<directory-id>/oauth2/token")
    

    Replace

    • <scope> com o nome do escopo secreto da etapa 5.
    • <service-credential-key> com o nome da chave que contém o segredo do cliente.
    • <storage-account> com o nome da conta de armazenamento do Azure.
    • <application-id>com a ID do Aplicativo (cliente) para o aplicativo Microsoft Entra ID.
    • <directory-id>com a ID de diretório (locatário) para o aplicativo Microsoft Entra ID.

    Agora você conectou com êxito seu espaço de trabalho do Azure Databricks à sua conta do Azure Data Lake Storage Gen2.

Conceda ao seu espaço de trabalho do Azure Databricks acesso ao Azure Data Lake Storage Gen2

Se você configurar um firewall no Azure Data Lake Storage Gen2, deverá definir as configurações de rede para permitir que seu espaço de trabalho do Azure Databricks se conecte ao Azure Data Lake Storage Gen2. Primeiro, certifique-se de que seu espaço de trabalho do Azure Databricks seja implantado em sua própria rede virtual após Implantar o Azure Databricks em sua rede virtual do Azure (injeção de VNet). Em seguida, você pode configurar pontos de extremidade privados ou acesso de sua rede virtual para permitir conexões de suas sub-redes para sua conta do Azure Data Lake Storage Gen2.

Se você estiver usando computação sem servidor como armazéns SQL sem servidor, deverá conceder acesso do plano de computação sem servidor ao Azure Data Lake Storage Gen2. Consulte Rede de plano de computação sem servidor.

Conceder acesso usando pontos de extremidade privados

Você pode usar pontos de extremidade privados para sua conta do Azure Data Lake Storage Gen2 para permitir que seu espaço de trabalho do Azure Databricks acesse dados com segurança por meio de um link privado.

Para criar um ponto de extremidade privado usando o Portal do Azure, consulte Tutorial: Conectar-se a uma conta de armazenamento usando um ponto de extremidade privado do Azure. Certifique-se de criar o ponto de extremidade privado na mesma rede virtual em que seu espaço de trabalho do Azure Databricks está implantado.

Conceder acesso a partir da sua rede virtual

Os pontos de extremidade de serviço da Rede Virtual permitem que você proteja seus recursos críticos de serviço do Azure apenas para suas redes virtuais. Você pode habilitar um ponto de extremidade de serviço para o Armazenamento do Azure dentro da VNet que você usou para seu espaço de trabalho do Azure Databricks.

Para obter mais informações, incluindo instruções da CLI do Azure e do PowerShell, consulte Conceder acesso de uma rede virtual.

  1. Faça logon no Portal do Azure como um usuário com a função de Colaborador da Conta de Armazenamento em sua conta do Azure Data Lake Storage Gen2.
  2. Navegue até sua conta de Armazenamento do Azure e vá para a guia Rede .
  3. Verifique se você selecionou para permitir o acesso de Redes virtuais e endereços IP selecionados.
  4. Em Redes virtuais, selecione Adicionar rede virtual existente.
  5. No painel lateral, em Subscrição, selecione a subscrição em que se encontra a sua rede virtual.
  6. Em Redes virtuais, selecione a rede virtual na qual seu espaço de trabalho do Azure Databricks está implantado.
  7. Em Sub-redes, selecione Selecionar tudo.
  8. Clique em Ativar.
  9. Selecione Guardar para aplicar as alterações.

Resolução de Problemas

Erro: IllegalArgumentException: Segredo não existe com escopo: KeyVaultScope e chave

Este erro provavelmente significa:

  • O escopo apoiado por Databricks que é referido no código não é válido.

Reveja o nome do seu segredo do passo 4 neste artigo.

Erro: com.databricks.common.client.DatabricksServiceHttpClientException: INVALID_STATE: Databricks não pôde acessar keyvault

Este erro provavelmente significa:

  • O escopo apoiado por Databricks mencionado no código não é válido. ou o segredo armazenado no Cofre da Chave expirou.

Reveja o passo 3 para garantir que o segredo do Azure Key Vault é válido. Reveja o nome do seu segredo do passo 4 neste artigo.

Erro: ADAuthenticator$HttpException: Erro HTTP 401: falha no token ao obter token da resposta do AzureAD

Este erro provavelmente significa:

  • A chave secreta do cliente da entidade de serviço expirou.

Crie um novo segredo de cliente seguindo a etapa 2 deste artigo e atualize o segredo em seu Cofre de Chaves do Azure.

Recursos