Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve como configurar um objeto de local externo no Catálogo do Unity para controlar o acesso ao armazenamento em nuvem do Azure Databricks.
Visão geral de locais externos
Locais externos associam credenciais de armazenamento a contêineres de armazenamento de objetos de nuvem. Locais externos são usados para definir:
Locais de armazenamento gerenciado para tabelas e volumes gerenciados. Os locais de armazenamento gerenciado podem residir no nível de metastore, catálogo ou esquema. Consulte Especificar um local de armazenamento gerenciado no catálogo do Unity.
Locais de tabelas externas e volumes externos.
Locais externos podem referenciar o armazenamento em um contêiner de armazenamento do Azure Data Lake Storage, bucket AWS S3 ou bucket Cloudflare R2.
O diagrama abaixo representa a hierarquia do sistema de arquivos de um único bucket ou contêiner de armazenamento em nuvem, com quatro locais externos que compartilham uma credencial de armazenamento.
Visão geral da criação de local externo
Você pode usar qualquer uma das seguintes interfaces para criar um local externo:
-
Essa opção fornece uma interface do usuário gráfica. Você pode usar o Explorador de Catálogo para criar locais externos que fazem referência a: contêineres do Azure Data Lake Storage, buckets S3 (somente leitura), buckets do Cloudflare R2 e raiz do DBFS (herdado)
Comandos SQL em um notebook ou uma consulta SQL do Databricks
Este artigo aborda as opções 1 e 2.
Observação
Armazenar dados no local de armazenamento raiz do DBFS é uma prática legada, e o Databricks recomenda contra isso. No entanto, se seu espaço de trabalho armazenar dados na raiz do DBFS, você poderá criar um local externo para controlar o acesso a esses dados usando o Unity Catalog. Para obter detalhes, consulte Criar um local externo para dados na raiz do DBFS (herdado).
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 de 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, o bucket do AWS S3 ou o bucket cloudflare R2 que você 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 que você usa como locais externos devem ter um namespace hierárquico.
Não use notação de ponto (por exemplo,
incorrect.bucket.name.notation
) em nomes de bucket S3. Embora a AWS permita pontos em nomes de bucket, o Databricks não dá suporte a buckets S3 com notação de ponto. Buckets que contêm pontos podem causar problemas de compatibilidade com recursos como o Compartilhamento Delta devido a falhas de validação de certificado SSL. Para obter mais informações, consulte as práticas recomendadas de nomenclatura do bucket do AWS.Os caminhos de localização externos devem conter apenas caracteres ASCII padrão (letras
A–Z
,a–z
dígitos0–9
e símbolos comuns, como/
,_
, ).-
O bucket não pode ter uma lista de controle de acesso do S3 anexada a ele.
- 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, 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 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. - 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ê deve ser um administrador do workspace. Para obter detalhes, consulte Criar um local externo para dados na raiz do DBFS (herdado)
Opção 1: criar um local externo usando o Gerenciador 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 no
Catálogo.
Na página Acesso rápido, clique no botão Dados externos>, acesse a guia Locais Externos e clique em Criar local.
Digite um Nome de localização externa.
Selecione o tipo de armazenamento: Azure Data Lake Storage, S3 (somente leitura), R2 ou Raiz DBFS.
Armazenar dados na raiz do DBFS é uma prática legada e não recomendada. Para obter detalhes, consulte Criar um local externo para dados na raiz do DBFS (herdado).
Na URL, insira ou selecione o caminho para o local externo.
Para o Azure Data Lake Storage, S3 e R2, você tem as seguintes opções:
Para copiar o caminho do contêiner de um ponto de montagem DBFS existente, clique em Copiar do DBFS.
Se você não estiver copiando de um ponto de montagem existente, use o campo URL para inserir o contêiner ou o caminho do 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 a raiz DBFS:
- O sistema preenche o subcaminho para o local de armazenamento raiz do DBFS. Se você for um administrador do workspace, o sistema também criará a credencial de armazenamento para você.
Consulte Criar um local externo para dados na raiz do DBFS (herdado).
Selecione a credencial de armazenamento que concede acesso ao local externo.
Observação
Se o local externo for para a raiz DBFS e você for um administrador do 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 credencialde armazenamento.
As informações de credencial inseridas dependem do tipo de armazenamento:
Para o Azure Data Lake Storage, insira a ID do conector de acesso e (opcionalmente) a identidade gerenciada atribuída pelo usuário que fornece acesso ao local de armazenamento. Consulte Criar uma credencial de armazenamento que acessa o Azure Data Lake Storage
Para tokens de API do Cloudflare, insira a conta do Cloudflare, a 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 concede acesso ao local de armazenamento. Consulte Criar uma credencial de armazenamento para se conectar ao AWS S3 (somente leitura).
(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.
Os locais externos que fazem referência aos caminhos do AWS S3 são, por natureza, somente leitura.
(Opcional) Se o local externo for destinado a um catálogo federado do metastore do Hive, clique em Opções avançadas e habilite o modo Fallback.
(Opcional, somente para locais do AWS S3) Se o bucket S3 exigir criptografia SSE, você poderá configurar um algoritmo de criptografia para permitir que tabelas e volumes externos no Catálogo do Unity acessem dados em seu bucket S3.
Para obter instruções, consulte Configurar um algoritmo de criptografia em um local externo (somente AWS S3).
(Opcional) Para habilitar a capacidade de assinar notificações de alteração 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) 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 você quiser permitir o acesso apenas de workspaces específicos, acesse a guia Workspaces e atribua workspaces. Consulte (Opcional) Atribuir um local externo a espaços de trabalho específicos.
Vá para a guia Permissões para conceder 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 privilégio
CREATE MANAGED LOCATION
.Para criar tabelas ou volumes externos, conceda
CREATE EXTERNAL TABLE
ouCREATE EXTERNAL VOLUME
.
- 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.
Opção 2: criar um local externo usando o 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 conhecer 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 (` `
). Consulte 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 a 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
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 espaço de trabalho serão executadas, além das verificações regulares de privilégio do usuário:
- O local externo está cobrindo o
'abfss://my-container-name@storage-account-name.dfs.core.windows.net/finance'
associado aomyWorkspace
? - 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 espaço de trabalho central e disponibilize-o para outros espaços de trabalho usando associações de catálogo, sem precisar disponibilizar também o local externo nesses outros espaços.
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, proprietário do local externo ou MANAGE
no 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 no
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 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 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 espaço de trabalho 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. Veja O que são volumes do Catálogo do Unity?.