Aller au contenu principal

Lire les 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 enregistré dans leur propre fournisseur d'identité (IdP) pour établir l'accès aux partages OpenSharing créés dans Databricks.

Ce flux d'octroi des informations d'identification du client OAuth "machine à machine" (M2M) est généralement utilisé dans des scénarios où une application, telle qu'un Job nocturne exécuté sur une machine virtuelle, accède aux données de manière autonome. Ce flux d’authentification utilise la fédération OIDC. L'IdP du destinataire émet des JSON Web Tokens (JWTs) qui servent de jetons OAuth de courte durée, que Databricks authentifie. Ce flux d'authentification de partage Databricks-à-ouvert est destiné aux destinataires qui n'ont pas accès à un workspace Databricks avec Unity Catalog activé.

La fédération Open OIDC est une alternative à l'utilisation de jetons d'accès (bearer tokens) de longue durée émis par Databricks pour connecter des destinataires non Databricks aux fournisseurs. Dans le flux d'octroi des identifiants client OAuth, une application OAuth est enregistrée en tant que Service Principal (SP) dans l'IdP du destinataire. Aucun secret ou identifiant de longue durée n’est partagé entre Databricks, le fournisseur et le destinataire. Pour plus d'informations sur l'utilisation des jetons d'accès pour gérer l'authentification aux partages, consultez Créer un objet de destinataire pour les utilisateurs non-Databricks à l'aide de jetons d'accès (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 Databricks, veuillez consulter Activer la fédération Open ID Connect (OIDC) pour les destinataires OpenSharing.

Pour des informations concernant le flux « user-to-machine » (U2M), veuillez consulter Lire les données partagées à l'aide de la fédération Open ID Connect (OIDC) dans un flux U2M.

Enregistrer une application dans votre IdP

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

Enregistrer une application dans Microsoft Entra ID

Ces instructions sont données à titre indicatif et ne sont pas garanties d’être tenues à jour. Pour des instructions détaillées sur l’enregistrement des 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 minimum.
  2. Accédez à Inscriptions des applications et créez une nouvelle inscription sans URL de redirection.
  3. Allez à **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 App registrations > Overview de l'application, copiez l' ID d'application (client) .
  6. Modifier l'application pour en faire 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. Enregistrer les modifications.

Envoyez les informations requises au fournisseur de données Databricks

Si vous, en tant que destinataire, utilisez Microsoft Entra ID, vous pouvez obtenir les champs requis par le fournisseur en suivant ces instructions. Consultez toujours la documentation de 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 tenant Entra. Si vous ne connaissez pas l'ID de votre tenant, consultez la documentation de Microsoft Entra ID.

  • Revendication de sujet : Fait référence au champ dans la charge utile JWT qui identifie l'entité accédant aux données. Le champ spécifique utilisé dépend de votre fournisseur d'identité (IdP) et de vos cas d'utilisation. Par exemple, pour les applications M2M dans Microsoft Entra ID, la revendication de sujet est azp, ce qui représente l'ID client de l'application autorisée à utiliser le jeton. Pour plus de détails, consultez la référence des revendications de jeton d’accès de Microsoft Entra ID

  • Objet : fait référence à l'identifiant unique de l'application OAuth enregistrée 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’enregistrement, vous pouvez le récupérer en suivant les étapes spécifiques à votre IdP. Pour Microsoft Entra ID, suivez ces étapes :

    1. Accédez à Inscriptions d'applications dans le centre d'administration Microsoft Entra.
    2. Sélectionnez votre application OAuth enregistrée.
    3. Localisez l' ID d'application (client) sur la page Aperçu.

    Pour les autres fournisseurs d’identité, veuillez consulter leur documentation afin de récupérer l’identifiant équivalent.

  • Public visé : Pour l'authentification de machine à Databricks, vous utilisez généralement le clientId de la ressource, mais vous pouvez spécifier tout autre identifiant de ressource valide.

    Vous auriez dû copier ceci à l'étape précédente. Sinon, accédez au centre d’administration Microsoft Entra, recherchez **Inscriptions d’applications**, sélectionnez votre application inscrite, puis recherchez l’**ID d’application (client)** sur la page Vue d’ensemble. Vous pourriez aussi utiliser un ID de ressource différent.

Partagez l'émetteur, la revendication de sujet, le sujet et l'audience avec le fournisseur.

Configurez votre application pour qu'elle utilise le fichier de profil OAuth partagé par le fournisseur Databricks.

Pour configurer votre application afin d'accéder aux partages OpenSharing du fournisseur :

  1. Accédez à l'URL du portail de profil OIDC que le fournisseur Databricks vous a communiquée.

    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 **For OAuth**, cliquez sur **Download file**.

  3. Modifiez le fichier JSON oauth_config.share download pour ajouter vos clientId, clientSecret et scope.

    Vous auriez dû copier l'ID client et le secret du client lorsque vous avez enregistré votre application. Vous ne pouvez pas récupérer le secret du client de nouveau. Pour récupérer l'ID client, consultez les instructions de la section précédente.

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

    Profil d'échantillon :

    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. Installez et configurez le dernier client OpenSharing Python OSS.

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

    Bash
    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éez un script de test, 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)

    Exécuter le script :

    Python
    python3 test.py

    Le script doit lister les tables partagées.