Partilhar via


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:

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êm CREATE 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:

  1. Faça login em um espaço de trabalho anexado ao metastore.

  2. Na barra lateral, clique em Ícone do catálogo Catálogo.

  3. Na parte superior do painel Catálogo, clique no Ícone Adicionar ou mais í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.

  4. Insira um nome de local externo.

  5. Opcionalmente, copie o caminho do contêiner de um ponto de montagem existente (somente contêineres do Azure Data Lake Storage Gen2).

  6. 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> ou r2://my-bucket@my-account-id.r2.cloudflarestorage.com/<path>.

  7. Selecione a credencial de armazenamento que concede acesso ao local externo.

  8. (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.

  9. Clique em Criar.

  10. (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.

  11. 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 ou CREATE EXTERNAL VOLUME.

    Para usar o Catalog Explorer para conceder permissões:

    1. Clique no nome do local externo para abrir o painel de detalhes.
    2. Na guia Permissões, clique em Conceder.
    3. 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.
    4. Clique em Conceder.

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. Se location_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> ou r2://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 a myWorkspace?
  • O catálogo myCat está vinculado ao nível Read & Writede myWorkspace 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

  1. Faça login em um espaço de trabalho vinculado ao metastore.

  2. Na barra lateral, clique em Ícone do catálogo Catálogo.

  3. Na parte superior do painel Catálogo, clique noÍcone de engrenagem í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.

  4. Selecione o local externo e vá para a guia Espaços de trabalho.

  5. 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.

  6. 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.

  1. Use o external-locations comando do grupo de update comandos para definir o local externo como isolation 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.

  2. Use o workspace-bindings comando do grupo de update-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 definir binding_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