Pular para o conteúdo principal

Leia os dados compartilhados usando a federação Open ID Connect (OIDC) em um fluxo M2M.

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 OpenSharing criados no Databricks. Este fluxo de concessão de credenciais de cliente OAuth "máquina para máquina" (M2M) é comumente utilizado em cenários onde um aplicativo, como um Job noturno executado em uma máquina virtual, acessa dados de forma autônoma. Este fluxo de autenticação usa federação OIDC, permitindo que JSON Web Tokens (JWTs) emitidos pelo IdP do destinatário sejam usados como tokens OAuth de curta duração que são autenticados pela Databricks. Este fluxo de autenticação Databricks-para-compartilhamento aberto é para destinatários que não têm acesso a um workspace do Databricks habilitado para Unity Catalog.

A federação OIDC aberta é uma alternativa ao uso de tokens de portador de longa duração emitidos pelo Databricks para conectar destinatários externos ao Databricks a provedores. No fluxo de concessão de credenciais de cliente OAuth, um aplicativo OAuth é registrado como uma entidade de serviço (SP) no IdP do destinatário. Não são compartilhados segredos ou credenciais de longa duração entre o Databricks, o provedor e o destinatário. Para obter informações sobre o uso de tokens de acesso para gerenciar a autenticação para compartilhamentos, em vez disso, consulte Criar um objeto de destinatário para usuários que não são do Databricks usando tokens de acesso (Compartilhamento Databricks para Open).

Este artigo é destinado a destinatários. Para obter informações sobre como os provedores podem habilitar a federação OIDC para destinatários no Databricks, consulte Habilitar federação Open ID Connect (OIDC) para destinatários do OpenSharing. Para obter informações sobre o fluxo "usuário para máquina" (U2M), consulte Ler dados compartilhados usando federação Open ID Connect (OIDC) em um fluxo U2M.

registrar um aplicativo em seu IdP

Para que se possa usar a federação OIDC para conceder acesso de seu aplicativo cliente a compartilhamentos do OpenSharing, deve-se registrar um aplicativo OAuth em seu IdP. Esta seção descreve como registrar uma aplicação OAuth no 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 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. 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/{tenantId}/v2.0, substituindo {tenantId} 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 : refere-se ao campo na carga útil do JWT que identifica a entidade que está acessando os dados. O campo específico usado depende do seu provedor de identidade (IdP) e dos casos de uso. Por exemplo, para aplicativos M2M em Microsoft Entra ID, a reivindicação do assunto é azp, que representa o ID do cliente do aplicativo autorizado a usar os tokens. Para obter mais detalhes, consulte a Microsoft referência de reivindicações de tokens Entra ID Access em

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

    1. Navegue até Registros de aplicativos 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.

  • 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 o aplicativo para acessar compartilhamentos do OpenSharing 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 OpenSharing Python OSS mais recente.

    É preciso ter a versão mais recente do cliente OSS Python do OpenSharing.

    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.