Tutorial: Conectar-se ao Azure Data Lake Storage Gen2

Observação

Este artigo descreve padrões herdados para configurar o acesso ao Azure Data Lake Storage Gen2. O Databricks recomenda o uso do Catálogo do Unity. Consulte Criar um metastore do Catálogo do Unity e Conectar-se ao armazenamento de objetos de nuvem usando o Catálogo do Unity.

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

Requisitos

Conclua estas tarefas antes de iniciar este tutorial:

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

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

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

  1. Entre no portal do Azure.

    Observação

    O portal a ser usado é diferente dependendo se o aplicativo do Microsoft Entra ID é executado na nuvem pública do Azure ou em uma nuvem nacional ou soberana. Para obter mais informações, confira as 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 você quer provisionar a entidade de serviço.

  3. Pesquise e selecione <Microsoft Entra ID.

  4. Em Gerenciar, clique em Registros de aplicativo > Novo registro.

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

  6. Em Tipos de conta com suporte, selecione Somente contas deste diretório organizacional (Locatário único).

  7. Clique em Registrar.

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

  1. Em Gerenciar, clique em Certificados e segredos.

  2. Na guiaSegredos do cliente, clique em Novo segredo do cliente.

    Novo segredo do cliente

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

  4. Em Expirar, selecione um prazo 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 para seu aplicativo.

  6. Na página Visão geral do aplicativo, na seção Informações gerais, 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 às entidades de serviço acesso às contas do Azure Data Lake Storage Gen2

Você concede acesso aos recursos de armazenamento atribuindo funções à entidade de serviço. Neste tutorial, você atribuirá o Colaborador de Dados do Blob de Armazenamento à entidade de serviço em sua conta do Azure Data Lake Storage Gen2. Você poderá precisar de 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 a ser usada.
  3. Clique em Controle de Acesso (IAM).
  4. Clique em + Adicionare selecione Adicionar atribuição de função no menu suspenso.
  5. Defina o campo Selecionar para o nome do aplicativo do Microsoft Entra ID que você criou na etapa 1 e defina a Função como Colaborador de dados de BLOB de armazenamento.
  6. Clique em Save (Salvar).

Etapa 4: adicionar o segredo do cliente ao Azure Key Vault

Você pode armazenar o segredo do cliente da etapa 1 no Azure Key Vault.

  1. No portal do Azure, acesse o serviço Key vault.
  2. Selecione um Azure Key Vault para uso.
  3. Na página de configurações do Key Vault, selecione Segredos.
  4. Clique em + Gerar/Importar.
  5. Em Opções de upload, selecione Manual.
  6. Para Nome, insira um nome para o segredo. O nome do segredo precisa 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: Crie um escopo secreto com suporte do Azure Key Vault em seu espaço de trabalho do Azure Databricks

Para referenciar segredos do cliente armazenados em um Azure Key Vault, crie um escopo de segredos com suporte do Azure Key Vault no Azure Databricks.

  1. Ir para https://<databricks-instance>#secrets/createScope. Essa URL diferencia maiúsculas e minúsculas; o scope em createScope deve estar com letra maiúscula.

    Criar escopo

  2. Insira o nome do escopo de segredos. Os nomes de escopo secreto não diferenciam maiúsculas de minúsculas.

  3. Use o menu suspenso Gerenciar Entidade de Segurança para especificar se Todos os Usuários têm a permissão MANAGE para esse escopo de segredos ou apenas o Criador do escopo de segredos (ou seja, você).

  4. Insira o Nome DNS (por exemplo, https://databrickskv.vault.azure.net/) e a 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 um Azure Key Vault em seu portal do Azure.

    Guia Propriedades do Azure Key Vault

  5. Selecione o botão Criar.

Etapa 6: Conectar-se a 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 do aplicativo do Microsoft Entra ID para autenticação de um notebook do Azure Databricks.

  1. Navegue até seu workspace do Azure Databricks e crie um novo notebook do Python.

  2. Execute o código Python a seguir, 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")
    

    Substitua

    • <scope> com o nome do escopo do segredo 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) do aplicativo Microsoft Entra ID.
    • <directory-id> com a ID do Diretório (locatário) do aplicativo Microsoft Entra ID.

    Agora você conectou com êxito seu workspace do Azure Databricks à sua conta do Azure Data Lake Storage Gen2.

Conceder ao workspace 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 o Azure Databricks se conecte ao Azure Data Lake Storage Gen2. Primeiro, verifique se o workspace do Azure Databricks está 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 da sua rede virtual para permitir conexões de suas sub-redes com sua conta Azure Data Lake Storage Gen2.

Se você estiver usando computação sem servidor, como SQL warehouses sem servidor, precisará conceder acesso do plano de computação sem servidor ao Azure Data Lake Storage Gen2. Confira Rede de plano de computação sem servidor.

Conceder acesso usando pontos de extremidade privados

Você pode usar pontos de extremidade privados na sua conta do Azure Data Lake Storage Gen2 para permitir que seu workspace 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 criou o ponto de extremidade privado na mesma rede virtual na qual o workspace do Azure Databricks está implantado.

Conceder acesso de uma rede virtual

Um ponto de extremidade de serviço de rede virtual permite que você possa garantir os recursos essenciais do serviço do Azure somente para suas redes virtuais. Você pode habilitar um ponto de extremidade de serviço para o Armazenamento do Azure na VNet que você usou para o workspace 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 Colaborador da Conta de Armazenamento na sua conta Azure Data Lake Storage Gen2.
  2. Navegue até sua conta de Armazenamento do Azure e acesse a guia Rede .
  3. Verifique se você selecionou a permissão de acesso de redes virtuais selecionadas e endereços IP.
  4. Em Redes virtuais, selecione Adicionar rede virtual existente.
  5. No painel lateral, em Assinatura, selecione a assinatura na qual está a sua rede virtual.
  6. Em Redes virtuais, selecione a rede virtual na qual o workspace do Azure Databricks está implantado.
  7. Em Sub-redes, escolha Selecionar tudo.
  8. Clique em Habilitar.
  9. Selecione Salvar para salvar suas alterações.

Solução de problemas

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

Esse erro provavelmente significa que:

  • O escopo com suporte do Databricks referenciado no código não é válido.

Examine o nome do segredo da etapa 4 neste artigo.

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

Esse erro provavelmente significa que:

  • O escopo com suporte do Databricks que é referenciado no código não é válido. ou o segredo armazenado no Key Vault expirou.

Examine a etapa 3 para garantir que o segredo do Azure Key Vault é válido. Examine o nome do segredo da etapa 4 neste artigo.

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

Esse erro provavelmente significa que:

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

Crie um novo segredo do cliente após a etapa 2 deste artigo e atualize o segredo no Azure Key Vault.

Recursos