Pular para o conteúdo principal

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

info

Visualização

Esse recurso está em Public Preview.

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 aos compartilhamentos do Delta Sharing criados no Databricks. Esse fluxo de concessão de "machine-to-machine" (M2M) OAuth Client Credentials é normalmente usado em cenários em que um aplicativo, como um trabalho noturno executado 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 OAuth tokens de curta duração, autenticados por Databricks. Este fluxo Databricksde autenticação -to-open compartilhamento é para destinatários que não têm acesso a um Unity Catalog habilitado Databricks workspace.

A federação Open OIDC é uma alternativa ao uso de tokens portadores emitidos pela Databricks de longa duração para conectar destinatários que não são da Databricks a provedores. No fluxo de concessão de credenciais de cliente OAuth, um aplicativo OAuth é registrado como uma entidade de serviço (Service Principal, SP) no IdP do destinatário. Nenhum segredo ou credencial de longa duração é compartilhado entre a Databricks, o provedor e o destinatário. Para obter informações sobre como usar o portador tokens para gerenciar a autenticação em compartilhamentos, consulte Criar um objeto destinatário para usuários que não sejam doDatabricks usando o portador tokens (compartilhamento aberto).

Este artigo é destinado aos destinatários. Para obter informações sobre como os provedores podem habilitar a federação OIDC para destinatários em Databricks, consulte Usar a federação Open ID Connect (OIDC) para habilitar a autenticação em compartilhamentos Delta Sharing (compartilhamento aberto). Para obter informações sobre o fluxo "user-to-machine" (U2M), consulte Receber compartilhamentos Delta Sharing usando a federação Open ID Connect (OIDC) em um fluxo user-to-machine (compartilhamento aberto).

registrar um aplicativo em seu IdP

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

registrar um aplicativo em Microsoft Entra ID

Essas instruções servem como orientação geral e não garantem que sejam mantidas atualizadas. Para obter instruções detalhadas sobre o registro de aplicativos, consulte este início rápido da Microsoft.

  1. Faça login no centro de administração do Microsoft Entra como, pelo menos, um desenvolvedor de aplicativos.
  2. Acesse Identity > Applications > Registros de aplicativos e crie um novo registro sem um URL de redirecionamento.
  3. Acesse Certificados & Segredos > Crie um segredo para seu aplicativo.
  4. Copie o valor secreto e armazene-o com segurança.
  5. Na página de visão geral de registros de aplicativos > do aplicativo, copie o ID do aplicativo (cliente)
  6. Navegue até Propriedades do Enterprise Applications > e copie a ID do objeto .
  7. 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 Databricks

Se o senhor, 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 atualizadas.

  • URL do emissor : https://login.microsoftonline.com/{tenentId}/v2.0, substituindo {tenentId} por sua ID Entra tenant. Se o senhor não souber o seu tenant ID, consulte a documentação doMicrosoft Entra ID.

  • Reivindicação de assunto : define o campo JWT usado para identificar o aplicativo. Valores suportados: oid, sub, groups.

  • No Entra ID, se o senhor usar o ID de objeto da entidade de serviço do aplicativo OAuth, a reivindicação de assunto será oid.

  • Assunto : Obter o ID do objeto da entidade de serviço do aplicativo registrado OAuth. Você deveria ter copiado isso na etapa anterior. Caso contrário, navegue até o centro de administração do Microsoft Entra, procure por registros de aplicativos , selecione o aplicativo OAuth registrado, navegue até Aplicativos corporativos e encontre o ID do objeto na seção de propriedades.

    Como alternativa, o senhor pode usar azp (que corresponde a clientId) como subject-claim, mas isso requer chamar a API REST diretamente. Eles não são acessíveis por meio da interface do usuário.

  • Público : Para autenticação de máquina paraDatabricks, normalmente o senhor usa o clientId do recurso, mas pode especificar qualquer outro identificador de recurso válido.

    Você deveria ter copiado isso na etapa anterior. Caso contrário, navegue até o centro de administração do Microsoft Entra, procure por registros de aplicativos , selecione o aplicativo registrado e localize o ID do aplicativo (cliente) na página Visão geral. O senhor também pode usar uma ID de recurso diferente.

Compartilhe o emissor, o assunto, a reclamação, o assunto e o público com o provedor.

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

Para configurar seu aplicativo para acessar os compartilhamentos do Delta Sharing do provedor:

  1. Acesse o URL do portal de perfil do OIDC que o provedor do Databricks compartilhou com o senhor.

    Solicite o URL se você ainda não o recebeu.

  2. Na página do portal, selecione o bloco M2M e, em For OAuth , clique em download file .

  3. Modifique o arquivo de downloads oauth_config.share JSON para adicionar seus clientID, clientSecret e scope.

    Você deveria ter copiado o ID do cliente e o segredo do cliente ao registrar seu aplicativo. Você não pode recuperar o segredo do cliente novamente. Para recuperar a ID do cliente, consulte as instruções na seção anterior.

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

    Perfil de amostra:

    JSON
    {
    "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.

    O senhor deve ter a versão mais recente do cliente Delta Sharing Python OSS.

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

  6. Teste a configuração:

    Crie um script de teste, test.py:

    Python
    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)

    execução do script:

    Python
    python3 test.py

    O script deve listar as tabelas compartilhadas.