Compartilhar via


Acessar o Azure Data Lake Storage usando a passagem de credencial do Microsoft Entra ID (herdada)

Importante

Esta documentação foi desativada e pode não estar atualizada.

A passagem de credenciais foi preterida a partir do Databricks Runtime 15.0 e será removida em versões futuras do Databricks Runtime. O Databricks recomenda que você atualize para o Catálogo do Unity. O Unity Catalog simplifica a segurança e a governança de seus dados fornecendo um local central para administrar e auditar o acesso a dados em vários workspaces em sua conta. Veja O que é o Catálogo do Unity?.

Para uma postura aprimorada de segurança e governança, contate sua equipe de conta do Azure Databricks para desativar a passagem de credenciais em sua conta do Azure Databricks.

Observação

Este artigo contém referências ao termo lista de permissões, que o Azure Databricks não usa mais. Quando o termo for removido do software, também o removeremos deste artigo.

Você pode autenticar automaticamente no ADLS a partir dos clusters do Azure Databricks usando a mesma identidade do Microsoft Entra ID que você usa para fazer login no Azure Databricks. Ao habilitar a passagem de credencial do Azure Data Lake Storage para seu cluster, os comandos executados nesse cluster podem ler e gravar dados no Azure Data Lake Storage sem exigir que você configure as credenciais da entidade de serviço para acesso ao armazenamento.

O suporte à passagem de credenciais existe exclusivamente para o Azure Data Lake Storage. O Armazenamento de Blob do Azure não dá suporte à passagem de credenciais.

Este artigo cobre:

  • Habilitando a passagem de credencial para clusters padrão e de alta simultaneidade.
  • Configurar a passagem de credencial e inicializar recursos de armazenamento em contas do ADLS.
  • Acessar recursos do ADLS diretamente quando a passagem de credencial estiver habilitada.
  • Acessar recursos do ADLS por meio de um ponto de montagem quando a passagem de credencial estiver habilitada.
  • Recursos e limitações com suporte ao usar a passagem de credencial.

Requisitos

  • Plano Premium. Veja Atualizar ou realizar o downgrade de um Workspace do Azure Databricks para obter detalhes sobre como atualizar um plano padrão para um plano premium.
  • Uma conta de armazenamento do Azure Data Lake Storage. As contas de armazenamento do Azure Data Lake Storage devem usar o namespace hierárquico para trabalhar com a passagem de credencial do Azure Data Lake Storage. Consulte Criar uma conta de armazenamento para obter instruções sobre como criar uma nova conta do ADLS, incluindo como habilitar o namespace hierárquico.
  • Permissões de usuário configuradas corretamente para o Azure Data Lake Storage. Um Azure Databricks administrador precisa garantir que os usuários tenham as funções corretas, por exemplo, Colaborador de Dados de Blob do Armazenamento, para ler e gravar dados armazenados no Azure Data Lake Storage. Confira Usar o portal do Azure para atribuir uma função do Azure para acesso aos dados de blob e de fila.
  • Entenda os privilégios dos administradores em workspaces que estão habilitados para a passagem e examine suas atribuições de administrador de workspace existentes. Os administradores do workspace podem gerenciar operações para seu workspace, incluindo adicionar usuários e entidades de serviço, criar clusters e delegar outros usuários para serem administradores do workspace. As tarefas de gerenciamento de workspace, como gerenciar a propriedade do trabalho e exibir notebooks, podem dar acesso indireto aos dados registrados no Azure Data Lake Storage. O administrador do workspace é uma função privilegiada que você deve distribuir cuidadosamente.
  • Você não pode usar um cluster configurado com credenciais do ADLS, por exemplo, credenciais de entidade de serviço, com passagem de credencial.

Importante

Não é possível autenticar no Azure Data Lake Storage com suas credenciais do Microsoft Entra ID se você estiver por trás de um firewall que não foi configurado para permitir o tráfego para o Microsoft Entra ID. O Firewall do Azure bloqueia o acesso ao Active Directory por padrão. Para permitir o acesso, configure a marca de serviço AzureActiveDirectory. É possível encontrar informações equivalentes para soluções de virtualização de rede na marca AzureActiveDirectory no arquivo JSON intervalos de IP do Azure e marcas de serviço. Para obter mais informações, confira Marcas de serviço do Firewall do Azure.

Recomendações de registro em log

É possível registrar identidades passadas para o armazenamento do ADLS nos logs de diagnóstico do armazenamento do Azure. O registro em log de identidades permite que solicitações do ADLS sejam vinculadas a usuários individuais dos clusters Azure Databricks. Ative o log de diagnóstico em sua conta de armazenamento para começar a receber esses logs da seguinte forma: configure usando o PowerShell com o comando Set-AzStorageServiceLoggingProperty. Especifique 2.0 como a versão, pois o formato de entrada de log 2.0 inclui o nome principal do usuário na solicitação.

Habilitar a passagem de credenciais do Azure Data Lake Storage para um cluster de Alta Simultaneidade

Os clusters de alta simultaneidade podem ser compartilhados por vários usuários. Eles só suportam Python e SQL com passagem de credencial do Azure Data Lake Storage.

Importante

Habilitar a passagem de credencial do Azure Data Lake Storage para um cluster de Alta Simultaneidade bloqueia todas as portas no cluster, exceto as portas 44, 53 e 80.

  1. Ao criar um cluster, de definido Modo de Clustercomo Alta Simultaneidade.
  2. Em Opções Avançadas, selecione Habilitar passagem de credencial para acesso a dados no nível do usuário e permitir apenas comandos do Python e SQL.

Habilitar a passagem de credenciais para clusters de alta simultaneidade

Habilitar a passagem de credenciais do Azure Data Lake Storage para um cluster Standard

os clusters Standard com passagem de credencial são limitados a um único usuário. Os clusters Standard dão suporte a Python, SQL, Scala e R. No Databricks Runtime 10.4 LTS e superior, há suporte para sparklyr.

Você deve atribuir um usuário na criação do cluster, mas o cluster pode ser editado por um usuário com permissões PODE GERENCIAR a qualquer momento para substituir o usuário original.

Importante

O usuário atribuído ao cluster deve ter pelo menos uma permissão PODE ANEXAR A para o cluster para executar comandos no cluster. Os administradores do workspace e o criador do cluster têm permissões PODE GERENCIAR, mas não podem executar comandos no cluster, a menos que seja o usuário do cluster designado.

  1. Ao criar um cluster, definido o Modo de Cluster como Standard.
  2. Em Opções Avançadas, selecione Habilitar passagem de credencial para acesso a dados no nível do usuário e selecione o nome de usuário na lista suspensa Acesso de Usuário Único.

Habilitar a passagem de credenciais para clusters Standard

Criar um contêiner

Os contêineres fornecem uma maneira de organizar objetos em uma conta de armazenamento do Azure.

Acessar o Azure Data Lake Storage diretamente usando a passagem de credenciais

Depois de configurar a passagem de credenciais do Azure Data Lake Storage e criar contêineres de armazenamento de dados, você pode acessar dados diretamente no Azure Data Lake Storage usando um abfss:// caminho.

Armazenamento do Azure Data Lake

Pitão

spark.read.format("csv").load("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/MyData.csv").collect()

R

# SparkR
library(SparkR)
sparkR.session()
collect(read.df("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/MyData.csv", source = "csv"))

# sparklyr
library(sparklyr)
sc <- spark_connect(method = "databricks")
sc %>% spark_read_csv("abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/MyData.csv") %>% sdf_collect()
  • Substitua <container-name> pelo nome de um contêiner na conta de armazenamento do ADLS.
  • Substitua <storage-account-name> pelo nome da conta de armazenamento do ADLS.

Montar o Azure Data Lake Storage para DBFS usando a passagem de credenciais

Você pode montar uma conta do Azure Data Lake Storage ou uma pasta dentro dela em O que é DBFS?. A montagem é um ponteiro para um repositório data lake, portanto, os dados nunca são sincronizados localmente.

Ao montar dados usando um cluster habilitado com passagem de credencial do Azure Data Lake Storage, todas as leituras ou gravações no ponto de montagem usam suas credenciais do Microsoft Entra ID. Esse ponto de montagem ficará visível para outros usuários, mas os únicos usuários que terão acesso de leitura e gravação são aqueles que:

  • Têm acesso à conta de armazenamento subjacente do Azure Data Lake Storage
  • Estão usando um cluster habilitado para passagem de credencial do Azure Data Lake Storage

Armazenamento do Azure Data Lake

Para montar um sistema de arquivos do Azure Data Lake Storage ou uma pasta dentro dele, use os seguintes comandos:

Pitão

configs = {
  "fs.azure.account.auth.type": "CustomAccessToken",
  "fs.azure.account.custom.token.provider.class": spark.conf.get("spark.databricks.passthrough.adls.gen2.tokenProviderClassName")
}

# Optionally, you can add <directory-name> to the source URI of your mount point.
dbutils.fs.mount(
  source = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/",
  mount_point = "/mnt/<mount-name>",
  extra_configs = configs)

Scala (linguagem de programação)

val configs = Map(
  "fs.azure.account.auth.type" -> "CustomAccessToken",
  "fs.azure.account.custom.token.provider.class" -> spark.conf.get("spark.databricks.passthrough.adls.gen2.tokenProviderClassName")
)

// Optionally, you can add <directory-name> to the source URI of your mount point.
dbutils.fs.mount(
  source = "abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/",
  mountPoint = "/mnt/<mount-name>",
  extraConfigs = configs)
  • Substitua <container-name> pelo nome de um contêiner na conta de armazenamento do ADLS.
  • Substitua <storage-account-name> pelo nome da conta de armazenamento do ADLS.
  • Substitua <mount-name> pelo nome do ponto de montagem pretendido no DBFS.

Aviso

Não forneça as chaves de acesso da conta de armazenamento ou as credenciais da entidade de serviço para autenticar no ponto de montagem. Isso dará a outros usuários acesso ao sistema de arquivos usando essas credenciais. A finalidade da passagem de credencial do Azure Data Lake Storage é impedir que você tenha que usar essas credenciais e garantir que o acesso ao sistema de arquivos seja restrito aos usuários que têm acesso à conta subjacente do Azure Data Lake Storage.

Segurança

É seguro compartilhar o Azure Data Lake Storage de passagem de credenciais com outros usuários. Você será isolado um do outro e não poderá ler ou usar as credenciais um do outro.

Recursos compatíveis

Recurso Versão mínima do Databricks Runtime Observações
Python e SQL 5.5
%run 5.5
DBFS 5.5 As credenciais são transmitidas somente se o caminho DBFS for convertido para um local no Azure Data Lake Storage. Para caminhos do DBFS que resolvem para outros sistemas de armazenamento, use um método diferente para especificar suas credenciais.
Armazenamento do Azure Data Lake 5.5
cache de disco 5.5
API do PySpark do ML 5.5 As seguintes classes de ML não há suporte:
  • org/apache/spark/ml/classification/RandomForestClassifier
  • org/apache/spark/ml/clustering/BisectingKMeans
  • org/apache/spark/ml/clustering/GaussianMixture
  • org/spark/ml/clustering/KMeans
  • org/spark/ml/clustering/LDA
  • org/spark/ml/evaluation/ClusteringEvaluator
  • org/spark/ml/feature/HashingTF
  • org/spark/ml/feature/OneHotEncoder
  • org/spark/ml/feature/StopWordsRemover
  • org/spark/ml/feature/VectorIndexer
  • org/spark/ml/feature/VectorSizeHint
  • org/spark/ml/regression/IsotonicRegression
  • org/spark/ml/regression/RandomForestRegressor
  • org/spark/ml/util/DatasetUtils
Variáveis de difusão 5.5 No PySpark, há um limite no tamanho das UDFs do Python que você pode construir, pois UDFs grandes são enviadas como variáveis de difusão.
Bibliotecas no escopo do notebook 5.5
Scala (linguagem de programação) 5.5
SparkR 6,0
sparklyr 10.1
Orquestrar os notebooks e modularizar o código dentro dos notebooks 6.1
API do PySpark do ML 6.1 Todas as classes do PySpark do ML com suporte.
Métricas de cluster 6.1
Conexão do Databricks 7.3 A passagem tem suporte em clusters Standard.

Limitações

Não há suporte para os seguintes recursos com a passagem de credenciais do Azure Data Lake Storage:

  • %fs (use o comando dbutils.fs equivalente).
  • Trabalhos do Databricks.
  • A Referência da API REST do Databricks.
  • Catálogo do Unity.
  • Controle de acesso à tabela. As permissões concedidas pela passagem de credencial do Azure Data Lake Storage podem ser usadas para ignorar as permissões finas das ACLs de tabela, enquanto as restrições extras das ACLs de tabela restringirão alguns dos benefícios que você obterá da passagem de credenciais. Especialmente:
    • Se você tiver permissão do Microsoft Entra ID para acessar os arquivos de dados que se baseiam em uma tabela específica, terá permissões completas nessa tabela por meio da API do RDD, independentemente das restrições colocadas neles por meio de ACLs de tabela.
    • Você será restrito por permissões de ACLs de tabela somente ao usar a API do DataFrame. Você verá avisos sobre não ter permissão SELECT em nenhum arquivo se tentar ler arquivos diretamente com a API do DataFrame, mesmo que você possa ler esses arquivos diretamente por meio da API do RDD.
    • Você não poderá ler de tabelas com suporte de sistemas de arquivos diferentes do Azure Data Lake Storage, mesmo se você tiver permissão de ACL de tabela para ler as tabelas.
  • Os seguintes métodos em objetos SparkContext (sc) e SparkSession (spark):
    • Métodos preteridos.
    • Métodos como addFile() e addJar() que permitiriam que usuários não administradores chamasse código Scala.
    • Qualquer método que acesse um sistema de arquivos diferente do Azure Data Lake Storage (para acessar outros sistemas de arquivos em um cluster com a passagem de credencial do Azure Data Lake Storage habilitada, use um método diferente para especificar suas credenciais e ver a seção sobre sistemas de arquivos confiáveis em Solução de problemas).
    • As APIs antigas do Hadoop (hadoopFile() e hadoopRDD()).
    • APIs de streaming, uma vez que as credenciais passadas expiram enquanto o fluxo ainda estava em execução.
  • As montagens DBFS (/dbfs) estão disponíveis somente no Databricks Runtime 7.3 LTS e superior. Não há suporte para pontos de montagem com passagem de credencial configurada por esse caminho.
  • Azure Data Factory.
  • MLflow em clusters de alta simultaneidade.
  • azureml-sdk Pacote Python em clusters de alta simultaneidade.
  • Você não pode estender o tempo de vida dos tokens de passagem do Microsoft Entra ID usando as políticas de tempo de vida do token do Microsoft Entra ID. Como consequência, se você enviar um comando para o cluster que leva mais de uma hora, ele falhará se um recurso do Azure Data Lake Storage for acessado após a marca de 1 hora.
  • Ao usar o Hive 2.3 e superior, você não pode adicionar uma partição em um cluster com passagem de credencial habilitada. Para obter mais informações, consulte a seção de Solucionar problemas relevantes.

Solução de problemas

py4j.security.Py4JSecurityException: ... não está na lista de verificação

Essa exceção é gerada quando você acessa um método que o Azure Databricks não marcou explicitamente como seguro para clusters de passagem de credenciais do Azure Data Lake Storage. Na maioria dos casos, isso significa que o método pode permitir que um usuário em um cluster de passagem de credenciais do Azure Data Lake Storage acesse as credenciais de outro usuário.

org.apache.spark.api.python.PythonSecurityException: Caminho ... usa um sistema de arquivos não falso

Essa exceção é lançada ao tentar acessar um sistema de arquivos que não é conhecido pelo cluster de passagem de credenciais do Azure Data Lake Storage para ser seguro. O uso de um sistema de arquivos não confiável pode permitir que um usuário em um cluster de passagem de credenciais do Azure Data Lake Storage acesse as credenciais de outro usuário, portanto, não permitimos que todos os sistemas de arquivos que não estamos confiantes estejam sendo usados com segurança.

Para configurar o conjunto de sistemas de arquivos confiáveis em um cluster de passagem de credencial do Azure Data Lake Storage, deverão definir a chave de conf do Spark spark.databricks.pyspark.trustedFilesystems nesse cluster como uma lista separada por vírgulas dos nomes de classe que são implementações confiáveis do org.apache.hadoop.fs.FileSystem.

A adição de uma partição falha com AzureCredentialNotFoundException quando a passagem de credencial está habilitada

Ao usar o Hive 2.3-3.1, se você tentar adicionar uma partição em um cluster com a passagem de credencial habilitada, ocorrerá a seguinte exceção:

org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:com.databricks.backend.daemon.data.client.adl.AzureCredentialNotFoundException: Could not find ADLS Token

Para resolver esse problema, adicione partições em um cluster sem a passagem de credencial habilitada.