Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Importante
Esta documentação foi desativada e pode não ser atualizada.
A passagem de credenciais foi desativada a partir do Databricks Runtime 15.0 e será removida em futuras versões do Databricks Runtime. O Databricks recomenda que você atualize para o Unity Catalog. O Unity Catalog simplifica a segurança e a governança de seus dados, fornecendo um local central para administrar e auditar o acesso aos dados em vários espaços de trabalho em sua conta. Consulte O que é o Unity Catalog?.
Para maior segurança e postura de governança, entre em contato com sua equipe de conta do Azure Databricks para desabilitar a passagem de credenciais em sua conta do Azure Databricks.
Nota
Este artigo contém referências ao termo whitelisted, um termo que o Azure Databricks não usa. Quando o termo for removido do software, iremos removê-lo deste artigo.
Você pode autenticar automaticamente no ADLS a partir de clusters do Azure Databricks usando a mesma identidade do Microsoft Entra ID que você usa para fazer logon no Azure Databricks. Quando você habilita a passagem de credenciais do Armazenamento do Azure Data Lake para seu cluster, os comandos executados nesse cluster podem ler e gravar dados no Armazenamento do Azure Data Lake sem exigir que você configure as credenciais da entidade de serviço para acesso ao armazenamento.
A passagem de credenciais do Armazenamento do Azure Data Lake é suportada apenas com o Armazenamento do Azure Data Lake. O Armazenamento de blobs do Azure não suporta o pass-through de credenciais.
Este artigo abrange:
- Habilitando a passagem de credenciais para clusters padrão e de alta simultaneidade.
- Configurando a passagem de credenciais e inicializando recursos de armazenamento em contas ADLS.
- Acessar recursos ADLS diretamente quando a passagem de credenciais está habilitada.
- Aceder a recursos ADLS através de um ponto de montagem quando a passagem de credenciais está ativada.
- Recursos e limitações suportados ao usar a passagem de credenciais.
Requerimentos
- Plano Premium. Consulte Fazer upgrade ou downgrade de um Espaço de Trabalho 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. As contas de armazenamento do Armazenamento do Azure Data Lake devem usar o namespace hierárquico para o funcionamento da transferência de credenciais no Armazenamento do Azure Data Lake. Consulte Criar uma conta de armazenamento para obter instruções sobre como criar uma nova conta ADLS, incluindo como habilitar o namespace hierárquico.
- Permissões dos utilizadores devidamente configuradas para o Azure Data Lake Storage. Um administrador do Azure Databricks precisa garantir que os utilizadores tenham as funções corretas, como "Storage Blob Data Contributor", para ler e gravar dados armazenados no Azure Data Lake Storage. Consulte Utilizar o portal do Azure para atribuir uma função no Azure para acesso a dados de blobs e filas.
- Compreenda os privilégios dos administradores de espaço de trabalho em espaços de trabalho habilitados para passagem e revise suas atribuições de administrador de espaço de trabalho existentes. Os administradores de espaço de trabalho podem gerenciar operações para seu espaço de trabalho, incluindo a adição de usuários e entidades de serviço, a criação de clusters e a delegação de outros usuários para serem administradores de espaço de trabalho. As tarefas de gerenciamento de espaço de trabalho, como gerenciar a propriedade do trabalho e exibir blocos de anotações, podem dar acesso indireto aos dados registrados no Armazenamento do Azure Data Lake. O administrador do espaço de trabalho é uma função privilegiada que você deve distribuir com cuidado.
- Não é possível usar um cluster configurado com credenciais ADLS, por exemplo, credenciais da entidade de serviço, com passagem de credenciais.
Importante
Você não pode se autenticar no Armazenamento do Azure Data Lake com suas credenciais de ID do Microsoft Entra se estiver atrás de um firewall que não tenha sido configurado para permitir o tráfego para o ID do Microsoft Entra. O Azure Firewall bloqueia o acesso ao Ative Directory, por predefinição. Para permitir o acesso, configure a marca de serviço AzureActiveDirectory. Pode encontrar informações equivalentes para aplicações virtuais de rede na etiqueta AzureActiveDirectory no ficheiro JSON de Intervalos de IP e Etiquetas de Serviço do Azure. Para obter mais informações, consulte Tags de serviço do Firewall do Azure.
Recomendações de registo
Você pode registrar identidades passadas para o armazenamento ADLS nos logs de diagnóstico de armazenamento do Azure. As identidades de registo permitem que as solicitações ADLS sejam vinculadas a utilizadores individuais de clusters do Azure Databricks. Ative o log de diagnóstico em sua conta de armazenamento para começar a receber esses logs fazendo o seguinte: configure usando o PowerShell com o Set-AzStorageServiceLoggingProperty comando. Especifique 2.0 como a versão, porque o formato de entrada de log 2.0 inclui o nome principal do usuário na solicitação.
Habilitar a credencial de passagem do Azure Data Lake Storage para um cluster de alta concorrência
Clusters de alta simultaneidade podem ser compartilhados por vários usuários. Eles dão suporte apenas a Python e SQL com passagem de credenciais do Armazenamento do Azure Data Lake.
Importante
Habilitar a passagem de credenciais do Armazenamento do Azure Data Lake para um cluster de alta simultaneidade bloqueia todas as portas no cluster , exceto as portas 44, 53 e 80.
- Quando se criar um cluster, defina o Modo de Cluster como Simultaneidade Alta.
- Em Opções Avançadas, selecione Habilitar passagem de credenciais para acesso a dados no nível do usuário e permitir apenas comandos Python e SQL.
Habilitar a passagem de credenciais do Armazenamento do Azure Data Lake para um cluster Standard
Os clusters padrão com passagem de credenciais são limitados a um único usuário. Os clusters padrão suportam Python, SQL, Scala e R. No Databricks Runtime 10.4 LTS e superior, o sparklyr é suportado.
Você deve atribuir um usuário na criação do cluster, mas o cluster pode ser editado por um usuário com permissões CAN MANAGE a qualquer momento para substituir o usuário original.
Importante
O usuário atribuído ao cluster deve ter pelo menos a permissão CAN ATTACH TO para o cluster para executar comandos no cluster. Os administradores do espaço de trabalho e o criador do cluster têm permissões CAN MANAGE, mas não podem executar comandos no cluster, a menos que sejam o usuário designado do cluster.
- Ao criar um cluster, defina o Modo de Cluster como Padrão.
- Nas Opções Avançadas, ative Habilitar passagem de credenciais para acesso a dados a nível de utilizador e selecione o nome de utilizador na lista suspensa Acesso Individual de Utilizador.
Criar um contêiner
Os contêineres fornecem uma maneira de organizar objetos em uma conta de armazenamento do Azure.
Acessar o Armazenamento do Azure Data Lake diretamente usando a passagem de credenciais
Depois de configurar a passagem de credenciais do Armazenamento do Azure Data Lake e criar contêineres de armazenamento, você pode acessar os dados diretamente no Armazenamento do Azure Data Lake usando um abfss:// caminho.
Azure Data Lake Armazenamento
Python
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 ADLS. - Substitua
<storage-account-name>pelo nome da conta de armazenamento ADLS.
Monte o Armazenamento Data Lake do Azure para DBFS usando passagem de credenciais
Você pode montar uma conta do Armazenamento do Azure Data Lake ou uma pasta dentro dela em O que é DBFS?. A montagem é um ponteiro para um Data Lake Store, portanto, os dados nunca são sincronizados localmente.
Quando se monta dados usando um cluster com a passagem de credenciais habilitada para o Armazenamento Azure Data Lake, qualquer leitura ou escrita no ponto de montagem utiliza as suas credenciais de identidade do Microsoft Entra. Esse ponto de montagem será visível para outros usuários, mas os únicos usuários que terão acesso de leitura e gravação são aqueles que:
- Ter acesso à conta de armazenamento subjacente do Azure Data Lake Storage
- Estão a usar um cluster ativado para autenticação de credenciais do Armazenamento Azure Data Lake
Azure Data Lake Armazenamento
Para montar um sistema de arquivos do Armazenamento Azure Data Lake ou uma pasta dentro dele, use os seguintes comandos:
Python
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)
linguagem de programação Scala
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 ADLS. - Substitua
<storage-account-name>pelo nome da conta de armazenamento 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 do principal de serviço para autenticar-se no ponto de montagem. Isso daria a outros usuários acesso ao sistema de arquivos usando essas credenciais. O objetivo da passagem de credenciais do Armazenamento do Azure Data Lake é evitar que você precise usar essas credenciais e garantir que o acesso ao sistema de arquivos seja restrito aos usuários que têm acesso à conta subjacente do Armazenamento do Azure Data Lake.
Segurança
É seguro compartilhar clusters de passagem de credenciais do Armazenamento do Azure Data Lake com outros usuários. Vocês ficarão isolados uns dos outros e não poderão ler ou usar as credenciais uns dos outros.
Funcionalidades suportadas
| Caraterística | Versão mínima de tempo de execução do Databricks | Notas |
|---|---|---|
| Python e SQL | 5,5 | |
%run |
5,5 | |
| DBFS | 5,5 | As credenciais são transmitidas somente se o caminho do DBFS se resolver em um local no Armazenamento de Dados do Azure Data Lake. Para caminhos DBFS que são direcionados para outros sistemas de armazenamento, use um método diferente para especificar as suas credenciais. |
| Azure Data Lake Storage | 5,5 | |
| Cache de disco | 5,5 | |
| PySpark ML API | 5,5 |
As seguintes classes de ML não são suportadas:
|
| Variáveis de transmissão | 5,5 | Dentro do PySpark, há um limite no tamanho das UDFs Python que você pode construir, uma vez que UDFs grandes são enviadas como variáveis de transmissão. |
| Bibliotecas com escopo de notebook | 5,5 | |
| linguagem de programação Scala | 5,5 | |
| Faísca | 6,0 | |
| Brilho | 10.1 | |
| Organize notebooks e modularize o código neles. | 6.1 | |
| PySpark ML API | 6.1 | Todas as classes PySpark ML suportadas. |
| Métricas de cluster | 6.1 | |
| Databricks Connect | 7.3 | A passagem é suportada em clusters Standard. |
Limitações
Os seguintes recursos não são suportados com a passagem de credenciais do Armazenamento do Azure Data Lake:
-
%fs(use o comando dbutils.fs equivalente em vez disso). - Trabalhos Databricks.
- A referência da API REST do Databricks.
- Catálogo Unity.
-
Controle de acesso à tabela. As permissões concedidas pela passagem de credenciais do Armazenamento do Azure Data Lake podem ser utilizadas para contornar as permissões detalhadas das ACLs de tabela, enquanto as restrições adicionais das ACLs de tabela limitarão alguns dos benefícios obtidos com a passagem de credenciais. Em especial:
- Se você tiver permissão de ID do Microsoft Entra para acessar os arquivos de dados subjacentes a uma tabela específica, você terá permissões totais nessa tabela por meio da API RDD, independentemente das restrições colocadas sobre eles por meio de ACLs de tabela.
- Você será restringido por permissões de ACLs de tabela somente ao usar a API DataFrame. Você verá avisos sobre não ter permissão
SELECTem nenhum arquivo se tentar ler arquivos diretamente com a API DataFrame, mesmo que possa ler esses arquivos diretamente por meio da API RDD. - Você não poderá ler tabelas suportadas por sistemas de arquivos diferentes das do Azure Data Lake Storage, mesmo que tenha permissão ACL para tabelas.
- Os seguintes métodos em objetos SparkContext (
sc) e SparkSession (spark):- Métodos preteridos.
- Métodos como
addFile()eaddJar()que permitiriam que usuários não administradores chamassem o código Scala. - Qualquer método que acesse um sistema de arquivos diferente do Armazenamento do Azure Data Lake (para acessar outros sistemas de arquivos em um cluster com a passagem de credenciais do Armazenamento do Azure Data Lake habilitada, use um método diferente para especificar suas credenciais e consulte a seção sobre sistemas de arquivos confiáveis em Solução de problemas).
- As antigas APIs do Hadoop (
hadoopFile()ehadoopRDD()). - APIs de streaming, uma vez que as credenciais passadas expirariam enquanto o fluxo ainda estivesse em execução.
-
Montagens DBFS (
/dbfs) estão disponíveis apenas no Databricks Runtime 7.3 LTS e superior. Não há suporte para pontos de montagem com passagem de credenciais configurada por esse caminho. - Azure Data Factory.
- MLflow em clusters de alta simultaneidade.
- pacote azureml-sdk Python em clusters de alta simultaneidade.
- Não é possível 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 Armazenamento do Azure Data Lake for acessado após a marca de 1 hora.
- Ao usar o Hive 2.3 e superior, não é possível adicionar uma partição em um cluster com a passagem de credenciais habilitada. Para obter mais informações, consulte a seção de solução de problemas relevante.
Resolução de Problemas
py4j.security.Py4JSecurityException: ... não está incluído na lista de permissões
Esta exceção é emitida quando acede a um método que o Azure Databricks não marcou explicitamente como seguro para clusters de pass-through 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 Armazenamento do Azure Data Lake acesse as credenciais de outro usuário.
org.apache.spark.api.python.PythonSecurityException: Caminho ... usa um sistema de arquivos não confiável
Esta exceção é gerada quando tenta aceder a um sistema de ficheiros que não é reconhecido como seguro pelo cluster do pass-through de credenciais do Azure Data Lake Storage. Usar um sistema de arquivos não confiável pode permitir que um usuário em um cluster de passagem de credenciais do Armazenamento do Azure Data Lake acesse as credenciais de outro usuário, portanto, não permitimos que todos os sistemas de arquivos que não temos certeza de que estão sendo usados com segurança.
Para configurar o conjunto de sistemas de ficheiros confiáveis num cluster de passagem de credenciais do Armazenamento Azure Data Lake, defina a chave conf spark.databricks.pyspark.trustedFilesystems do Spark nesse cluster como uma lista separada por vírgulas dos nomes das classes que são implementações fiáveis de org.apache.hadoop.fs.FileSystem.
Adicionar uma partição falha com AzureCredentialNotFoundException quando a passagem de credenciais está habilitada
Ao usar o Hive 2.3-3.1, se você tentar adicionar uma partição em um cluster com a passagem de credenciais 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 contornar esse problema, adicione partições em um cluster sem passagem de credenciais habilitada.