Partilhar via


Receba compartilhamentos Delta Sharing usando um cliente Python e federação Open ID Connect (OIDC) em um fluxo máquina-a-máquina (compartilhamento aberto)

Esta página descreve como os destinatários de dados podem usar um cliente Python registrado em seu próprio provedor de identidade (IdP) para estabelecer acesso a compartilhamentos Delta Sharing criados no Databricks. Esse fluxo de concessão de credenciais de cliente OAuth "máquina a máquina" (M2M) normalmente é usado em cenários em que um aplicativo, como um trabalho noturno em execução em uma máquina virtual, acessa dados de forma autônoma. Esse fluxo de autenticação usa a federação OIDC, permitindo que JSON Web Tokens (JWTs) emitidos pelo IdP do destinatário sejam usados como tokens OAuth de curta duração autenticados pelo Databricks. Este fluxo de autenticação de compartilhamento de Databricks para externo destina-se a destinatários que não têm acesso a um espaço de trabalho Databricks ativado para o Catálogo Unity.

A federação Open OIDC é uma alternativa ao uso de tokens de portador emitidos pelo Databricks de longa duração para conectar destinatários que não são do Databricks a provedores. No fluxo de concessão de Credenciais do Cliente OAuth, um aplicativo OAuth é registrado como uma Entidade de Serviço (SP) no IdP do destinatário. Nenhum segredo ou credencial de longa duração é compartilhado entre o Databricks, o provedor e o destinatário. Para obter informações sobre como usar bearer tokens para gerir a autenticação em partilhas, consulte Criar um objeto de destinatário para utilizadores que não são do Databricks usando bearer tokens (partilha aberta).

Este artigo destina-se aos destinatários. Para obter informações sobre como os provedores podem habilitar a federação OIDC para destinatários no Azure Databricks, consulte Usar a federação OIDC (Open ID Connect) para habilitar a autenticação em compartilhamentos Delta Sharing (compartilhamento aberto). Para obter informações sobre o fluxo "user-to-machine" (U2M), consulte Receber partilhas Delta Sharing usando a federação Open ID Connect (OIDC) num fluxo utilizador-máquina (partilha aberta).

Registar uma aplicação no seu IdP

Antes de poder usar a federação OIDC para dar ao seu aplicativo cliente acesso a compartilhamentos Delta Sharing, você deve registrar um aplicativo OAuth em seu IdP. Esta seção descreve como registrar um aplicativo OAuth no Microsoft Entra ID. Para outros IdPs, consulte a documentação deles.

Registrar um aplicativo no Microsoft Entra ID

Estas instruções destinam-se a servir de orientação geral e não é garantido que estejam mantidas up-to-date. Para obter instruções detalhadas de registo de aplicativos, consulte este início rápido da Microsoft .

  1. Entre no centro de administração do Microsoft Entra como pelo menos um desenvolvedor de aplicativos.
  2. Aceda a Registos de aplicações e crie um novo registo sem um URL de redirecionamento.
  3. Aceda a Certificados & Segredos > Criar um secreto para a sua aplicação.
  4. Copie o valor secreto e armazene-o com segurança.
  5. Na página Visão geral dos registros de aplicações>, copie o ID da aplicação (cliente)
  6. Modifique o aplicativo para ser um aplicativo V2 atualizando o manifesto:
    1. Na seção Gerenciar do aplicativo, selecione Manifesto.
    2. No editor, defina accessTokenAcceptedVersion como 2.
    3. Salve as alterações.

Enviar as informações necessárias para o provedor de dados do Azure Databricks

Se você, como destinatário, usar o Microsoft Entra ID, poderá obter os campos exigidos pelo provedor seguindo estas instruções. Consulte sempre a documentação do Microsoft Entra ID para obter as instruções mais up-to.

  • URL do Emissor: https://login.microsoftonline.com/{tenantId}/v2.0, substituindo {tenantId} pelo seu ID de locatário do Entra. Se não souber o seu ID de inquilino, consulte a documentação do Microsoft Entra ID.

  • Reivindicação de Assunto: Refere-se ao campo na carga útil JWT que identifica a entidade que acessa os dados. O campo específico usado depende do seu Provedor de Identidade (IdP) e dos casos de uso. Por exemplo, para aplicativos M2M no Microsoft Entra ID, a declaração de assunto é azp, que representa a ID do cliente do aplicativo autorizado a usar o token. Para obter mais detalhes, consulte a referência de declarações de token do Microsoft Entra ID Access

  • Assunto: Refere-se ao identificador exclusivo do aplicativo OAuth registrado no Provedor de Identidade (IdP) do destinatário.
    Por exemplo, no Microsoft Entra ID, este é o ID do aplicativo (cliente). Se você não copiou o ID do cliente durante o registro, poderá recuperá-lo seguindo as etapas específicas do seu IdP. Para Microsoft Entra ID, siga estes passos:

    1. Navegue até Registos de aplicações no centro de administração do Microsoft Entra.
    2. Selecione seu aplicativo OAuth registrado.
    3. Localize o ID do aplicativo (cliente) na página Visão geral.

    Para outros IdPs, consulte a documentação deles para recuperar o identificador equivalente.

  • Audience: Para autenticação de máquina para Azure Databricks, normalmente utiliza-se o clientIddo recurso, mas é possível especificar qualquer outro identificador de recurso válido.

    Você deve ter copiado isso na etapa anterior. Caso contrário, navegue até o Centro de Administração do Microsoft Entra, procure Registos de Aplicações, selecione o seu aplicativo registrado e localize o ID de Aplicação (cliente) na página de visão geral. Você também pode usar um ID de recurso diferente.

Compartilhe emissor, reivindicação de assunto, assunto e audiência com o provedor.

Configure seu aplicativo para usar o arquivo de perfil OAuth compartilhado pelo provedor Databricks

Para configurar a sua aplicação para aceder às partilhas de Delta Sharing do fornecedor:

  1. Vá para a URL do portal de perfil OIDC que o provedor Databricks compartilhou com você.

    Solicite o URL se ainda não o recebeu.

  2. Na página do portal, selecione o mosaico M2M e, em Para OAuth, clique em Transferir ficheiro.

  3. Modifique o ficheiro JSON de oauth_config.share descarregado para adicionar os seus clientId, clientSecrete scope.

    Você deve ter copiado a ID do cliente e o segredo do cliente quando registrou seu aplicativo. Não é possível recuperar o segredo do cliente novamente. Para recuperar o ID do cliente, consulte as instruções na seção anterior.

    Se você optar por usar o aplicativo {clientId} como público-alvo, o escopo deve ser {clientId}/.default. Por exemplo, se o público for 61a80fb9-ce0c-4794-9f7f-2ba42a7b76f6, o escopo deve ser 61a80fb9-ce0c-4794-9f7f-2ba42a7b76f6/.default.

    Perfil da amostra:

    {
      "shareCredentialsVersion": 2,
      "endpoint": "https://oregon.cloud.databricks.com/api/2.0/delta-sharing/metastores/11a11aaa-11aa-11a12-11aa-111a1aa11111/recipients/a11da11aa1-a1a1-11a1-a11a-1111a11111aa",
      "tokenEndpoint": "https://login.microsoftonline.com/a111a111-1111-1aaa-1aa1-1aa1111aa1/oauth2/v2.0/token",
      "type": "oauth_client_credentials",
      "clientId": "[REPLACE_WITH_YOUR_CLIENT_ID]",
      "clientSecret": "[REPLACE_WITH_YOUR_CLIENT_SECRET]",
      "scope": "[REPLACE_WITH_YOUR_SCOPE]"
    }
    
  4. Instale e configure o cliente Delta Sharing Python OSS mais recente.

    Você deve ter a versão mais recente do cliente Delta Sharing Python OSS.

    python3 -m venv .venv
    source .venv/bin/activate
    pip3 install "delta-sharing>=1.3.1"
    
  5. Guarde o arquivo oauth_config.share atualizado.

  6. Teste a configuração:

    Crie um script de teste, test.py:

    import delta_sharing
    
    # Point to the profile file. It can be a file on the local file system or a file on a remote storage.
    
     profile_file = "oauth_config.share"
    
     # Create a SharingClient.
     client = delta_sharing.SharingClient(profile_file)
     #
     # List all shared tables.
     tables = client.list_all_tables()
    
     print(tables)
    
     # replace the following line with the coordinates of the shared table
     #table_url = profile_file + "#sample_share.sample_db.sample_table"
    
     # Fetch 10 rows from a table and convert it to a Pandas DataFrame.
     # This can be used to read sample data from a table that cannot fit in the memory.
     #df = delta_sharing.load_as_pandas(table_url, limit=10)
    
     #print(df)
    

    Execute o roteiro:

    python3 test.py
    

    O script deve listar as tabelas compartilhadas.