Criar uma credencial de armazenamento para se conectar ao Azure Data Lake Storage Gen2

Este artigo descreve como criar uma credencial de armazenamento no Catálogo do Unity para se conectar ao Azure Data Lake Storage Gen2.

Para gerenciar o acesso ao armazenamento em nuvem subjacente que contém tabelas e volumes, o Catálogo do Unity usa os seguintes tipos de objetos:

  • As credenciais de armazenamento encapsulam uma credencial de nuvem de longo prazo que fornece acesso ao armazenamento em nuvem.
  • Os locais externos contêm uma referência a uma credencial de armazenamento e a um caminho de armazenamento em nuvem.

Para obter mais informações, consulte Gerenciar o acesso ao armazenamento em nuvem usando o Catálogo do Unity.

Observação

Se você quiser usar o Catálogo do Unity para controlar o acesso a um serviço externo em vez do armazenamento em nuvem, consulte Gerenciar o acesso a serviços de nuvem externos usando credenciais de serviço.

O Catálogo do Unity dá suporte a duas opções de armazenamento em nuvem para o Azure Databricks: contêineres do Azure Data Lake Storage Gen2 e buckets do Cloudflare R2. O Cloudflare R2 destina-se principalmente a casos de uso de compartilhamento Delta nos quais você deseja evitar custos de saída de dados. O Azure Data Lake Storage Gen2 é apropriado para a maioria dos outros casos de uso. Este artigo se concentra na criação de credenciais de armazenamento para contêineres do Azure Data Lake Storage Gen2. Para o Cloudflare R2, confira Criar uma credencial de armazenamento para se conectar ao Cloudflare R2.

Para criar uma credencial de armazenamento para acesso a um contêiner do Azure Data Lake Storage Gen2, você cria um conector de acesso do Azure Databricks que faz referência a uma identidade gerenciada do Azure, atribuindo-lhe permissões no contêiner de armazenamento. Em seguida, faça referência a esse conector de acesso na definição da credencial de armazenamento.

Requisitos

No Azure Databricks:

  • Workspace do Azure Databricks habilitado para o Catálogo do Unity.

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

    Observação

    As entidades de serviço devem ter a função de administrador da conta para criar uma credencial de armazenamento que use uma identidade gerenciada. Você não pode delegar CREATE STORAGE CREDENTIAL a uma entidade de serviço. Isso se aplica às entidades de serviço do Azure Databricks e às entidades de serviço do Microsoft Entra ID.

Em seu locatário do Azure:

  • Um contêiner de armazenamento do Azure Data Lake Storage Gen2 na mesma região do workspace a partir do qual você deseja acessar os dados.

    A conta de armazenamento do Azure Data Lake Storage Gen2 deve ter um namespace hierárquico.

  • Colaborador ou Proprietário de um grupo de recursos do Azure.

  • Proprietário ou usuário com a função RBAC de administrador de acesso do usuário no Azure na conta de armazenamento.

Criar uma credencial de armazenamento usando uma identidade gerenciada

É possível usar uma identidade gerenciada do Azure ou uma entidade de serviço como a identidade que autoriza o acesso ao contêiner de armazenamento. As identidades gerenciadas são altamente recomendadas. Elas têm o benefício de permitir que o Catálogo do Unity acesse contas de armazenamento protegidas por regras de rede, o que não é possível usando entidades de serviço, e eliminam a necessidade de gerenciar e girar segredos. Se você quiser usar uma entidade de serviço, confira Criar armazenamento gerenciado do Catálogo do Unity usando uma entidade de serviço (herdada).

  1. No portal do Azure, crie um conector de acesso do Azure Databricks e atribua a ele permissões no contêiner de armazenamento que você deseja acessar seguindo as instruções em Configurar uma identidade gerenciada para o Catálogo do Unity.

    Um conector de acesso do Azure Databricks é um recurso primário do Azure que permite conectar identidades gerenciadas a uma conta do Azure Databricks. Você precisa ter a função Colaborador ou superior no recurso do conector de acesso no Azure para adicionar a credencial de armazenamento.

    Anote a ID do recurso do conector de acesso.

  2. Faça logon no workspace do Azure Databricks habilitado para o Catálogo do Unity como um usuário que tenha o privilégio CREATE STORAGE CREDENTIAL.

    As funções de administrador do metastore e administrador da conta incluem esse privilégio. Se você estiver conectado como uma entidade de serviço (seja do Microsoft Entra ID ou uma entidade de serviço nativa do Azure Databricks), você deverá ter a função de administrador da conta para criar uma credencial de armazenamento que use uma identidade gerenciada.

  3. Clique em Ícone do catálogo Catálogo.

  4. Na página Acesso rápido, clique no botão Dados externos>, vá para a guia Credenciais e selecione Criar credencial.

  5. Selecione Credencial de armazenamento.

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

  7. Insira um nome para a credencial e digite a ID do recurso do conector de acesso no seguinte formato:

    /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    
  8. (Opcional) Se você criou o conector de acesso usando uma identidade gerenciada atribuída pelo usuário, insira a ID do recurso da identidade gerenciada no campo ID de identidade gerenciada atribuída pelo usuário, no formato:

    /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managed-identity-name>
    
  9. (Opcional) Se você quiser que os usuários tenham acesso somente leitura aos locais externos que usam essa credencial de armazenamento, selecione Somente leitura. Para obter mais informações, confira Marcar uma credencial de armazenamento como somente leitura.

  10. Clique em Criar.

  11. (Opcional) Associe a credencial 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. Confira (Opcional) Atribuir uma credencial de armazenamento a workspaces específicos.

  12. Crie um local externo que faça referência à credencial de armazenamento.

(Opcional) Atribuir uma credencial de armazenamento a workspaces específicos

Importante

Esse recurso está em uma versão prévia.

Por padrão, uma credencial de armazenamento é acessível de todos os workspaces no metastore. Isso significa que, se um usuário recebeu um privilégio (como CREATE EXTERNAL LOCATION) nessa credencial de armazenamento, poderá exercer esse privilégio de qualquer workspace anexado ao metastore. Se você utiliza workspaces para isolar o acesso aos dados dos usuários, talvez queira permitir o acesso a uma credencial de armazenamento somente de workspaces específicos. Essa funcionalidade é conhecida como associação de workspace ou isolamento de credencial de armazenamento.

Um caso de uso comum para associar uma credencial de armazenamento a workspaces específicos é quando um administrador de nuvem configura uma credencial de armazenamento usando uma credencial de conta de nuvem de produção e quer garantir que os usuários do Azure Databricks usem essa credencial apenas para criar locais externos no workspace de produção.

Para obter mais informações sobre a associação de workspace, consulte (Opcional) Atribuir um local externo a workspaces específicos e Limitar o acesso ao catálogo a workspaces específicos.

Observação

As associações de workspace são referenciadas quando os privilégios em relação às credenciais de armazenamento são exercidos. Por exemplo, se um usuário cria um local externo utilizando uma credencial de armazenamento, a associação de workspace na credencial de armazenamento é verificada apenas quando o local externo é criado. Depois que o local externo for criado, ele funcionará de forma independente, sem considerar as associações de workspace configuradas na credencial de armazenamento.

Associar uma credencial de armazenamento a um ou mais workspaces

Para atribuir uma credencial de armazenamento 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 da credencial de armazenamento.

Observação

Os administradores de metastore podem ver todas as credenciais de armazenamento em um metastore usando o Gerenciador de Catálogos, e os proprietários de credenciais de armazenamento podem ver todas as credenciais de armazenamento que possuem em um metastore, independentemente de a credencial estar atribuída ao workspace atual. As credenciais de armazenamento que não são atribuídas ao workspace aparecem esmaecidas.

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 >e vá para a guia Credenciais.

  4. Selecione a credencial de armazenamento e vá para a guia Workspaces.

  5. Na guia Workspaces, desmarque a caixa de seleção Todos os workspaces têm acesso.

    Se a credencial de armazenamento já estiver associada a um ou mais workspaces, 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 de CLI do Databricks e duas etapas necessárias para atribuir um catálogo 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 comandoupdate do grupo de comandos storage-credentials para definir o isolation mode das credenciais de armazenamento como ISOLATED:

    databricks storage-credentials update <my-storage-credential> \
    --isolation-mode ISOLATED \
    --profile <profile-name>
    

    O isolation-mode padrão é OPEN para todos os workspaces anexados ao metastore.

  2. Use o comando update-bindings do grupo de comandos workspace-bindings para atribuir os workspaces à credencial de armazenamento:

    databricks workspace-bindings update-bindings storage-credential <my-storage-credential> \
    --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 credenciais de armazenamento. Portanto, não há motivo para definir binding_type como a associação de credenciais de armazenamento.

Para listar todas as atribuições de workspaces para uma credencial de armazenamento, use o comando get-bindings do grupo de comandos workspace-bindings:

databricks workspace-bindings get-bindings storage-credential <my-storage-credential> \
--profile <profile-name>

Desassociar uma credencial de armazenamento de um workspace

As instruções para revogar o acesso ao workspace a uma credencial de armazenamento usando o Gerenciador de Catálogos ou o grupo de comandos da CLI workspace-bindings estão incluídas em Associar uma credencial de armazenamento a um ou mais workspaces.

Próximas etapas

Você pode ver, atualizar, excluir e conceder a outros usuário a permissão para usar credenciais de armazenamentos. Confira Gerenciar credenciais de armazenamento.

Você pode definir locais externos usando credenciais de armazenamento. Confira Crie um local externo para conectar o armazenamento em nuvem ao Azure Databricks.