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.
Este artigo descreve como configurar um objeto de local externo no Unity Catalog para controlar o acesso ao armazenamento em nuvem a partir do Azure Databricks.
Visão geral de locais externos
Locais externos associam credenciais de armazenamento a contêineres de armazenamento de objetos na nuvem. Os locais externos são usados para definir:
Locais de armazenamento gerenciados para tabelas e volumes gerenciados. Os locais de armazenamento gerenciado podem estar no nível de metastore, catálogo ou esquema. Consulte Especificar um local de armazenamento gerenciado no Catálogo Unity.
Locais para tabelas externas e volumes externos.
Locais externos podem fazer referência ao armazenamento em um contêiner de armazenamento do Azure Data Lake, bucket do AWS S3 ou bucket do Cloudflare R2.
O diagrama abaixo mostra como locais externos fazem referência a credenciais de armazenamento e locais de armazenamento em nuvem.
Neste diagrama:
- Cada local externo faz referência a uma credencial de armazenamento e um local de armazenamento em nuvem.
- Uma credencial de armazenamento pode ser referenciada por vários locais externos.
A credencial de armazenamento 1 concede acesso a tudo o que está sob o caminho
bucket/tables/*, portanto, tanto o local externo A quanto o local externo B fazem referência a ele.
Visão geral da criação de locais externos
Você pode usar qualquer uma das seguintes interfaces para criar um local externo:
-
Esta opção fornece uma interface gráfica do usuário. Você pode usar o Catalog Explorer para criar locais externos que fazem referência a: recipientes de armazenamento do Azure Data Lake, buckets do S3 (somente leitura), buckets do Cloudflare R2 e raiz do DBFS (legado).
Comandos SQL em um bloco de anotações ou consulta SQL Databricks
Este artigo abrange as opções 1 e 2.
Note
O armazenamento de dados no local de armazenamento raiz do DBFS é uma prática herdada e o Databricks recomenda não fazê-lo. No entanto, se seu espaço de trabalho armazenar dados na raiz DBFS, você poderá criar um local externo para controlar o acesso a esses dados usando o Unity Catalog. Para obter detalhes, consulte Conectar-se a um local externo raiz do DBFS (legado).
Para obter mais informações sobre os usos de locais externos e a relação entre credenciais de armazenamento e locais externos, consulte Conectar-se ao armazenamento de objetos na nuvem usando o Unity Catalog.
Antes de começar
Prerequisites:
Você deve criar o contêiner de armazenamento do Azure Data Lake Storage, o bucket do AWS S3 ou o bucket do Cloudflare R2 que deseja usar como um local externo antes de criar o objeto de local externo no Azure Databricks.
As contas de armazenamento do Armazenamento Azure Data Lake que você usa como locais externos devem ter um namespace hierárquico.
Não é possível usar contêineres de armazenamento do Azure com políticas de imutabilidade (WORM - Write Once, Read Many) habilitadas como locais externos. O Unity Catalog requer permissões DELETE em contêineres de armazenamento, o que as políticas de imutabilidade impedem. Para obter mais informações sobre políticas de imutabilidade, consulte Configurar políticas de imutabilidade para contêineres.
Se o acesso à rede pública estiver desabilitado na conta de armazenamento, você deverá habilitar a opção Permitir serviços confiáveis do Azure para permitir que o Azure Databricks se conecte à conta de armazenamento. Você pode definir essa configuração usando a CLI do Azure:
# Check current network rule set az storage account show --name <storage_account_name> --resource-group <resource_group_name> --query "networkRuleSet" # Set bypass for Azure Services az storage account update \ --name <storage_account_name> \ --resource-group <resource_group_name> \ --bypass AzureServices
Não use notação de ponto (por exemplo,
incorrect.bucket.name.notation) em nomes de bucket do S3. Embora a AWS permita pontos em nomes de buckets, o Databricks não oferece suporte a buckets do S3 com notação de pontos. Buckets contendo pontos podem causar problemas de compatibilidade com funcionalidades, como Delta Sharing, devido a falhas na validação do certificado SSL. Para obter mais informações, consulte as práticas recomendadas de nomenclatura de bucket da AWS.Os caminhos de localização externa devem conter apenas caracteres ASCII padrão (letras
A–Za–z,0–9, dígitos e símbolos comuns como/,_,-).
- Você deve ter uma credencial de armazenamento definida no Azure Databricks que dê acesso ao caminho do local de armazenamento em nuvem. Consulte Criar uma credencial de armazenamento para se conectar ao Armazenamento do Azure Data Lake, Criar uma credencial de armazenamento para se conectar ao Cloudflare R2 ou Criar uma credencial de armazenamento para se conectar ao AWS S3 (somente leitura).
Requisitos de permissões:
- Você deve ter o privilégio
CREATE EXTERNAL LOCATIONtanto no metastore quanto na credencial de armazenamento referenciada no local externo. Os administradores do Metastore têmCREATE EXTERNAL LOCATIONno metastore por padrão. - Se você estiver criando um local externo para o local de armazenamento raiz do DBFS, o sistema poderá criar a credencial de armazenamento para você, mas você deverá ser um administrador do espaço de trabalho. Para obter detalhes, consulte Conectar-se a um local externo raiz do DBFS (legado)
Opção 1: Criar um local externo usando o Catalog Explorer
Você pode criar um local externo manualmente usando o Catalog Explorer.
Permissões e pré-requisitos: consulte Antes de começar.
Para criar o local externo:
Faça login em um espaço de trabalho anexado ao metastore.
Na barra lateral, clique no
Catálogo.
Clique no botão Dados >Externos, vá ao separador Localizações Externas e clique em Criar localização.
Insira um nome de local externo.
Selecione o tipo de armazenamento: Armazenamento do Azure Data Lake, S3 (somente leitura),R2 ou Raiz DBFS.
O armazenamento de dados na raiz DBFS é uma prática herdada não recomendada. Para obter detalhes, consulte Conectar-se a um local externo raiz do DBFS (legado).
Em URL, insira ou selecione o caminho para o local externo.
Para o Armazenamento Azure Data Lake, S3 e R2, você tem as seguintes opções:
Para copiar o caminho do contentor de um ponto de montagem DBFS existente , selecione Copiar do DBFS.
Se você não estiver copiando de um ponto de montagem existente, use o campo URL para inserir o caminho do contêiner ou bucket que deseja usar como o local externo.
Por exemplo,
abfss://my-container-name@my-storage-account.dfs.core.windows.net/<path>our2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>.
Para DBFS root:
- O sistema preenche o subcaminho para o local de armazenamento raiz do DBFS. Se você for um administrador de espaço de trabalho, o sistema também criará a credencial de armazenamento para você.
Consulte Conectar-se a um local externo raiz do DBFS (legado).
Selecione a credencial de armazenamento que concede acesso ao local externo.
Note
Se o seu local externo for para a raiz DBFS e você for um administrador de espaço de trabalho, o sistema criará a credencial de armazenamento para você e você não precisará selecionar uma.
Se você não tiver uma credencial de armazenamento, poderá criar uma:
Na lista suspensa de credenciais de armazenamento , selecione + Criar nova credencial de armazenamento.
As informações de credencial inseridas dependem do tipo de armazenamento:
Para o Armazenamento do Azure Data Lake, insira a ID do conector de acesso e (opcionalmente) a identidade gerenciada atribuída pelo usuário que dá acesso ao local de armazenamento. Consulte Criar uma credencial de armazenamento que acessa o Armazenamento do Azure Data Lake
Para tokens de API da Cloudflare, insira a conta da Cloudflare, o ID da chave de acesso e a chave de acesso secreta. Consulte Criar uma credencial de armazenamento para se conectar ao Cloudflare R2.
Para o AWS S3, insira o ARN da função do IAM que dá acesso ao local de armazenamento. Consulte Criar uma credencial de armazenamento para se conectar ao AWS S3 (somente leitura).
(Opcional) Se desejar que os usuários tenham acesso somente leitura ao local externo, clique em Opções Avançadas e selecione Somente leitura. Para obter mais informações, consulte Marcar um local externo como leitura somente.
Os locais externos que fazem referência aos caminhos do AWS S3 são, por natureza, de leitura apenas.
(Opcional) Se o local externo for destinado a um catálogo federado de metastore do Hive, clique em Opções avançadas e habilite modo de fallback.
(Opcional, apenas para locais do AWS S3) Se o bucket do S3 exigir criptografia SSE, você poderá configurar um algoritmo de criptografia para permitir que tabelas e volumes externos no Unity Catalog acessem dados no bucket do S3.
Para obter instruções, consulte Configurar um algoritmo de criptografia em um local externo (somente AWS S3).
(Opcional) Para habilitar a capacidade de se inscrever para alterar notificações no local externo, clique em Opções Avançadas e selecione Habilitar eventos de arquivo.
Para obter detalhes, consulte (Recomendado) Habilitar eventos de arquivo para um local externo.
Clique em Criar.
(Opcional) Vincule o local externo a espaços de trabalho específicos.
Por padrão, qualquer usuário privilegiado pode usar o local externo em qualquer espaço de trabalho anexado ao metastore. Se você quiser permitir o acesso apenas de espaços de trabalho específicos, vá para a guia Espaços de trabalho e atribua espaços de trabalho. Consulte (Opcional) Atribuir um local externo a espaços de trabalho específicos.
Vá para o separador Permissões para dar acesso ao uso da localização externa.
Para que qualquer pessoa possa usar o local externo, você deve conceder permissões:
- Para usar o local externo para adicionar um local de armazenamento gerenciado ao metastore, catálogo ou esquema, conceda o
CREATE MANAGED LOCATIONprivilégio. - Para criar tabelas ou volumes externos, conceda
CREATE EXTERNAL TABLEouCREATE EXTERNAL VOLUME.
- Clique em Conceder.
- No diálogo Conceder em
<external location>, selecione utilizadores, grupos ou entidades de serviço no campo Entidades e selecione o privilégio que deseja conceder. - Clique em Conceder.
- Para usar o local externo para adicionar um local de armazenamento gerenciado ao metastore, catálogo ou esquema, conceda o
Opção 2: Criar um local externo usando SQL
Para criar um local externo usando SQL, execute o seguinte comando em um bloco de anotações ou no editor de consultas SQL. Substitua os valores dos espaços reservados. Para obter as permissões e pré-requisitos necessários, consulte Antes de começar.
-
<location-name>: Uma designação para o local externo. Casolocation_nameinclua caracteres especiais, como hífenes (-), estes devem ser envoltos por backticks (` `). Consulte Nomes.
-
<bucket-path>: O caminho em seu locatário de nuvem ao qual esse local externo concede acesso. Por exemplo,abfss://my-container-name@my-storage-account.dfs.core.windows.net/<path>our2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>. -
<storage-credential-name>: O nome da credencial de armazenamento que autoriza a leitura e a gravação no contêiner de armazenamento ou no caminho do bucket. Se o nome da credencial de armazenamento incluir caracteres especiais, como hífenes (-), deverá ser delimitado por backticks (` `).
CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<bucket-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];
Se você quiser limitar o acesso de local externo a espaços de trabalho específicos em sua conta, também conhecidos como vinculação de espaço de trabalho ou isolamento de local externo, consulte (Opcional) Atribuir um local externo a espaços de trabalho específicos.
(Opcional) Atribuir um local externo a espaços de trabalho específicos
Por padrão, um local externo é acessível a partir de todos os espaços de trabalho no metastore. Isso significa que, se um usuário tiver recebido um privilégio (como READ FILES) nesse local externo, ele poderá exercer esse privilégio a partir de qualquer espaço de trabalho anexado ao metastore. Se você usar espaços de trabalho para isolar o acesso aos dados do usuário, convém permitir o acesso a um local externo somente de espaços de trabalho específicos. Esse recurso é conhecido como vinculação de espaço de trabalho ou isolamento de local externo.
Os casos de uso típicos para vincular um local externo a espaços de trabalho específicos incluem:
- Garantir que os engenheiros de dados que têm o
CREATE EXTERNAL TABLEprivilégio num local externo que contém dados de produção possam criar tabelas externas nesse local somente num espaço de trabalho de produção. - Garantir que os engenheiros de dados que têm o
READ FILESprivilégio em um local externo que contém dados confidenciais só possam usar espaços de trabalho específicos para acessar esses dados.
Para obter mais informações sobre como restringir outros tipos de acesso a dados por espaço de trabalho, consulte Limitar o acesso ao catálogo a espaços de trabalho específicos.
Important
As vinculações de espaço de trabalho são mencionadas no momento em que os privilégios em relação ao local externo são exercidos. Por exemplo, se um usuário criar uma tabela externa emitindo a instrução CREATE TABLE myCat.mySch.myTable LOCATION 'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance' do espaço de trabalho, as seguintes verificações de vinculação do espaço de trabalho serão executadas além das verificações regulares de privilégios do myWorkspace usuário:
- A localização externa
'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance'está coberta pormyWorkspace? - O catálogo
myCatestá vinculado amyWorkspacecom o nível de acessoRead & Write?
Se o local externo for subsequentemente desvinculado do myWorkspace, a tabela externa continuará a funcionar.
Esse recurso também permite preencher um catálogo de um espaço de trabalho central e disponibilizá-lo para outros espaços de trabalho usando associações de catálogo, sem também precisar disponibilizar o local externo nesses outros espaços de trabalho.
Quando o controle de saída sem servidor não está configurado, as associações de local externo são verificadas somente quando o local externo é referenciado diretamente, por exemplo, numa CREATE TABLE ou CREATE EXTERNAL TABLE declaração.
Quando o controle de saída sem servidor é configurado, as ligações também são verificadas indiretamente, por exemplo, quando os usuários acessam dados em um catálogo ou tabela externa que depende desse local externo. Nesse caso, as associações de local externo devem corresponder às associações de catálogo ou ser desabilitadas selecionando Todos os espaços de trabalho têm acesso no local externo ou alterando o isolation-mode para OPEN.
Vincular um local externo a um ou mais espaços de trabalho
Para atribuir um local externo a espaços de trabalho específicos, você pode usar o Gerenciador de Catálogos ou a CLI do Databricks.
Permissões necessárias: Administrador da metastore, proprietário do local externo ou MANAGE no local externo.
Note
Os administradores de metastore podem ver todos os locais externos em um metastore usando o Catalog Explorer, e os proprietários de locais externos podem ver todos os locais externos que possuem em um metastore, independentemente de o local externo estar atribuído ao espaço de trabalho atual. Os locais externos que não estão atribuídos ao espaço de trabalho aparecem em cinzento.
Explorador de Catálogos
Faça login em um espaço de trabalho vinculado ao metastore.
Na barra lateral, clique no
Catálogo.
Clique no botão Dados >Externos para ir ao separador Localizações Externas.
Selecione o local externo e vá para o separador Workspaces.
Na guia Espaços de trabalho, desmarque a caixa de seleção Todos os espaços de trabalho têm acesso.
Se a sua localização externa já estiver associada a uma ou mais áreas de trabalho, esta caixa de verificação já está desmarcada.
Clique em Atribuir a espaços de trabalho e insira ou localize os espaços de trabalho que quer atribuir.
Para revogar o acesso, vá para a guia Espaços de trabalho, selecione o espaço de trabalho e clique em Revogar. Para permitir o acesso de todos os espaços de trabalho, marque a caixa de seleção Todos os espaços de trabalho têm acesso .
CLI
Há dois grupos de comandos da CLI do Databricks e duas etapas necessárias para atribuir um local externo a um espaço de trabalho.
Nos exemplos a seguir, substitua <profile-name> pelo nome do seu perfil de configuração de autenticação do Azure Databricks. Ele deve incluir o valor de um token de acesso pessoal, além do nome da instância do espaço de trabalho e do ID do espaço de trabalho onde você gerou o token de acesso pessoal. Consulte Autenticação de token de acesso pessoal (preterida).
Use o comando do grupo de
external-locationsupdatepara definirisolation modedo local externo paraISOLATED.databricks external-locations update <my-location> \ --isolation-mode ISOLATED \ --profile <profile-name>O padrão
isolation-modeéOPENpara todos os espaços de trabalho associados ao metastore.Use o comando
workspace-bindingsdo grupoupdate-bindingspara atribuir os espaços de trabalho ao local externo.databricks workspace-bindings update-bindings external-location <my-location> \ --json '{ "add": [{"workspace_id": <workspace-id>}...], "remove": [{"workspace_id": <workspace-id>}...] }' --profile <profile-name>Utilize as propriedades
"add"e"remove"para adicionar ou remover associações de espaço de trabalho.Note
A ligação só de leitura (
BINDING_TYPE_READ_ONLY) não está disponível para locais externos. Portanto, não há razão para definirbinding_typepara a vinculação de locais externos.
Para listar todas as atribuições de espaço de trabalho para um local externo, use o comando do grupo de comandos workspace-bindingsget-bindings:
databricks workspace-bindings get-bindings external-location <my-location> \
--profile <profile-name>
Consulte também Vinculações de Espaço de Trabalho na referência da API REST.
Desvincular um local externo de um espaço de trabalho
As instruções para revogar o acesso do espaço de trabalho a um local externo usando o Catalog Explorer ou o grupo de comandos da workspace-bindings CLI estão incluídas em Vincular um local externo a um ou mais espaços de trabalho.
Próximos passos
- Conceda permissão a outros usuários para usar locais externos. Consulte Gerenciar locais externos.
- Defina locais de armazenamento gerenciados usando locais externos. Consulte Especificar um local de armazenamento gerenciado no Catálogo Unity.
- Defina tabelas externas usando locais externos. Consulte Trabalhar com tabelas externas.
- Defina volumes externos usando locais externos. Consulte O que são volumes do Catálogo Unity?.