Lire des données partagées à l’aide de la fédération Open ID Connect (OIDC) dans un flux M2M

Cette page décrit comment les destinataires de données peuvent utiliser un client Python inscrit dans son propre fournisseur d’identité (IdP) pour établir l’accès aux partages OpenSharing créés dans Databricks.

Ce flux d’octroi d’informations d’identification du client OAuth (M2M) « machine à machine » est généralement utilisé dans les scénarios où une application, telle qu’une tâche nocturne s’exécutant sur une machine virtuelle, accède aux données de manière autonome. Ce flux d’authentification utilise la fédération OIDC. Le fournisseur d’identité du destinataire émet des jetons web JSON (JWT) qui servent de jetons OAuth à courte durée de vie, que Databricks authentifie. Ce flux d'authentification de partage Databricks-to-open est destiné aux destinataires qui n'ont pas accès à un espace de travail Databricks compatible avec le catalogue Unity.

La fédération Open OIDC est une alternative à l'utilisation de jetons porteurs émis par Databricks à longue durée de vie pour connecter les destinataires non Databricks aux fournisseurs. Dans le flux d'octroi des informations d'identification du client OAuth, une application OAuth est enregistrée en tant que principal de service (SP) dans l'IdP du destinataire. Aucun secret ou informations d’identification de longue durée n’est partagé entre Databricks, le fournisseur et le destinataire. Pour plus d’informations sur l’utilisation de jetons Bearer pour gérer l’authentification pour les partages, consultez Créer un objet destinataire pour les utilisateurs non-Databricks à l’aide de jetons Bearer (partage Databricks vers Open).

Cette page est destinée aux destinataires. Pour plus d’informations sur la façon dont les fournisseurs peuvent activer la fédération OIDC pour les destinataires dans Azure Databricks, consultez Activer la fédération Open ID Connect (OIDC) pour les destinataires OpenSharing.

Pour plus d’informations sur le flux « user-to-machine » (U2M), consultez Lire les données partagées à l’aide de la fédération Open ID Connect (OIDC) dans un flux U2M.

Enregistrez une application dans votre IdP

Avant de pouvoir utiliser la fédération OIDC pour accorder à votre application cliente l’accès aux partages OpenSharing, vous devez inscrire une application OAuth dans votre fournisseur d’identité. Cette section explique comment inscrire une application OAuth dans Microsoft Entra ID. Pour les autres IdPs, consultez leur documentation.

Inscrire une application dans Microsoft Entra ID

Ces instructions sont conçues comme des conseils généraux et ne sont pas garanties d’être conservées up-to-date. Pour obtenir des instructions détaillées sur l’inscription d’applications, consultez ce guide de démarrage rapide Microsoft.

  1. Connectez-vous au Centre d’administration Microsoft Entra en tant que développeur d’applications au moins.
  2. Accédez aux inscriptions d’applications et créez une nouvelle inscription sans URL de redirection.
  3. Accédez à Certificats & Secrets > Créer un secret pour votre application.
  4. Copiez la valeur secrète et stockez-la en toute sécurité.
  5. Sur la page Vue d'ensemble des > Inscriptions d'applications pour l'application, copiez l'ID d'application (client)
  6. Modifiez l’application pour qu’elle soit une application V2 en mettant à jour le manifeste :
    1. Dans la section Gérer de l’application, sélectionnez Manifeste.
    2. Dans l’éditeur, définissez accessTokenAcceptedVersion sur 2.
    3. Enregistrez les modifications.

Envoyer les informations requises au fournisseur de données Azure Databricks

Si vous, en tant que destinataire, utilisez l’ID Microsoft Entra, vous pouvez obtenir les champs requis par le fournisseur en suivant ces instructions. Reportez-vous toujours à la documentation Microsoft Entra ID pour obtenir les instructions les plus récentes.

  • URL de l’émetteur: https://login.microsoftonline.com/{tenantId}/v2.0, en remplaçant {tenantId} par votre ID de locataire Entra. Si vous ne connaissez pas votre ID de locataire, consultez la documentation Microsoft Entra ID.

  • Objet de la demande : désigne le champ dans la charge utile JWT qui identifie l'entité accédant aux données. Le champ spécifique utilisé dépend de vos cas d’utilisation et de votre fournisseur d’identité. Par exemple, pour les applications M2M dans Microsoft Entra ID, la revendication d’objet est azp, qui représente l’ID client de l’application autorisée à utiliser le jeton. Pour en savoir plus, consultez la Référence des revendications de jetons d'accès Microsoft Entra ID

  • Objet : fait référence à l’identificateur unique de l’application OAuth inscrite dans le fournisseur d’identité (IDP) du destinataire.
    Par exemple, dans Microsoft Entra ID, il s’agit de l’ID d’application (client). Si vous n'avez pas copié l'ID client lors de l'inscription, vous pouvez le récupérer en suivant les étapes spécifiques à votre IdP. Pour Microsoft Entra ID, procédez comme suit :

    1. Accédez aux inscriptions d’applications dans le Centre d’administration Microsoft Entra.
    2. Sélectionnez votre application OAuth inscrite.
    3. Recherchez l’ID d’application (client) dans la page Vue d’ensemble.

    Pour les autres IdP, consultez leur documentation afin de récupérer l'identifiant équivalent.

  • Audience: pour l’authentification machine-à-Azure Databricks, vous utilisez généralement l’identifiant de la ressource clientId, mais vous pouvez spécifier tout autre identifiant de ressource valide.

    Vous auriez dû copier cela à l'étape précédente. Si ce n’est pas le cas, accédez au Centre d’administration Microsoft Entra, recherchez Enregistrements d'applications, sélectionnez votre application inscrite, puis localisez l’ID d’application (client) sur la page Vue d’ensemble. Vous pouvez également utiliser un ID de ressource différent.

Émetteur d'actions, réclamation du sujet, sujet et audience avec le fournisseur.

Configurer votre application pour utiliser le fichier de profil OAuth partagé par le fournisseur Databricks

Pour configurer votre application pour accéder aux partages OpenSharing à partir du fournisseur :

  1. Accédez à l’URL du portail de profil OIDC que le fournisseur Databricks a partagé avec vous.

    Demandez l’URL si vous ne l’avez pas encore reçue.

  2. Sur la page du portail, sélectionnez la vignette M2M et, sous Pour OAuth, cliquez sur Télécharger le fichier.

  3. Modifiez le fichier JSON oauth_config.share téléchargé pour ajouter votre clientId, clientSecretet scope.

    Vous devez avoir copié l’ID client et la clé secrète client lorsque vous avez inscrit votre application. Vous ne pouvez pas récupérer à nouveau le secret client. Pour récupérer l’ID client, consultez les instructions de la section précédente.

    Si vous choisissez d'utiliser la {clientId} de l'application comme public, la portée doit être {clientId}/.default. Par exemple, si l’audience est 61a80fb9-ce0c-4794-9f7f-2ba42a7b76f6, l’étendue doit être 61a80fb9-ce0c-4794-9f7f-2ba42a7b76f6/.default.

    Exemple de profil :

    {
      "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. Installez et configurez la dernière version d’OpenSharing Python client OSS.

    Vous devez disposer de la dernière version du client OpenSharing Python OSS.

    python3 -m venv .venv
    source .venv/bin/activate
    pip3 install "delta-sharing>=1.3.1"
    
  5. Enregistrez le fichier oauth_config.share mis à jour.

  6. Testez la configuration :

    Créer un script de test, 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)
    

    Exécutez le script :

    python3 test.py
    

    Le script doit répertorier les tables partagées.