Compartilhar via


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, confira Conectar-se ao armazenamento de objetos de nuvem usando o Catálogo do Unity.

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 (antigo Azure Active Directory).

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 no Ícone do catálogoCatálogo.

  4. Clique no botão + Adicionar no canto superior direito e selecione Adicionar uma credencial de armazenamento no menu.

    Essa opção não será exibida se você não tiver o privilégio CREATE STORAGE CREDENTIAL.

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

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

  9. Clique em Save (Salvar).

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

  11. 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 mais informações sobre a associação de workspace, confira (Opcional) Atribuir um local externo a workspaces específicos e Exemplo de associação catálogo de workspace.

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 API REST do Unity Catalog.

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 no Ícone do catálogoCatálogo.

  3. Na parte inferior da tela, clique em Dados Externos > Credenciais de armazenamento.

  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.

API

Há duas APIs e duas etapas necessárias para atribuir uma credencial de armazenamento a um workspace. Nos exemplos a seguir, substitua <workspace-url> pelo nome da instância do workspace. Para saber como obter o nome da instância do workspace e a ID do workspace, consulte Obter identificadores para objetos do workspace. Para saber mais sobre como obter tokens de acesso, confira Autenticação para automação do Azure Databricks - visão geral.

  1. Use a API storage credential para definir as credenciais de armazenamento do isolation mode como ISOLATION_MODE_ISOLATED:

    curl -L -X PATCH 'https://<workspace-url>/api/2.1/unity-catalog/storage-credentials/<my-storage-credential> \
    -H 'Authorization: Bearer <my-token> \
    -H 'Content-Type: application/json' \
    --data-raw '{
     "isolation_mode": "ISOLATION_MODE_ISOLATED"
     }'
    

    O isolation mode padrão é ISOLATION_MODE_OPEN para todos os workspaces anexados ao metastore. Consulte Credenciais de Armazenamento na referência de API REST.

  2. Use a API bindings de atualização para atribuir os workspaces à credencial de armazenamento:

    curl -L -X PATCH 'https://<workspace-url>/api/2.1/unity-catalog/bindings/storage-credentials/<my-storage-credential> \
    -H 'Authorization: Bearer <my-token> \
    -H 'Content-Type: application/json' \
    --data-raw '{
      "add": [{"workspace_id": <workspace-id>,...],
      "remove": [{"workspace_id": <workspace-id>,...]
    }'
    

    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 o tipo de associação para a associação de credenciais de armazenamento.

Para listar todas as atribuições de espaço de trabalho em uma credencial de armazenamento, utilize a lista da API bindings:

   curl -L -X GET 'https://<workspace-url>/api/2.1/unity-catalog/bindings/storage-credentials/<my-storage-credential> \
   -H 'Authorization: Bearer <my-token> \

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 a API bindings estão detalhadas 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.