Compartilhar via


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:

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

  1. Faça logon em um espaço de trabalho que esteja anexado ao metastore.

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

  3. Na página Acesso rápido, clique no botão Dados externos>, vá para a guia Locais externos e clique em Criar local.

  4. Digite um Nome de localização externa.

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

  9. Clique em Criar.

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

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

    Para usar o Gerenciador de Catálogos 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 Entidade de segurança e selecione o privilégio que deseja conceder.
    4. Clique em Conceder.

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. Se location_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> 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 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 a myWorkspace?
  • O catálogo myCat está associado a myWorkspace com nível de acesso Read & 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

  1. Faça logon em um workspace vinculado ao metastore.

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

  3. 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ço de trabalho.

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

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

  1. Use o comando external-locations do grupo de comandos update para definir o local externo isolation mode como ISOLATED:

    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.

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