Crie um local externo para conectar o armazenamento em nuvem ao Azure Databricks
Esse artigo descreve como configurar um local externo no Catálogo do Unity para conectar o armazenamento em nuvem ao Azure Databricks.
Locais externos associam credenciais de armazenamento do Catálogo do Unity a contêineres de armazenamento de objetos de nuvem. 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 em um bucket do Cloudflare R2.
Você pode criar um local externo usando o Explorador do Catálogo, a CLI do Databricks, comandos SQL em um notebook ou em uma consulta do SQL do Databricks ou o Terraform.
Para obter mais informações sobre os usos de locais externos e a relação entre credenciais de armazenamento e locais externos, consulte Gerenciar o acesso ao armazenamento em nuvem usando o Catálogo do Unity.
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 na 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 privilégio
CREATE EXTERNAL LOCATION
tanto no metastore quanto na credencial de armazenamento referenciada no local externo. Por padrão, os administradores do metastore têmCREATE EXTERNAL LOCATION
no metastore.
Crie um local externo manualmente usando o Explorador de Catálogos
Você pode criar um local externo manualmente usando o Catalog Explorer.
Permissões e pré-requisitos: consulte Antes de começar.
Para criar a localização externa:
Faça logon em um espaço de trabalho que esteja anexado ao metastore.
Na barra lateral, clique em Catálogo.
Na página Acesso rápido, clique no botão Dados externos>, vá para a guia Locais externos e clique em Criar local.
Digite um Nome de localização externa.
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 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 quiser que os usuários tenham acesso somente para leitura ao local externo, clique em Opções Avançadas e selecione Somente leitura. Para obter mais informações, confira Marcar um local externo como somente leitura.
Clique em Criar.
(Opcional) Associar o local externo a espaços de trabalho específicos.
Por padrão, qualquer usuário privilegiado pode usar o local externo em qualquer workspace anexado ao metastore. Se quiser permitir o acesso somente de espaços de trabalho específicos, acesse a guia Espaço de trabalho e atribua espaços de trabalho. Consulte (Opcional) Atribuir um local externo a espaços de trabalho específicos.
Conceder a permissão para usar a 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 privilégio
CREATE MANAGED LOCATION
. - Para criar tabelas ou volumes externos, conceda
CREATE EXTERNAL TABLE
ouCREATE EXTERNAL VOLUME
.
Para usar o Gerenciador de Catálogos 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 Entidade de segurança 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 privilégio
Crie um local externo usando SQL
Para criar um local externo usando o SQL, execute o seguinte comando em um notebook ou no editor de consultas SQL. Substitua os valores de espaço reservado. Para obter as permissões e os pré-requisitos necessários, consulte Antes de começar.
<location-name>
: um nome para o local externo. Selocation_name
incluir caracteres especiais, como hifens (-
), ele deverá ser colocado entre crases (` `
). Veja Nomes.<bucket-path>
: o caminho no 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 gravação no contêiner de armazenamento ou no caminho do bucket. Se o nome da credencial incluir caracteres especiais, como hifens (-
), ele deverá ser colocado entre crases (` `
).
CREATE EXTERNAL LOCATION [IF NOT EXISTS] `<location-name>`
URL '<bucket-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];
Se quiser limitar o acesso de locais externos a espaços de trabalho específicos em sua conta, também conhecido como associaçã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
Esse recurso está em uma versão prévia.
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 em qualquer espaço de trabalho anexado ao metastore. Se você usa espaços de trabalho para isolar o acesso aos dados do usuário, talvez queira permitir o acesso a um local externo somente a partir de espaços de trabalho específicos. Esse recurso é conhecido como associação de espaço de trabalho ou isolamento de local externo.
Os casos de uso típicos para associação de um local externo a espaços de trabalho específicos incluem:
- Garantir que os engenheiros de dados que têm o privilégio
CREATE EXTERNAL TABLE
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 privilégio
READ FILES
em um local externo que contém dados confidenciais possam usar apenas 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 acesso do catálogo a espaços de trabalho específicos.
Importante
As associações de workspace são referenciadas no momento em que são exercidos os privilégios em relação ao local externo. 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 workspace myWorkspace
, as seguintes verificações de associação de workspace serão executadas, além das verificações regulares de privilégio do usuário:
- O local externo está cobrindo
'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance'
associado amyWorkspace
? - O catálogo
myCat
está associado amyWorkspace
com nível de acessoRead & Write
?
Se o local externo for posteriormente desassociado de myWorkspace
, a tabela externa continuará funcionando.
Esse recurso também permite que você preencha um catálogo de um workspace central e disponibilize-o para outros workspaces usando associações de catálogo, sem precisar disponibilizar também o local externo nesses outros workspaces.
Associação de um local externo a um ou mais espaços de trabalho
Para atribuir um local externo a workspaces específicos, você pode usar o Gerenciador de Catálogos ou a CLI do Databricks.
Permissões necessárias: Administrador do Metastore ou proprietário do local externo.
Observação
Os administradores do metastore podem ver todos os locais externos em um metastore usando o Gerenciador de Catálogos, 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 do Catálogo
Faça logon em um workspace vinculado ao metastore.
Na barra lateral, clique em Catálogo.
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ço de trabalho.
Na guia Workspaces, desmarque a caixa de seleção Todos os workspaces têm acesso.
Se o local externo já estiver associado a um ou mais espaços de trabalho, essa caixa de seleção já estará desmarcada.
Clique em Atribuir a workspaces e insira ou localize os workspaces que quer atribuir.
Para revogar o acesso, vá para a guia Workspaces, selecione o workspace 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
Existem dois grupos de comandos da CLI do Databricks e duas etapas necessárias para atribuir um local externo a um workspace.
Nos exemplos a seguir, substitua <profile-name>
pelo nome do seu perfil de configuração de autenticação do Azure Databricks. Isso deverá incluir o valor de um token de acesso pessoal, além do nome da instância do workspace e da ID do workspace em que você gerou o token de acesso pessoal. Confira Autenticação com tokens de acesso pessoal do Azure Databricks.
Use o comando
external-locations
do grupo de comandosupdate
para definir o local externoisolation mode
comoISOLATED
:databricks external-locations update <my-location> \ --isolation-mode ISOLATED \ --profile <profile-name>
O
isolation-mode
padrão éOPEN
para todos os workspaces anexados ao metastore.Use o comando
workspace-bindings
do grupo de comandosupdate-bindings
para atribuir os workspaces 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 propriedades
"add"
e"remove"
para adicionar ou remover associações de workspace.Observação
A associação somente leitura (
BINDING_TYPE_READ_ONLY
) não está disponível para locais externos. Portanto, não há motivo para definirbinding_type
para a associação de locais externos.
Para listar todas as atribuições de workspace para um local externo, use o comando workspace-bindings
do grupo de comandos get-bindings
:
databricks workspace-bindings get-bindings external-location <my-location> \
--profile <profile-name>
Veja também Associações de workspace na referência da API REST.
Desassociar um local externo de um espaço de trabalho
As instruções para revogar o acesso ao workspace para um local externo usando o Gerenciador de Catálogos ou o grupo de comandos da CLI workspace-bindings
estão incluídas em Associar um local externo a um ou mais workspaces.
Próximas etapas
- Conceda a outros usuários permissão para usar locais externos. Confira Gerenciar locais externos.
- Defina locais de armazenamento gerenciados usando locais externos. Consulte Especificar um local de armazenamento gerenciado no catálogo do Unity.
- Defina tabelas externas usando locais externos. Consulte Trabalhar com tabelas externas.
- Defina volumes externos usando locais externos. Confira O que são os volumes do Catálogo do Unity?.