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)
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.
- Faça login no centro de administração do Microsoft Entra como, pelo menos, um desenvolvedor de aplicativos.
- Acesse Registros de aplicativos e crie um novo registro sem um URL de redirecionamento.
- Acesse Certificados & Segredos > Crie um segredo para seu aplicativo.
- Copie o valor secreto e armazene-o com segurança.
- Na página de visão geral de registros de aplicativos > do aplicativo, copie o ID do aplicativo (cliente)
- Modifique o aplicativo para ser um aplicativo V2 atualizando o manifesto:
- Na seção gerenciar do aplicativo, selecione Manifesto .
- No editor, defina
accessTokenAcceptedVersion
como2
. - 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:- Navegue até Registros de aplicativos no centro de administração do Microsoft Entra.
- Selecione seu aplicativo OAuth registrado.
- 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 seu aplicativo para acessar os compartilhamentos do Delta Sharing do provedor:
-
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.
-
Na página do portal, selecione o bloco M2M e, em For OAuth , clique em download file .
-
Modifique o arquivo de downloads
oauth_config.share
JSON para adicionar seusclientId
,clientSecret
escope
.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 for61a80fb9-ce0c-4794-9f7f-2ba42a7b76f6
, o escopo deverá ser61a80fb9-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]"
} -
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.
Bashpython3 -m venv .venv
source .venv/bin/activate
pip3 install "delta-sharing>=1.3.1" -
Salve o arquivo
oauth_config.share
atualizado. -
Teste a configuração:
Crie um script de teste,
test.py
:Pythonimport 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:
Pythonpython3 test.py
O script deve listar as tabelas compartilhadas.