Criar um local externo para conectar o armazenamento em nuvem ao Azure Databricks
Este artigo descreve como configurar um local externo no Unity Catalog para conectar o armazenamento em nuvem ao Azure Databricks.
Locais externos associam credenciais de armazenamento do Unity Catalog a contêineres de armazenamento de objetos na nuvem. Os locais externos são usados para definir locais de armazenamento gerenciado para catálogos e esquemas e para definir locais para tabelas externas e volumes externos.
Você pode criar um local externo que faça referência ao armazenamento em um contêiner de armazenamento do Azure Data Lake Storage Gen2 ou bucket do Cloudflare R2.
Você pode criar um local externo usando o Gerenciador de Catálogos, a CLI do Databricks, os comandos SQL em um bloco de anotações ou a consulta SQL do Databricks ou o Terraform.
Nota
Quando você define um volume, o acesso URI da nuvem aos dados sob o caminho do volume é regido pelas permissões do volume.
Antes de começar
Pré-requisitos:
Você deve criar o contêiner de armazenamento do Azure Data Lake Storage Gen2 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 Azure Data Lake Storage Gen2 que você usa como locais externos devem ter um namespace hierárquico.
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 Azure Data Lake Storage Gen2 e Criar uma credencial de armazenamento para se conectar ao Cloudflare R2.
Requisitos de permissões:
- Você deve ter o
CREATE EXTERNAL LOCATION
privilégio no metastore e na credencial de armazenamento referenciada no local externo. Os administradores do Metastore têmCREATE EXTERNAL LOCATION
no metastore por padrão.
Criar um local externo manualmente 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 em Catálogo.
Na parte superior do painel Catálogo, clique no ícone Adicionar e selecione Adicionar um local externo no menu.
Como alternativa, na página Acesso rápido, clique no botão Dados externos>, vá para a guia Locais Externos e clique em Criar local.
Insira um nome de local externo.
Opcionalmente, copie o caminho do contêiner de um ponto de montagem existente (somente contêineres do Azure Data Lake Storage Gen2).
Se você não estiver copiando de um ponto de montagem existente, use o campo URL para inserir o contêiner de armazenamento ou o caminho do bucket R2 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>
.Selecione a credencial de armazenamento que concede acesso ao local externo.
(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 somente leitura.
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.
Conceda permissão para usar o local externo.
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 LOCATION
privilégio. - Para criar tabelas ou volumes externos, conceda
CREATE EXTERNAL TABLE
ouCREATE EXTERNAL VOLUME
.
Para usar o Catalog Explorer para conceder permissões:
- Clique no nome do local externo para abrir o painel de detalhes.
- Na guia Permissões, clique em Conceder.
- Na caixa de diálogo Conceder em
<external location>
, selecione usuários, 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
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 de espaço reservado.
Permissões e pré-requisitos: consulte Antes de começar.
<location-name>
: Um nome para o local externo. Selocation_name
incluir caracteres especiais, como hífenes (-
), ele deve ser cercado 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 (-
), ele deverá ser cercado 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
Importante
Esta funcionalidade está em Pré-visualização Pública.
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 TABLE
privilégio em um local externo que contém dados de produção possam criar tabelas externas nesse local somente em um espaço de trabalho de produção. - Garantir que os engenheiros de dados que têm o
READ FILES
privilé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.
Importante
As associações de espaço de trabalho são referenciadas no ponto 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 cobertura do local
'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance'
externo está vinculada amyWorkspace
? - O catálogo
myCat
está vinculado ao nívelRead & Write
demyWorkspace
acesso?
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.
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 ou proprietário do local externo.
Nota
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 acinzentados.
Explorador de Catálogos
Faça login em um espaço de trabalho vinculado ao metastore.
Na barra lateral, clique em Catálogo.
Na parte superior do painel Catálogo, clique no ícone de engrenagem e selecione Locais Externos.
Como alternativa, na página Acesso rápido, clique no botão Dados >externos para ir para a guia Locais externos.
Selecione o local externo e vá para a guia Espaços de trabalho.
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 deseja 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 do Azure Databricks.
Use o
external-locations
comando do grupo deupdate
comandos para definir o local externo comoisolation mode
ISOLATED
:databricks external-locations update <my-location> \ --isolation-mode ISOLATED \ --profile <profile-name>
O padrão
isolation-mode
éOPEN
para todos os espaços de trabalho anexados ao metastore.Use o
workspace-bindings
comando do grupo deupdate-bindings
comandos para 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>
Use as
"add"
propriedades e"remove"
para adicionar ou remover associações de espaço de trabalho.Nota
A vinculação somente leitura (
BINDING_TYPE_READ_ONLY
) não está disponível para locais externos. Portanto, não há razão para definirbinding_type
para os locais externos vinculação.
Para listar todas as atribuições de espaço de trabalho para um local externo, use o workspace-bindings
comando do grupo de get-bindings
comandos:
databricks workspace-bindings get-bindings external-location <my-location> \
--profile <profile-name>
Consulte também Ligaçõ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?.