Partilhar via


Usar identidades gerenciadas do Azure no Catálogo Unity para acessar o armazenamento

Este artigo descreve como usar identidades gerenciadas do Azure para se conectar a contêineres de armazenamento em nome de usuários do Catálogo Unity.

O que são identidades gerenciadas do Azure?

O Catálogo Unity pode ser configurado para usar uma identidade gerenciada do Azure para acessar contêineres de armazenamento em nome dos usuários do Catálogo Unity. As identidades gerenciadas fornecem uma identidade para os aplicativos usarem quando se conectarem a recursos que oferecem suporte à autenticação do Microsoft Entra ID (anteriormente Azure Ative Directory).

Você pode usar identidades gerenciadas no Unity Catalog para dar suporte a dois casos de uso principais:

  • Como uma identidade para se conectar às contas de armazenamento gerenciado do metastore (onde as tabelas gerenciadas são armazenadas).
  • Como uma identidade para se conectar a outras contas de armazenamento externo (para acesso baseado em arquivo ou para acessar conjuntos de dados existentes por meio de tabelas externas).

Configurar o Unity Catalog com uma identidade gerenciada tem os seguintes benefícios em relação à configuração do Unity Catalog com uma entidade de serviço:

Configurar uma identidade gerenciada para o Unity Catalog

Para configurar uma identidade gerenciada para usar com o Unity Catalog, primeiro crie um conector de acesso para o Azure Databricks no Azure. Por padrão, o conector de acesso será implantado com uma identidade gerenciada atribuída ao sistema. Em vez disso, você pode optar por anexar uma identidade gerenciada atribuída pelo usuário. Em seguida, você concede acesso à identidade gerenciada à sua conta do Azure Data Lake Storage Gen2 e usa o conector de acesso ao criar um metastore ou uma credencial de armazenamento do Catálogo Unity.

Requisitos

O usuário ou entidade de serviço do Azure que cria o conector de acesso deve:

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

O usuário ou entidade de serviço do Azure que concede a identidade gerenciada à conta de armazenamento deve:

  • Seja um Proprietário ou um usuário com a função RBAC do Azure Administrador de Acesso de Usuário na conta de armazenamento.

Etapa 1: Criar um conector de acesso para o Azure Databricks

O Access Connector for Azure Databricks é um recurso primário do Azure que permite conectar identidades gerenciadas a uma conta do Azure Databricks.

Cada conector de acesso para o Azure Databricks pode conter uma identidade gerenciada atribuída ao sistema ou uma identidade gerenciada atribuída pelo usuário. Se você quiser usar várias identidades gerenciadas, crie um conector de acesso separado para cada uma.

Usar uma identidade gerenciada atribuída ao sistema

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

  3. Procure o Access Connector for Azure Databricks e selecione-o.

  4. Clique em Criar.

  5. Na guia Noções básicas, aceite, selecione ou insira valores para os seguintes campos:

    • Assinatura: Esta é a assinatura do Azure na qual o conector de acesso será criado. O padrão é a assinatura do Azure que você está usando no momento. Pode ser qualquer subscrição no inquilino.
    • Grupo de recursos: este é o grupo de recursos do Azure no qual o conector de acesso será criado.
    • Nome: insira um nome que indique a finalidade do conector.
    • Região: deve ser a mesma região da conta de armazenamento à qual você se conectará.
  6. Clique em Rever + criar.

  7. Quando vir a mensagem Validação aprovada , clique em Criar.

    Quando a implantação é bem-sucedida, o conector de acesso é implantado com uma identidade gerenciada atribuída ao sistema.

  8. Após a conclusão da implementação, clique em Ir para recurso.

  9. Anote a ID do recurso.

    O ID do recurso está no formato:

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

Usar uma identidade gerenciada atribuída pelo usuário

  1. Se você ainda não tiver uma identidade gerenciada atribuída pelo usuário, crie uma nova e anote sua ID de recurso.

    Consulte Gerenciar identidades gerenciadas atribuídas pelo usuário.

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

    O grupo de recursos deve estar na mesma região da conta de armazenamento à qual você deseja se conectar.

  3. Procure Implantar um modelo personalizado e selecione-o.

  4. Selecione Criar seu próprio modelo e cole o seguinte modelo no editor:

    {
     "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
     "contentVersion": "1.0.0.0",
     "parameters": {
         "connectorName": {
             "defaultValue": "testConnector",
             "type": "String",
             "metadata": {
                 "description": "The name of the Azure Databricks Access Connector to create."
             }
         },
         "accessConnectorRegion": {
             "defaultValue": "[resourceGroup().location]",
             "type": "String",
             "metadata": {
                 "description": "Location for the access connector resource."
             }
         },
         "userAssignedManagedIdentiy": {
             "type": "String",
             "metadata": {
                 "description": "The resource Id of the user assigned managed identity."
             }
         }
     },
     "resources": [
         {
             "type": "Microsoft.Databricks/accessConnectors",
             "apiVersion": "2023-05-01",
             "name": "[parameters('connectorName')]",
             "location": "[parameters('accessConnectorRegion')]",
             "identity": {
                 "type": "UserAssigned",
                 "userAssignedIdentities": {
                     "[parameters('userAssignedManagedIdentiy')]": {}
                 }
              }
          }
       ]
    }
    
  5. Na guia Noções básicas, aceite, selecione ou insira valores para os seguintes campos:

    • Assinatura: a assinatura do Azure na qual o conector de acesso será criado. O padrão é a assinatura do Azure que você está usando no momento. Pode ser qualquer subscrição no inquilino.
    • Grupo de recursos: um grupo de recursos na mesma região da conta de armazenamento à qual você se conectará.
    • Nome: um nome que indica a finalidade do conector.
    • Região: deve ser a mesma região da conta de armazenamento à qual você se conectará. Você pode escolher o valor pré-preenchido '[resourceGroup().location]' se o grupo de recursos tiver sido criado na mesma região da conta de armazenamento à qual você se conectará.
    • Identidade Gerenciada Atribuída pelo Usuário: A ID do Recurso da identidade gerenciada atribuída pelo usuário que você deseja usar.
  6. Clique em Rever + criar.

  7. Quando vir a mensagem Validação aprovada , clique em Criar.

  8. Após a conclusão da implementação, clique em Ir para recurso.

  9. Anote a ID do recurso.

    O ID do recurso está no formato:

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

Etapa 2: Conceder acesso à identidade gerenciada à conta de armazenamento

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

  1. Faça logon na sua conta do Azure Data Lake Storage Gen2.
  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 de Blob de Armazenamento e clique em Avançar.
  4. Em Atribuir acesso a, selecione Identidade gerenciada.
  5. Clique em +Selecionar Membros e selecione Conector de acesso para o Azure Databricks ou Identidade gerenciada atribuída pelo usuário.
  6. Procure o nome do conector ou a identidade atribuída pelo usuário, selecione-o e clique em Revisar e Atribuir.

Como alternativa, você pode limitar o acesso à conta de armazenamento concedendo à identidade gerenciada acesso a um contêiner específico. Siga as mesmas etapas acima, mas conceda a função de Delegador de Blob de Armazenamento na conta de armazenamento e a função de Colaborador de Dados de Blob de Armazenamento no contêiner.

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

Conceder à sua identidade gerenciada acesso a eventos de arquivo permite que o Azure Databricks assine notificações de eventos de arquivo emitidas por provedores de nuvem. Isso torna o processamento de arquivos mais eficiente. Para conceder as permissões nesta etapa, você deve ter a função RBAC do Azure Proprietário ou Administrador de Acesso de Usuário em sua conta de armazenamento.

  1. Faça logon na sua conta do Azure Data Lake Storage Gen2.
  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 Avançar.
  4. Em Atribuir acesso a, selecione Identidade gerenciada.
  5. Clique em +Selecionar Membros e selecione Conector de acesso para o Azure Databricks ou Identidade gerenciada atribuída pelo usuário.
  6. Procure o nome do conector ou a identidade atribuída pelo usuário, selecione-o e clique em Revisar e Atribuir.

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

  1. Siga as etapas acima em Etapa 3: Conceder à identidade gerenciada acesso a eventos de arquivo e atribuir o Colaborador da Conta de Armazenamento, juntamente com a função de Colaborador de Dados da Fila de Armazenamento , à sua identidade gerenciada.
  2. Navegue até o grupo de recursos do Azure no qual sua conta do Azure Data Lake Storage Gen2 está.
  3. Vá para Controle de Acesso (IAM), clique em + Adicionar e selecione Adicionar atribuição de função.
  4. Selecione a função EventGrid EventSubscription Contributor e clique em Next.
  5. Em Atribuir acesso a, selecione Identidade gerenciada.
  6. Clique em +Selecionar Membros e selecione Conector de acesso para o Azure Databricks ou Identidade gerenciada atribuída pelo usuário.
  7. Procure o nome do conector ou a identidade atribuída pelo usuário, selecione-o e clique em Revisar e Atribuir.

Use uma identidade gerenciada para acessar a conta de armazenamento raiz do Unity Catalog

Esta seção descreve como conceder à identidade gerenciada acesso à conta de armazenamento raiz quando você cria um metastore do Unity Catalog.

Para saber como atualizar um metastore existente do Unity Catalog para usar uma identidade gerenciada, consulte Atualizar seu metastore existente do Unity Catalog para usar uma identidade gerenciada para acessar seu armazenamento raiz.

  1. Como administrador de conta do Azure Databricks, inicie sessão na consola de conta do Azure Databricks.
  2. Clique em Ícone do catálogoCatálogo.
  3. Clique em Criar Metastore.
  4. Insira valores para os seguintes campos:
    • Nome do metastore.

    • Região onde o metastore será implantado.

      Para obter o melhor desempenho, colocalize o conector de acesso, espaços de trabalho, metastore e local de armazenamento em nuvem na mesma região de nuvem.

    • Caminho do ADLS Gen 2: insira o caminho para o contêiner de armazenamento que você usará como armazenamento raiz para o metastore.

      O abfss:// prefixo é adicionado automaticamente.

    • ID do Conector de Acesso: insira a ID de recurso do conector de acesso do Azure Databricks no formato:

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

  5. Clique em Criar.
  6. Quando solicitado, selecione espaços de trabalho para vincular ao metastore.

Usar uma identidade gerenciada para acessar o armazenamento externo gerenciado no Unity Catalog

O Unity Catalog oferece a capacidade de acessar dados existentes em contas de armazenamento usando credenciais de armazenamento e locais externos. As credenciais de armazenamento armazenam a identidade gerenciada e os locais externos definem um caminho para o armazenamento junto com uma referência à credencial de armazenamento. Você pode usar essa abordagem para conceder e controlar o acesso aos dados existentes no armazenamento em nuvem e para registrar tabelas externas no Unity Catalog.

Uma credencial de armazenamento pode conter uma identidade gerenciada ou uma entidade de serviço. O uso de uma identidade gerenciada tem a vantagem de permitir que o Unity Catalog acesse contas de armazenamento protegidas por regras de rede, o que não é possível usando entidades de serviço, e elimina a necessidade de gerenciar e girar segredos.

Para criar uma credencial de armazenamento usando uma identidade gerenciada e atribuir essa credencial de armazenamento a um local externo, siga as instruções em Conectar ao armazenamento de objetos na nuvem usando o Unity Catalog.

Se o seu espaço de trabalho do Azure Databricks for implantado em sua própria rede virtual do Azure, também conhecida como "injeção de VNet", e você usar um firewall de armazenamento para proteger uma conta do Azure Data Lake Storage Gen2, você deverá:

  1. Habilite seu espaço de trabalho do Azure Databricks para acessar o Armazenamento do Azure.
  2. Habilite sua identidade gerenciada para acessar o Armazenamento do Azure.

Passo 1. Habilite seu espaço de trabalho do Azure Databricks para acessar o Armazenamento do Azure

Você deve definir as configurações de rede para permitir que seu espaço de trabalho do Azure Databricks acesse o Azure Data Lake Storage Gen2. Você pode configurar pontos de extremidade privados ou acesso de sua rede virtual no Azure Data Lake Storage Gen2 para permitir conexões de suas sub-redes para sua conta do Azure Data Lake Storage Gen2.

Para obter instruções, consulte Conceder acesso ao espaço de trabalho do Azure Databricks ao Azure Data Lake Storage Gen2.

Etapa 2: habilitar sua identidade gerenciada para acessar o Armazenamento do Azure

Esta etapa será necessária somente se "Permitir que os serviços do Azure na lista de serviços confiáveis acessem esta conta de armazenamento" estiver desabilitado para sua conta de Armazenamento do Azure. Se essa configuração estiver ativada:

  • Qualquer conector de acesso para o Azure Databricks no mesmo locatário que a conta de armazenamento pode acessar a conta de armazenamento.
  • Qualquer serviço confiável do Azure pode acessar a conta de armazenamento. Consulte Conceder acesso a serviços confiáveis do Azure.

As instruções abaixo incluem uma etapa na qual você desabilita essa configuração. Você pode usar o Portal do Azure ou a CLI do Azure.

Utilizar o Portal do Azure

  1. Faça logon no Portal do Azure, localize e selecione a conta de Armazenamento do Azure e vá para a guia Rede .

  2. Defina Acesso à Rede Pública como Ativado a partir de redes virtuais e endereços IP selecionados.

    Como opção, você pode, em vez disso, definir Acesso à Rede Pública como Desativado. A identidade gerenciada pode ser usada para ignorar a verificação de acesso à rede pública.

  3. Em Instâncias de recurso, selecione um tipo de recurso de Microsoft.Databricks/accessConnectors e selecione seu conector de acesso do Azure Databricks.

  4. Em Exceções, desmarque a caixa de seleção Permitir que os serviços do Azure na lista de serviços confiáveis acessem essa conta de armazenamento.

Utilizar a CLI do Azure

  1. Instale a CLI do Azure e entre.

    Para entrar usando uma entidade de serviço do Microsoft Entra ID, consulte Logon da CLI do Azure com uma entidade de serviço do Microsoft Entra ID.

    Para entrar usando uma conta de usuário do Azure Databricks, consulte Logon da CLI do Azure com uma conta de usuário do Azure Databricks.

  2. Adicione uma regra de rede à conta de armazenamento:

    az storage account network-rule add \
    -–subscription <subscription id of the resource group> \
    -–resource-id <resource Id of the access connector for Azure Databricks> \
    -–tenant-id <tenant Id> \
    -g <name of the Azure Storage resource group> \
    -–account-name <name of the Azure Storage resource> \
    

    Adicione o ID do recurso no formato:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    
  3. Depois de criar a regra de rede, vá para sua conta de Armazenamento do Azure no Portal do Azure e exiba a identidade gerenciada na guia Rede em Instâncias de recurso, tipo Microsoft.Databricks/accessConnectorsde recurso .

  4. Em Exceções, desmarque a caixa de seleção Permitir que os serviços do Azure na lista de serviços confiáveis acessem essa conta de armazenamento.

  5. Opcionalmente, defina Acesso à Rede Pública como Desativado. A identidade gerenciada pode ser usada para ignorar a verificação de acesso à rede pública.

    A abordagem padrão é manter esse valor definido como Ativado a partir de redes virtuais e endereços IP selecionados.

Os armazéns SQL sem servidor são recursos de computação executados na assinatura do Azure para o Azure Databricks, não na sua assinatura do Azure. Se você configurar um firewall no Azure Data Lake Storage Gen2 e planeja usar armazéns SQL sem servidor, deverá configurar o firewall para permitir o acesso de armazéns SQL sem servidor.

Para obter instruções, consulte Configurar um firewall para acesso de computação sem servidor.

Atualize seu metastore existente do Unity Catalog para usar uma identidade gerenciada para acessar seu armazenamento raiz

Se você tiver um metastore do Unity Catalog que foi criado usando uma entidade de serviço e quiser atualizá-lo para usar uma identidade gerenciada, poderá atualizá-lo usando uma chamada de API.

  1. Crie um Access Connector para Azure Databricks e atribua-lhe permissões ao contêiner de armazenamento que está sendo usado para seu armazenamento raiz de metastore do Unity Catalog, usando as instruções em Configurar uma identidade gerenciada para o Unity Catalog.

    Você pode criar o conector de acesso com uma identidade gerenciada atribuída pelo sistema ou uma identidade gerenciada atribuída pelo usuário.

    Anote o ID de recurso do conector de acesso. Se você usar uma identidade gerenciada atribuída pelo usuário, anote também sua ID de recurso.

  2. Como administrador de conta, faça logon em um espaço de trabalho do Azure Databricks atribuído ao metastore.

    Você não precisa ser um administrador de espaço de trabalho.

    Anote a URL do espaço de trabalho, que é a primeira parte da URL, depois https:// e inclusive do azuredatabricks.net.

  3. Gere um token de acesso pessoal.

  4. Adicione o token de acesso pessoal ao .netrc arquivo em seu diretório inicial. Isso melhora a segurança, impedindo que o token de acesso pessoal apareça no histórico de comandos do shell. Consulte a API de gerenciamento de tokens.

  5. Execute o seguinte comando cURL para recriar a credencial de armazenamento.

    Substitua os valores de espaço reservado:

    • <databricks-instance>: A URL do espaço de trabalho onde o token de acesso pessoal foi gerado.
    • <credential-name>: Um nome para a credencial de armazenamento.
    • <access-connector-id>: ID de recurso para o conector de acesso do Azure Databricks no formato /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    • <managed-identity-id>: Se você criou o conector de acesso usando uma identidade gerenciada atribuída pelo usuário, especifique a ID do recurso da identidade gerenciada.
    curl -n -X POST --header 'Content-Type: application/json' https://<databricks-instance>/api/2.0/unity-catalog/storage-credentials --data "{
      \"name\": \"<credential-name>\",
      \"azure_managed_identity\": {
        \"access_connector_id\": \"<access-connector-id>\",
        \"managed_identity_id\": \"<managed-identity-id>\"
      }
    }"
    
  6. Anote o ID da credencial de armazenamento na resposta.

  7. Execute o seguinte comando cURL para recuperar o metastore_id, onde <databricks-instance> é a URL do espaço de trabalho onde o token de acesso pessoal foi gerado.

    curl -n GET--header 'Content-Type: application/json' https://<databricks-instance>/api/2.0/unity-catalog/metastore_summary
    
  8. Execute o seguinte comando cURL para atualizar o metastore com a nova credencial de armazenamento raiz.

    Substitua os valores de espaço reservado:

    • <databricks-instance>: A URL do espaço de trabalho onde o token de acesso pessoal foi gerado.
    • <metastore-id>: O ID do metastore que você recuperou na etapa anterior.
    • <storage-credential-id>: O ID da credencial de armazenamento.
    curl -n -X PATCH --header 'Content-Type: application/json' https://<databricks-instance>/api/2.0/unity-catalog/metastores/<metastore-id> --data
    "{\"storage_root_credential_id\": \"<storage-credential-id>\"}"