Criar armazenamento gerenciado do Unity Catalog usando uma entidade de serviço (legado)

Importante

Esta documentação foi desativada e pode não ser atualizada. Os produtos, serviços ou tecnologias mencionados neste conteúdo não são mais suportados. Para exibir a documentação de administrador atual, consulte Gerenciar sua conta do Azure Databricks.

Este artigo descreve um método herdado de criação de locais externos e armazenamento gerenciado usando uma entidade de serviço. Em vez de entidades de serviço, o Databricks recomenda que você use uma identidade gerenciada do Azure como a identidade que dá acesso ao contêiner de armazenamento. Consulte Usar identidades gerenciadas do Azure no Catálogo Unity para acessar o armazenamento.

No entanto, se você ainda quiser usar uma entidade de serviço, ou se tiver armazenamento gerenciado do Unity Catalog existente ou locais externos que usam uma entidade de serviço e quiser entender o processo, as instruções são fornecidas neste artigo de arquivamento.

Criar um metastore que é acessado usando uma entidade de serviço (legado)

Para criar um metastore do Unity Catalog que é acessado por uma entidade de serviço:

  1. Crie uma conta de armazenamento para o Azure Data Lake Storage Gen2.

    Um contêiner de armazenamento nessa conta armazena todas as tabelas gerenciadas do metastore, exceto aquelas que estão em um catálogo ou esquema com seu próprio local de armazenamento gerenciado.

    Consulte Criar uma conta de armazenamento para usar com o Azure Data Lake Storage Gen2. Essa deve ser uma conta de desempenho Premium do Azure Data Lake Storage Gen2 na mesma região que seus espaços de trabalho do Azure Databricks.

  2. Crie um contêiner na nova conta de armazenamento.

    Anote o URI do ADLSv2 para o contêiner, que está no seguinte formato:

    abfss://<container-name>@<storage-account-name>.dfs.core.windows.net/<metastore-name>
    

    Nas etapas a seguir, substitua <storage-container> por este URI.

  3. No Microsoft Entra ID, crie uma entidade de serviço e atribua-lhe permissões à conta de armazenamento, usando as instruções no armazenamento do Access usando uma entidade de serviço & Microsoft Entra ID(Azure Ative Directory).

    O Unity Catalog usará essa entidade de serviço para acessar contêineres na conta de armazenamento em nome dos usuários do Unity Catalog. Gere um segredo de cliente para a entidade de serviço. Consulte Autenticação da entidade de serviço do MS Entra. Anote o segredo do cliente para a entidade de serviço, a ID do aplicativo cliente e a ID do diretório onde você criou essa entidade de serviço. Nas etapas a seguir, substitua <client-secret>, <client-application-id>e <directory-id> com esses valores.

  4. Anote estas propriedades, que você usará ao criar um metastore:

    • <aad-application-id>
    • A região da conta de armazenamento
    • <storage-container>
    • A entidade de serviço , <client-secret><client-application-id>e<directory-id>
  5. Não é possível criar um metastore que é acessado usando uma entidade de serviço na interface do usuário do console da conta. Em vez disso, use a API de Metastores de Conta. Por exemplo:

    curl -n -X POST --header 'Content-Type: application/json' https://<account-domain>/api/2.0/accounts/<account-id>/metastores
    --data '{
       "metastore_info": {
          "name": "<metastore-name>",
          "storage_root": "<storage-container>",
          "region": "<region>"
          "storage_root_credential_id"
       }
    }'
    

    Para saber como autenticar APIs no nível da conta, consulte Autenticação da entidade de serviço do MS Entra.

    O usuário que cria uma metastore é seu proprietário. O Databricks recomenda que você reatribua a propriedade do metastore a um grupo. Consulte Atribuir um administrador de metastore.

  6. Anote o ID do metastore. Quando você visualiza as propriedades do metastore, o ID do metastore é a parte do URL depois /data e antes /configurationdo .

  7. O metastore foi criado, mas o Unity Catalog ainda não pode gravar dados nele. Para concluir a configuração do metastore:

    1. Em um navegador separado, faça login em um espaço de trabalho atribuído ao metastore como administrador do espaço de trabalho.

    2. 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. Consulte a API de gerenciamento de tokens.

    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 criar a credencial de armazenamento raiz para o metastore. Substitua os valores de espaço reservado:

      • <workspace-url>: A URL do espaço de trabalho onde o token de acesso pessoal foi gerado.
      • <credential-name>: Um nome para a credencial de armazenamento.
      • <directory-id>: O ID do diretório para a entidade de serviço que você criou.
      • <application-id>: A ID do aplicativo para a entidade de serviço que você criou.
      • <client-secret>: O valor do segredo do cliente que você gerou para a entidade de serviço (não o ID secreto do cliente).
      curl -n -X POST --header 'Content-Type: application/json' https://<workspace-url>/api/2.0/unity-catalog/storage-credentials --data "{
         \"name\": \"<credential-name>\",
         \"azure_service_principal\": {
         \"directory_id\": \"<directory-id>\",
         \"application_id\": \"<application-id>\",
         \"client_secret\": \"<client-secret>\"
         }
      }"
      

      Anote o ID da credencial de armazenamento, que é o valor da resposta do id comando cURL.

  8. Execute o seguinte comando cURL para atualizar o metastore com a nova credencial de armazenamento raiz. Substitua os valores de espaço reservado:

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

Agora você pode adicionar espaços de trabalho ao metastore.

Criar uma credencial de armazenamento que usa uma entidade de serviço (herdada)

Para criar uma credencial de armazenamento usando uma entidade de serviço, você deve ser um administrador de conta do Azure Databricks. O administrador da conta que cria a credencial de armazenamento da entidade de serviço pode delegar a propriedade a outro usuário ou grupo para gerenciar permissões nele.

Primeiro, crie uma entidade de serviço e conceda-lhe acesso à sua conta de armazenamento após o armazenamento do Access usando uma entidade de serviço & Microsoft Entra ID(Azure Ative Directory).

Não é possível adicionar uma credencial de armazenamento da entidade de serviço usando o Gerenciador de Catálogos. Em vez disso, use a API de credenciais de armazenamento. Por exemplo:

curl -X POST -n \
https://<databricks-instance>/api/2.1/unity-catalog/storage-credentials \
-d '{
   "name": "<storage-credential-name>",
   "read_only": true,
   "azure_service_principal": {
      "directory_id": "<directory-id>",
      "application_id": "<application-id>",
      "client_secret": "<client-secret>"
   },
   "skip_validation": "false"
   }'

Você também pode criar uma credencial de armazenamento usando o provedor Databricks Terraform e databricks_storage_credential.