Conectar-se a um local externo do ADLS Gen2 (Azure Data Lake Storage Gen2)

Esta página descreve como se conectar a um local externo do ADLS Gen2 (Azure Data Lake Storage Gen2). Depois de concluir essa conexão, você pode controlar o acesso a esses objetos do ADLS Gen2 usando o Catálogo do Unity.

Para se conectar a um caminho de contêiner do ADLS Gen2, você precisa de dois objetos protegíveis do Catálogo do Unity. A primeira é uma credencial storage, que especifica uma identidade gerenciada Azure que permite o acesso ao contêiner do ADLS Gen2. Você precisa dessa credencial de armazenamento para o segundo objeto necessário: um local externo, que define o caminho para o local de armazenamento do ADLS Gen2 e as credenciais necessárias para acessar esse local.

Requirements

Em Azure Databricks:

  • Azure Databricks workspace habilitado com o Unity Catalog.
  • Privilégio CREATE STORAGE CREDENTIAL no metastore do Catálogo do Unity anexado ao workspace. Os administradores de conta e administradores de metastore têm esse privilégio por padrão.
  • CREATE EXTERNAL LOCATION o privilégio no metastore do Unity Catalog e na credencial de armazenamento referenciada pelo local externo. Os administradores do Metastore e os administradores do workspace têm esse privilégio por padrão.

Em sua conta de Azure:

  • Uma conta de armazenamento do ADLS Gen2 e um contêiner. Para evitar cobranças de saída, isso deve estar na mesma região do workspace do qual você deseja acessar os dados.

    • Os caminhos de localização externos devem conter apenas caracteres ASCII padrão (letrasA–Z, a–zdígitos 0–9e símbolos comuns, como/, _, ). -

    • As contas de armazenamento do Azure Data Lake Storage que você usa como locais externos devem ter um namespace hierárquico.

    • Você não pode usar contêineres de armazenamento do Azure com políticas de imutabilidade (WORM – Gravar uma vez, Ler Muitos) habilitadas como locais externos. O Catálogo do Unity requer permissões DELETE em contêineres de armazenamento, o que as políticas de imutabilidade impedem. Para obter mais informações sobre políticas de imutabilidade, consulte Configurar políticas de imutabilidade para contêineres.

    • Se o acesso à rede pública estiver desabilitado na conta de armazenamento, você deverá habilitar a opção Permitir serviços confiáveis do Azure para permitir que o Azure Databricks se conecte à conta de armazenamento. Você pode definir essa configuração usando a CLI do Azure:

      # Check current network rule set
      az storage account show --name <storage_account_name> --resource-group <resource_group_name> --query "networkRuleSet"
      
      # Set bypass for Azure Services
      az storage account update \
        --name <storage_account_name> \
        --resource-group <resource_group_name> \
        --bypass AzureServices
      
  • Permissão para criar um conector de acesso para Azure Databricks em sua assinatura Azure. Para fazer isso, você deve ser um Contributor ou Owner de um grupo de recursos Azure.

  • Permissão para modificar a política de acesso para a conta de armazenamento. Para fazer isso, você deve ser o proprietário ou um usuário com a função User Access Administrator do Azure RBAC na sua conta de armazenamento.

Criar uma credencial de armazenamento que acesse o ADLS Gen2

Para criar uma credencial de armazenamento para acesso a um contêiner do ADLS Gen2, primeiro crie um conector de acesso para Azure Databricks com uma identidade gerenciada e conceda à identidade gerenciada acesso à sua conta de armazenamento.

Step 1: criar um conector de acesso para Azure Databricks

Um conector de acesso para Azure Databricks é um recurso de Azure de primeira parte que permite conectar identidades gerenciadas a uma conta Azure Databricks. Cada conector de acesso do Azure Databricks pode incluir uma identidade gerenciada atribuída pelo sistema, uma ou mais identidades gerenciadas atribuídas pelo usuário ou ambas.

  1. Faça logon no portal do Azure como Colaborador ou Proprietário de um grupo de recursos.

  2. Clique em + Criar ou Criar um recurso.

  3. Pesquise Access Connector para Azure Databricks e selecione-o.

  4. Clique em Criar.

  5. Na guia Básico, aceite, selecione e insira valores para os seguintes campos:

    • Subscription: esta é a assinatura Azure na qual o conector de acesso será criado. O padrão é a assinatura Azure que você está usando no momento. Ela pode ser qualquer assinatura no locatário.
    • Resource group: esse é o grupo de recursos Azure no qual o conector de acesso será criado.
    • Nome: insira um nome que indica a finalidade do conector.
    • Região: essa deve ser a mesma região que a conta de armazenamento à qual você se conectará.
  6. Clique em Próximo, insira tags e clique em Próximo.

  7. Na guia Identidade Gerenciada, crie as identidades gerenciadas da seguinte maneira:

    • Para usar uma identidade gerenciada atribuída pelo sistema, defina Status como Ativado.
    • Para adicionar identidades gerenciadas atribuídas pelo usuário, clique em + Adicionar e selecione uma ou mais identidades gerenciadas atribuídas pelo usuário.

    Configurar identidades gerenciadas para um conector de acesso.

  8. Clique em Revisar + Criar.

  9. Examine as configurações e clique em Criar.

  10. Quando a implantação estiver concluída, selecione Ir para o recurso.

  11. Anote a ID do Recurso.

    A ID do recurso está no formato:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    

Etapa 2: conceder o acesso da identidade gerenciada à conta de armazenamento

Para conceder as permissões nesta etapa, você deve ter a função de RBAC do Azure, como Owner ou User Access Administrator, na sua conta de armazenamento.

Você tem as seguintes opções ao conceder acesso de identidade gerenciada à conta de armazenamento e ao contêiner:

  • Conceda acesso de leitura e gravação a toda a conta de armazenamento usando a Storage Blob Data Contributor função.
  • Conceda uma função mais limitada na conta de armazenamento usando a função Storage Blob Delegator e acesso de leitura e gravação a um contêiner específico usando a função Storage Blob Data Contributor.

As instruções a seguir pressupõem que você está concedendo a Storage Blob Data Contributor função na conta de armazenamento, mas você pode substituir as outras opções conforme necessário:

  1. Faça logon em sua conta do Azure Data Lake Storage.
  2. Vá para Controle de Acesso (IAM), clique em + Adicionar e selecione Adicionar atribuição de função.
  3. Selecione a função Colaborador de Dados do Blob de Armazenamento e clique em Próximo.
  4. Para Atribuir acesso a, selecione Identidade Gerenciada.
  5. Clique em +Selecionar Membros e selecione o Conector de Acesso para Azure Databricks ou Identidade Gerenciada Atribuída pelo Usuário.
  6. Pesquise o nome do seu conector ou a identidade atribuída pelo usuário, selecione-os e clique em Revisar e Atribuir.

Etapa 3: Conceder acesso à identidade gerenciada a eventos de arquivo

A concessão de acesso de identidade gerenciada a eventos de arquivo permite que o Azure Databricks assine notificações de evento de arquivo emitidas por provedores de nuvem. Isso torna o processamento de arquivos mais eficiente. Para obter mais informações, consulte Configurar eventos de arquivo para um local externo.

Para conceder as permissões nesta etapa, você deve ter a função RBAC do Proprietário ou Administrador de Acesso do Usuário em sua conta de armazenamento.

  1. Faça logon em sua conta do Azure Data Lake Storage.
  2. Vá para Controle de Acesso (IAM), clique em + Adicionar e selecione Adicionar atribuição de função.
  3. Selecione a função Colaborador de Dados da Fila de Armazenamento e clique em Próximo.
  4. Para Atribuir acesso a, selecione Identidade Gerenciada.
  5. Clique em +Selecionar Membros e selecione o Conector de Acesso para Azure Databricks ou Identidade Gerenciada Atribuída pelo Usuário.
  6. Pesquise o nome do seu conector ou a identidade atribuída pelo usuário, selecione-os e clique em Revisar e Atribuir.

Etapa 4: conceder ao Azure Databricks permissão para configurar eventos de arquivos em seu nome

Note

Esta etapa é opcional, mas altamente recomendada. Se você não conceder acesso ao Azure Databricks para configurar eventos de arquivo em seu nome, deverá configurar eventos de arquivo manualmente para cada local e também terá acesso limitado a recursos críticos que o Databricks poderá liberar no futuro. Para obter mais informações sobre eventos de arquivo, consulte Configurar eventos de arquivo para um local externo.

Esta etapa permite que o Azure Databricks configure eventos de arquivo automaticamente. Para conceder as permissões nesta etapa, você deve ter as funções RBAC do Proprietário ou Administrador de Acesso do Usuário em sua identidade gerenciada e o grupo de recursos em que sua conta do Azure Data Lake Storage Gen2 está.

  1. Siga as instruções na Etapa 3: Conceda acesso à identidade gerenciada a eventos de arquivo e atribua o Colaborador da Conta de Armazenamento à sua identidade gerenciada.

    Essa função não substitui as funções concedidas nas etapas 2 ou 3 nesta página, mas está além delas.

  2. Navegue até o grupo de recursos do Azure no qual sua conta do Azure Data Lake Storage está.

  3. Vá para Controle de Acesso (IAM), clique em + Adicionar e selecione Adicionar atribuição de função.

  4. Selecione a função Colaborador de EventGrid EventSubscription e clique em Avançar.

  5. Para Atribuir acesso a, selecione Identidade Gerenciada.

  6. Clique em +Selecionar Membros e selecione o Conector de Acesso para Azure Databricks ou Identidade Gerenciada Atribuída pelo Usuário.

  7. Pesquise o nome do seu conector ou a identidade atribuída pelo usuário, selecione-os e clique em Revisar e Atribuir.

Etapa 5: Criar a credencial de armazenamento no Databricks

Agora que você criou um conector de acesso com uma identidade gerenciada e concedeu-lhe permissões à sua conta de armazenamento, você pode criar a credencial de armazenamento em Azure Databricks.

  1. Faça login no espaço de trabalho do Azure Databricks com o Unity Catalog habilitado como um usuário com o privilégio CREATE STORAGE CREDENTIAL no metastore.

  2. Na barra lateral, clique no ícone Dados.Catálogo.

  3. Clique em Adicionar ou ícone de adição e, em seguida, clique em Criar uma credencial.

  4. Selecione um tipo de credencial de identidade gerenciada do Azure.

  5. Insira um nome de credencial de armazenamento e um comentário opcional.

  6. Insira a ID do Conector de Acesso (a ID do recurso que você anotou na Etapa 1).

    A ID do recurso está no formato:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    
  7. (Opcional) Se você criou o conector de acesso usando uma identidade gerenciada atribuída pelo usuário, insira a ID de Identidade Gerenciada (a ID do recurso da identidade gerenciada).

  8. (Opcional) Se você quiser que os usuários tenham acesso somente leitura aos locais externos que usam essa credencial de armazenamento, clique em Opções Avançadas e selecione Limite para uso somente leitura. Para obter mais informações, confira Marcar uma credencial de armazenamento como somente leitura.

  9. Clique em Criar.

  10. (Opcional) Associe as credenciais de armazenamento a workspaces específicos.

    Por padrão, qualquer usuário privilegiado pode usar a credencial de armazenamento em qualquer workspace anexado ao metastore. Se você quiser permitir o acesso somente de workspaces específicos, acesse a guia Workspaces e atribua os workspaces. Consulte Atribuir uma credencial de armazenamento a espaços de trabalho específicos.

Agora você pode criar um local externo que referencie sua credencial de armazenamento.

Criar um local externo para um contêiner do ADLS Gen2

Esta seção descreve como criar um local externo usando o Gerenciador de Catálogos ou o SQL. Ele pressupõe que você já tenha uma credencial de armazenamento que permita o acesso ao contêiner do ADLS Gen2. Se você não tiver uma credencial de armazenamento, siga as etapas em Criar uma credencial de armazenamento que acesse o ADLS Gen2.

Opção 1: criar um local externo manualmente usando o Gerenciador de Catálogos

Você pode criar um local externo manualmente usando o Catalog Explorer.

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 no ícone Dados.Catálogo.

  3. Clique em Adicionar ou no ícone de mais e, em seguida, clique em Criar um local externo.

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

  5. Em Storage type, selecione Azure.

  6. Na URL, insira o caminho de contêiner do ADLS Gen2. Por exemplo, abfss://mycontainer@mystorageaccount.dfs.core.windows.net/<path>.

  7. Em Credencial de armazenamento, selecione a credencial de armazenamento que concede acesso ao local externo.

  8. (Opcional) Se você quiser que os usuários tenham acesso somente leitura ao local externo, clique em Opções Avançadas e selecione Limite para uso somente leitura. Para obter mais informações, confira Marcar um local externo como somente leitura.

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

    Consulte Habilitar modo de fallback em locais externos.

  10. (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 Configurar eventos de arquivo para um local externo.

  11. Clique em Criar.

  12. (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 somente de workspaces específicos, acesse a guia Workspaces e atribua os workspaces. Consulte Atribuir uma localização externa a espaços de trabalho específicos.

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

    Siga estas etapas:

    1. Selecione Conceder.
    2. 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.
    3. Selecione 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 obter permissões e pré-requisitos necessários, consulte Requisitos.

  • <location-name>: um nome para o local externo. Se location_name incluir caracteres especiais, como hifens (-), ele deverá ser colocado entre crases (` `). Consulte Nomes.
  • <container-path>: o caminho no locatário de nuvem ao qual esse local externo concede acesso. Por exemplo, abfss://mycontainer@mystorageaccount.dfs.core.windows.net/.
  • <storage-credential-name>: o nome da credencial de armazenamento que autoriza a leitura e gravação no contêiner. 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 '<container-path>'
WITH ([STORAGE] CREDENTIAL `<storage-credential-name>`)
[COMMENT '<comment-string>'];

Se você quiser restringir o acesso a locais externos a espaços de trabalho específicos em sua conta, também chamado de vinculação de espaço de trabalho ou isolamento de local externo, consulte Atribuir um local externo a espaços de trabalho específicos.

Verificar a conexão

Para verificar se você criou com êxito o local externo, tente ler um arquivo do local externo. Por exemplo, suponha que você tenha um local abfss://mycontainer@mystorageaccount.dfs.core.windows.net/ externo contendo um arquivo CSV chamado example.csv. Para ler o abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv arquivo, siga estas etapas:

  1. Na barra lateral, clique no ícone Bloco de anotações.Workspace.

  2. Clique em Criar e selecione Bloco de Anotações.

  3. Execute o seguinte snippet de código Python:

    display(dbutils.fs.ls('abfss://mycontainer@mystorageaccount.dfs.core.windows.net/'))
    

    Isso exibe uma lista de caminhos de arquivo no local externo. Neste exemplo, o abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv arquivo aparece na saída.

  4. Para ler um arquivo específico no local externo, execute o seguinte snippet de código Python:

    spark.read.format("csv") \
       .option("header", "true") \
       .option("delimiter", ";") \
       .load('abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv') \
       .display()
    

    Isso exibe os dados no abfss://mycontainer@mystorageaccount.dfs.core.windows.net/example.csv arquivo.

Próximas Etapas