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:
- Crie um espaço de trabalho do Azure Databricks. Consulte Guia de início rápido: criar um espaço de trabalho do Azure Databricks
- Crie uma conta de armazenamento do Azure Data Lake Storage Gen2. Consulte Guia de início rápido: criar uma conta de armazenamento do Azure Data Lake Storage Gen2.
- Crie um Cofre da Chave do Azure. Consulte Guia de início rápido: criar um cofre de chaves do Azure
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:
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.
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.
Procure e selecione <Microsoft Entra ID.
Em Gerir, clique em Registos de > aplicações Novo registo.
Em Nome, insira um nome para o aplicativo.
Na seção Tipos de conta suportados, selecione Contas somente neste diretório organizacional (Locatário único).
Clique em Registar.
Etapa 2: Criar um segredo do cliente para sua entidade de serviço
Em Gerenciar, clique em Certificados & segredos.
Na guia Segredos do cliente, clique em Novo segredo do cliente.
No painel Adicionar um segredo do cliente, para Descrição, insira uma descrição para o segredo do cliente.
Em Expira, selecione um período de expiração para o segredo do cliente e clique em Adicionar.
Copie e armazene o valor do segredo do cliente em um local seguro, pois esse segredo do cliente é a senha do seu aplicativo.
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)
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.
- No portal do Azure, vá para o serviço Contas de armazenamento .
- Selecione uma conta de armazenamento do Azure para usar.
- Clique em Controle de acesso (IAM).
- Clique em + Adicionar e selecione Adicionar atribuição de função no menu suspenso.
- 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.
- 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.
- No portal do Azure, vá para o serviço Cofre da chave.
- Selecione um Cofre da Chave do Azure para usar.
- Nas páginas de configurações do Cofre da Chave, selecione Segredos.
- Clique em + Gerar/Importar.
- Em Opções de carregamento, selecione Manual.
- Em Nome, insira um nome para o segredo. O nome do segredo tem de ser exclusivo dentro de um Key Vault.
- Em Valor, cole o Segredo do Cliente que você armazenou na Etapa 1.
- 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.
Aceda a
https://<databricks-instance>#secrets/createScope
. Este URL diferencia maiúsculas de minúsculas; o escopo devecreateScope
ser maiúsculo.Insira o nome do escopo secreto. Os nomes dos âmbitos de segredos são sensíveis a maiúsculas e minúsculas.
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ê).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.
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.
Navegue até seu espaço de trabalho do Azure Databricks e crie um novo bloco de anotações python.
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.
- 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.
- Navegue até sua conta de Armazenamento do Azure e vá para a guia Rede .
- Verifique se você selecionou para permitir o acesso de Redes virtuais e endereços IP selecionados.
- Em Redes virtuais, selecione Adicionar rede virtual existente.
- No painel lateral, em Subscrição, selecione a subscrição em que se encontra a sua rede virtual.
- Em Redes virtuais, selecione a rede virtual na qual seu espaço de trabalho do Azure Databricks está implantado.
- Em Sub-redes, selecione Selecionar tudo.
- Clique em Ativar.
- 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.