Freigeben über


Empfangen von Delta Sharing-Freigaben mithilfe eines Python-Clients und eines Open ID Connect (OIDC)-Verbunds in einem Computer-zu-Computer-Fluss (offene Freigabe)

Diese Seite beschreibt, wie Datenempfänger einen Python-Client verwenden können, der in ihrem eigenen Identitätsanbieter (IdP) registriert ist, um den Zugriff auf Delta Sharing-Freigaben einzurichten, die in Databricks erstellt wurden. Dieser „Machine-to-Machine“ (M2M) OAuth Client Anmeldeinformationen Zuweisungsfluss wird typischerweise in Szenarien verwendet, in denen eine Anwendung, wie ein nächtlicher Auftrag, der auf einem virtuellen Computer ausgeführt wird, autonom auf Daten zugreift. Dieser Authentifizierungsfluss verwendet die OIDC-Föderation, die JSON-Web-Tokens (JWTs) ermöglicht, die vom IdP des Empfängers ausgestellt und als kurzlebige OAuth-Token verwendet werden, die von Databricks authentifiziert werden. Dieser Authentifizierungsfluss der Databricks-to-open-Freigabe richtet sich an Empfänger, die keinen Zugriff auf einen Unity Catalog-aktivierten Databricks-Arbeitsbereich haben.

Open OIDC-Federation ist eine Alternative zur Verwendung langlebiger, von Databricks ausgestellter Bearertoken, um Nicht-Databricks-Empfänger mit Anbietern zu verbinden. In der OAuth Client-Anmeldeinformationen-Zuweisung, wird eine OAuth-Anwendung als OFF2018Q3-SEPT-2.2Dienstprinzipal im IdP des Empfängers registriert. Es werden keine langlebigen Geheimnisse oder Anmeldeinformationen zwischen Databricks, dem Anbieter und dem Empfänger geteilt. Weitere Informationen zum alternativen Verwenden von Bearertoken zum Verwalten der Authentifizierung für Freigaben finden Sie unter Erstellen eines Empfängerobjekts für Nicht-Databricks-Benutzende, die Bearertoken (offene Freigabe) verwenden.

Dieser Artikel ist für Empfänger vorgesehen. Informationen dazu, wie Anbieter den OIDC-Partnerverbund für Empfänger in Azure Databricks aktivieren können, finden Sie unter Verwenden des OIDC-Verbunds (Open ID Connect), um die Authentifizierung für Delta-Freigabefreigaben (offene Freigabe) zu aktivieren. Für Informationen über den "User-to-Machine" (U2M) Flow, siehe Empfangen von Delta Sharing-Anteilen mithilfe der Open ID Connect (OIDC)-Föderation in einem User-to-Machine-Flow (offene Freigabe).

Registrieren einer App in Ihrem IdP

Bevor Sie den OIDC-Partnerverbund verwenden können, um Ihrer Clientanwendung Zugriff auf Delta-Freigabefreigaben zu gewähren, müssen Sie eine OAuth-Anwendung in Ihrem IdP registrieren. In diesem Abschnitt wird beschrieben, wie Sie eine OAuth-Anwendung in Der Microsoft Entra-ID registrieren. Für weitere IdPs lesen Sie bitte deren Dokumentation.

Registrieren Sie eine App in Microsoft Entra ID

Diese Anleitungen sind als allgemeiner Leitfaden gedacht, und es wird nicht garantiert, dass sie auf dem neuesten Stand sind. Ausführliche Anweisungen zur App-Registrierung finden Sie in dieser Microsoft-Schnellstartanleitung.

  1. Melden Sie sich mindestens als Anwendungsentwickler beim Microsoft Entra Admin Center an.
  2. Wechseln Sie zu App-Registrierungen , und erstellen Sie eine neue Registrierung ohne Umleitungs-URL.
  3. Wechseln Sie zu "Zertifikate und Geheime Schlüssel > ", um einen geheimen Schlüssel für Ihre App zu erstellen.
  4. Kopieren Sie den geheimen Wert, und speichern Sie ihn sicher.
  5. Kopieren Sie auf der Seite "App-Registrierungen > – Übersicht" für die App die Anwendungs-ID (Client-ID).
  6. Ändern Sie die App so, dass sie eine V2-Anwendung ist, indem Sie das Manifest aktualisieren:
    1. Wählen Sie im Abschnitt "Verwalten " der App "Manifest" aus.
    2. Legen Sie accessTokenAcceptedVersion im Editor auf 2.
    3. Speichern Sie die Änderungen.

Senden erforderlicher Informationen an den Azure Databricks-Datenanbieter

Wenn Sie als Empfänger die Microsoft Entra-ID verwenden, können Sie die vom Anbieter benötigten Felder abrufen, indem Sie diese Anweisungen befolgen. Die aktuellsten Anweisungen finden Sie immer in der Microsoft Entra ID-Dokumentation.

  • Aussteller-URL: https://login.microsoftonline.com/{tenantId}/v2.0, indem Sie {tenantId} durch Ihre Entra-Mandanten-ID ersetzen. Wenn Sie Ihre Mandanten-ID nicht kennen, lesen Sie die Dokumentation zur Microsoft Entra-ID.

  • Subject Claim: Verweist auf das Feld in der JWT-Nutzlast, die die Entität identifiziert, die auf die Daten zugreift. Das verwendete Feld hängt von Ihrem Identitätsanbieter (IdP) und Anwendungsfällen ab. Zum Beispiel ist bei M2M-Anwendungen in Microsoft Entra ID der "subject claim" azp, der die Client-ID der Anwendung darstellt, die zur Verwendung des Tokens berechtigt ist. Weitere Informationen finden Sie in der Referenz zu Microsoft Entra ID-Zugriffstokenansprüchen

  • Betreff: Bezieht sich auf den eindeutigen Bezeichner der registrierten OAuth-Anwendung im Identitätsanbieter des Empfängers (IdP).
    Beispielsweise ist dies in der Microsoft Entra-ID die Anwendungs-ID (Client-ID). Wenn Sie die Client-ID während der Registrierung nicht kopiert haben, können Sie sie abrufen, indem Sie die für Ihren IdP spezifischen Schritte ausführen. Führen Sie für Microsoft Entra-ID die folgenden Schritte aus:

    1. Navigieren Sie im Microsoft Entra Admin Center zu App-Registrierungen .
    2. Wählen Sie Ihre registrierte OAuth-Anwendung aus.
    3. Suchen Sie die Anwendungs-ID (Client-ID) auf der Seite "Übersicht".

    Für andere IdPs verweisen Sie auf deren Dokumentation, um den entsprechenden Bezeichner abzurufen.

  • Zielgruppe: Für die Computer-zu-Azure Databricks-Authentifizierung verwenden Sie in der Regel die Ressource clientId, aber Sie können einen anderen gültigen Ressourcenbezeichner angeben.

    Sie sollten dies im vorherigen Schritt kopiert haben. Wenn nicht, navigieren Sie zum Microsoft Entra Admin Center, suchen Sie nach App-Registrierungen, wählen Sie Ihre registrierte Anwendung aus, und suchen Sie dann die Anwendungs-ID (Client) auf der Übersichtsseite. Sie können auch eine andere Ressourcen-ID verwenden.

Teilen Sie den Aussteller, den Anspruch, den Betreff und die Zielgruppe mit dem Anbieter.

Konfigurieren Ihrer App für die Verwendung der vom Databricks-Anbieter freigegebenen OAuth-Profildatei

So konfigurieren Sie Ihre App für den Zugriff auf Delta-Freigabefreigaben vom Anbieter:

  1. Wechseln Sie zur OIDC-Profilportal-URL, die der Databricks-Anbieter für Sie freigegeben hat.

    Fordern Sie die URL an, wenn Sie sie noch nicht erhalten haben.

  2. Wählen Sie auf der Portalseite die M2M-Kachel aus, und klicken Sie unter "Für OAuth" auf "Datei herunterladen".

  3. Ändern Sie die heruntergeladene oauth_config.share JSON-Datei, um Ihre clientId, clientSecret und scope hinzuzufügen.

    Sie sollten die Client-ID und den geheimen Clientschlüssel kopiert haben, wenn Sie Ihre App registriert haben. Sie können den geheimen Clientschlüssel nicht erneut abrufen. Informationen zum Abrufen der Client-ID finden Sie in den Anweisungen im vorherigen Abschnitt.

    Wenn Sie die {clientId} der App als Zielgruppe auswählen, sollte der Bereich {clientId}/.default sein. Wenn die Zielgruppe beispielsweise lautet 61a80fb9-ce0c-4794-9f7f-2ba42a7b76f6, sollte der Bereich sein 61a80fb9-ce0c-4794-9f7f-2ba42a7b76f6/.default.

    Beispielprofil:

    {
      "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. Installieren und konfigurieren Sie den neuesten Delta Sharing Python OSS-Client.

    Sie müssen über die neueste Version des Delta Sharing Python OSS-Clients verfügen.

    python3 -m venv .venv
    source .venv/bin/activate
    pip3 install "delta-sharing>=1.3.1"
    
  5. Speichern Sie die aktualisierte oauth_config.share Datei.

  6. Testen Sie die Konfiguration:

    Erstellen eines Testskripts: 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)
    

    Ausführen des Skripts:

    python3 test.py
    

    Das Skript sollte die freigegebenen Tabellen auflisten.