Dela via


Ta emot Delta Sharing-delningsresurser med en Python-klient och Open ID Connect (OIDC)-federation i ett maskin-till-maskin-flöde (öppen delning).

Den här sidan beskriver hur datamottagare kan använda en Python-klient registrerad i sin egen identitetsleverantör (IdP) för att etablera åtkomst till Delta Sharing-delningar skapade i Databricks. Det här beviljandeflödet för "maskin-till-dator" (M2M) OAuth-klientautentiseringsuppgifter används vanligtvis i scenarier där ett program, till exempel ett nattjobb som körs på en virtuell dator, kommer åt data autonomt. Det här autentiseringsflödet använder OIDC-federation, vilket gör att JSON-webbtoken (JWT) som utfärdats av mottagarens IdP kan användas som kortlivade OAuth-token som autentiseras av Databricks. Det här autentiseringsflödet för Databricks-till-öppen delning är för mottagare som inte har åtkomst till en Unity Catalog-aktiverad Databricks-arbetsyta.

Öppen OIDC-federation är ett alternativ till att använda långlivade Databricks-utfärdade ägartoken för att ansluta icke-Databricks-mottagare till leverantörer. I flödet för klientautentiseringsuppgifter i OAuth registreras en OAuth-applikation som en tjänstehuvudman (SP) i mottagarens IdP. Inga långvariga hemligheter eller autentiseringsuppgifter delas mellan Databricks, providern och mottagaren. Information om hur du använder ägartoken för att hantera autentisering till resurser i stället finns i Skapa ett mottagarobjekt för icke-Databricks-användare som använder ägartoken (öppen delning).

Den här artikeln är avsedd för mottagare. Information om hur leverantörer kan aktivera OIDC-federation för mottagare i Azure Databricks finns i Använda OIDC-federation (Open ID Connect) för att aktivera autentisering till Delta-delningsresurser (öppen delning). För information om flödet "användare till dator" (U2M), se Ta emot deltadelningsresurser med hjälp av Open ID Connect (OIDC) federation i ett användare-till-dator-flöde (öppen delning).

Registrera en app i din IdP

Innan du kan använda OIDC-federation för att ge klientprogrammet åtkomst till Delta-delningsresurser måste du registrera ett OAuth-program i din IdP. I det här avsnittet beskrivs hur du registrerar ett OAuth-program i Microsoft Entra-ID. För andra IdP:er, se deras dokumentation.

Registrera en app i Microsoft Entra-ID

Dessa instruktioner är avsedda som allmänna riktlinjer och garanteras inte hållas up-to-date. Detaljerade anvisningar för appregistrering finns i den här Microsoft-snabbstarten.

  1. Logga in på administrationscentret för Microsoft Entra som minst programutvecklare.
  2. Gå till Appregistreringar och skapa en ny registrering utan en omdirigerings-URL.
  3. Gå till Certifikat och hemligheter > Skapa en hemlighet för din app.
  4. Kopiera det hemliga värdet och lagra det på ett säkert sätt.
  5. På sidan Översikt över appregistreringar > för appen kopierar du program-ID:t (klient)-ID:t
  6. Ändra appen till ett V2-program genom att uppdatera manifestet:
    1. I avsnittet Hantera i appen väljer du Manifest.
    2. I redigeraren anger du accessTokenAcceptedVersion till 2.
    3. Spara ändringarna.

Skicka nödvändig information till Azure Databricks-dataprovidern

Om du som mottagare använder Microsoft Entra-ID kan du hämta de fält som krävs av providern genom att följa dessa instruktioner. Se alltid Microsoft Entra ID-dokumentationen för de mest up-todatuminstruktionerna.

  • Utfärdar-URL: https://login.microsoftonline.com/{tenantId}/v2.0, ersätter {tenantId} med ditt Klient-ID för Entra. Om du inte känner till ditt klientorganisations-ID kan du läsa dokumentationen om Microsoft Entra-ID.

  • Ämnesanspråk: Refererar till fältet i JWT-nyttolasten som identifierar entiteten som kommer åt data. Det specifika fält som används beror på din identitetsprovider (IdP) och användningsfall. Till exempel, för M2M-applikationer i Microsoft Entra ID, är ämnesanspråket azp, som representerar klient-ID:t för applikationen som har behörighet att använda token. Mer information finns i anspråksreferensen för Microsoft Entra-ID-åtkomsttoken

  • Ämne: Refererar till den unika identifieraren för det registrerade OAuth-programmet i mottagarens identitetsprovider (IdP).
    I Microsoft Entra-ID är det till exempel program-ID:t (klient). Om du inte kopierade klient-ID:t under registreringen kan du hämta det genom att följa stegen som är specifika för din IdP. Följ dessa steg för Microsoft Entra-ID:

    1. Gå till Appregistreringar i administrationscentret för Microsoft Entra.
    2. Välj ditt registrerade OAuth-program.
    3. Leta upp program-ID:t (klient) på sidan Översikt.

    För andra identitetsleverantörer, hänvisa till deras dokumentation för att hitta motsvarande identifierare.

  • Målgrupp: För maskin-till-Azure Databricks-autentisering använder du vanligtvis resursens clientId, men du kan ange alla andra giltiga resursidentifierare.

    Du bör ha kopierat detta i föregående steg. Annars går du till administrationscentret för Microsoft Entra, söker efter appregistreringar, väljer ditt registrerade program och letar sedan upp program-ID:t (klient) på sidan Översikt. Du kan också använda ett annat resurs-ID.

Dela utfärdare, ämnesanspråk, ämne och målgrupp med leverantören.

Konfigurera din app så att den använder OAuth-profilfilen som delas av Databricks-providern

Så här konfigurerar du din app för åtkomst till Delta Sharing-resurser från leverantören:

  1. Gå till url:en för OIDC-profilportalen som Databricks-providern delade med dig.

    Begär URL:en om du ännu inte har tagit emot den.

  2. På portalsidan väljer du M2M-panelen och under För OAuth klickar du på Ladda ned fil.

  3. Ändra den nedladdade oauth_config.share JSON-filen för att lägga till clientId, clientSecret och scope.

    Du borde ha kopierat klient-ID:t och klienthemligheten när du registrerade appen. Du kan inte hämta klienthemligheten igen. Information om hur du hämtar klient-ID:t finns i anvisningarna i föregående avsnitt.

    Om du väljer att använda appens {clientId} som målgrupp bör omfånget vara {clientId}/.default. Om målgruppen till exempel är 61a80fb9-ce0c-4794-9f7f-2ba42a7b76f6ska omfånget vara 61a80fb9-ce0c-4794-9f7f-2ba42a7b76f6/.default.

    Exempelprofil:

    {
      "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. Installera och konfigurera den senaste Delta Sharing Python OSS-klienten.

    Du måste ha den senaste versionen av Delta Sharing Python OSS-klienten.

    python3 -m venv .venv
    source .venv/bin/activate
    pip3 install "delta-sharing>=1.3.1"
    
  5. Spara den uppdaterade oauth_config.share filen.

  6. Testa konfigurationen:

    Skapa ett testskript, 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)
    

    Kör skriptet:

    python3 test.py
    

    Skriptet bör visa en lista över delade tabeller.