Hämta Microsoft Entra ID-token (tidigare Azure Active Directory) för tjänstens huvudnamn

Viktigt!

I det här avsnittet beskrivs hur du manuellt hämtar Microsoft Entra-ID-token (tidigare Azure Active Directory) för tjänstens huvudnamn.

Azure Databricks-hanterade tjänstens huvudnamn hanteras direkt i Azure Databricks. Microsoft Entra ID managed service principals hanteras i Microsoft Entra-ID, vilket kräver ytterligare behörigheter. Databricks rekommenderar att du använder Azure Databricks-tjänstens huvudnamn för de flesta användningsfall. Databricks rekommenderar dock att du använder Microsoft Entra ID managed service principals i fall där du måste autentisera med Azure Databricks och andra Azure-resurser samtidigt.

Information om hur du skapar ett huvudnamn för en hanterad Azure Databricks-tjänst i stället för ett hanterat Microsoft Entra-ID-huvudnamn finns i Hantera tjänstens huvudnamn.

Databricks rekommenderar inte att du skapar Microsoft Entra-ID-token (tidigare Azure Active Directory) för Microsoft Entra ID-tjänstens huvudnamn manuellt. Detta beror på att varje Microsoft Entra-ID-token är kortlivad och vanligtvis upphör att gälla inom en timme. Efter den här tiden måste du manuellt generera en ersättningstoken för Microsoft Entra-ID. Använd i stället något av de deltagande verktygen eller SDK:erna som implementerar Databricks-klientens enhetliga autentiseringsstandard . Dessa verktyg och SDK:er genererar och ersätter förfallna Microsoft Entra-ID-token åt dig, med hjälp av följande Typer av Databricks-autentisering:

Om du inte har ett huvudnamn för tjänsten kan du etablera ett genom att följa någon av dessa instruktioner:

Den här artikeln beskriver hur ett huvudnamn för tjänsten som definieras i Microsoft Entra-ID också kan fungera som ett huvudnamn för vilka autentiserings- och auktoriseringsprinciper kan tillämpas i Azure Databricks. Tjänsthuvud namn på en Azure Databricks-arbetsyta kan ha annan detaljerad åtkomstkontroll än vanliga användare (användarens huvudnamn).

Ett huvudnamn för tjänsten fungerar som en klientroll och använder OAuth 2.0-klientens autentiseringsuppgifter för att auktorisera åtkomst till Azure Databricks-resurser.

Du kan hantera tjänstens huvudnamn i Databricks eller med hjälp av följande procedur från Azure-portalen.

Du kan också använda Microsoft Authentication Library (MSAL) för att programmatiskt hämta en Microsoft Entra ID-åtkomsttoken för en användare i stället för tjänstens huvudnamn. Se Hämta Microsoft Entra-ID-token (tidigare Azure Active Directory) för användare med hjälp av MSAL.

Etablera ett huvudnamn för tjänsten i Azure-portalen

  1. Logga in på Azure-portalen.

    Kommentar

    Portalen som ska användas skiljer sig beroende på om ditt Microsoft Entra-ID (tidigare Azure Active Directory) körs i det offentliga Azure-molnet eller i ett nationellt eller nationellt moln. Mer information finns i Nationella moln.

  2. Om du har åtkomst till flera klienter, prenumerationer eller kataloger klickar du på ikonen Kataloger + prenumerationer (katalog med filter) på den översta menyn för att växla till den katalog där du vill etablera tjänstens huvudnamn.

  3. I Sök efter resurser, tjänster och dokument söker du efter och väljer Microsoft Entra-ID.

  4. Klicka på + Lägg till och välj Appregistrering.

  5. Som Namn anger du ett namn för programmet.

  6. I avsnittet Kontotyper som stöds väljer du Endast konton i den här organisationskatalogen (enskild klient).

  7. Klicka på Registrera.

  8. På programsidans översiktssida i avsnittet Essentials kopierar du följande värden:

    • Program-ID (klient)-ID
    • Katalog-ID (klientorganisation)

    Azure registered app overview

  9. Om du vill generera en klienthemlighet klickar du på Certifikat och hemligheter i Hantera.

    Kommentar

    Du använder den här klienthemligheten för att generera Microsoft Entra-ID-token för autentisering av Tjänstens huvudnamn för Microsoft Entra med Azure Databricks. Information om huruvida ett Azure Databricks-verktyg eller SDK kan använda Microsoft Entra-ID-token finns i verktygets eller SDK:s dokumentation.

  10. På fliken Klienthemligheter klickar du på Ny klienthemlighet.

    New client secret

  11. I fönstret Lägg till en klienthemlighet för Beskrivning anger du en beskrivning för klienthemligheten.

  12. För Upphör att gälla väljer du en giltighetstid för klienthemligheten och klickar sedan på Lägg till.

  13. Kopiera och lagra klienthemlighetens värde på en säker plats, eftersom den här klienthemligheten är lösenordet för ditt program.

Etablera ett huvudnamn för tjänsten med Azure CLI

Se Skapa ett Microsoft Entra-ID (tidigare Azure Active Directory)-tjänstens huvudnamn med Azure CLI.

Hämta en Microsoft Entra ID-åtkomsttoken med Microsofts identitetsplattform REST API

Viktigt!

I det här avsnittet beskrivs hur du manuellt hämtar en Microsoft Entra-ID-token för ett tjänsthuvudnamn med hjälp av Microsofts identitetsplattform REST API.

Databricks rekommenderar inte att du skapar Microsoft Entra-ID-token (tidigare Azure Active Directory) för Microsoft Entra ID-tjänstens huvudnamn manuellt. Detta beror på att varje Microsoft Entra-ID-token är kortlivad och vanligtvis upphör att gälla inom en timme. Efter den här tiden måste du manuellt generera en ersättningstoken för Microsoft Entra-ID. Använd i stället något av de deltagande verktygen eller SDK:erna som implementerar Databricks-klientens enhetliga autentiseringsstandard . Dessa verktyg och SDK:er genererar och ersätter förfallna Microsoft Entra-ID-token åt dig, med hjälp av följande Typer av Databricks-autentisering:

För att få åtkomst till Databricks REST API med tjänstens huvudnamn får du och använder sedan en Microsoft Entra ID-åtkomsttoken för tjänstens huvudnamn. Mer information finns i Första fallet: Begäran om åtkomsttoken med en delad hemlighet.

Dricks

Du kan också använda Azure CLI för att hämta Åtkomsttoken för Microsoft Entra-ID. Se Hämta en Åtkomsttoken för Microsoft Entra-ID med Azure CLI.

  1. Samla in följande information:

    Parameter Description
    Tenant ID Directory (tenant) ID För det relaterade programmet som registrerats i Microsoft Entra-ID.
    Client ID Application (client) ID För det relaterade programmet som registrerats i Microsoft Entra-ID.
    Client secret Klienthemligheten Value för det relaterade programmet som registrerats i Microsoft Entra-ID.
  2. Använd föregående information tillsammans med curl för att hämta åtkomsttoken för Microsoft Entra-ID (tidigare Azure Active Directory).

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token \
    -d 'client_id=<client-id>' \
    -d 'grant_type=client_credentials' \
    -d 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default' \
    -d 'client_secret=<client-secret>'
    

    Ersätta:

    • <tenant-id> med det registrerade programmets klientorganisations-ID.
    • <client-id> med det registrerade programmets klient-ID.
    • <client-secret> med det registrerade programmets klienthemlighetsvärde.

    Ändra inte värdet för parametern scope . Den representerar programmatiskt ID för Azure Databricks (2ff814a6-3304-4ab8-85cb-cd0e6f879c1d) tillsammans med standardomfånget (/.defaultURL-kodad som %2f.default).

    Till exempel:

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/a1bc2d34-5e67-8f89-01ab-c2345d6c78de/oauth2/v2.0/token \
    -d 'client_id=12a34b56-789c-0d12-e3fa-b456789c0123' \
    -d 'grant_type=client_credentials' \
    -d 'scope=2ff814a6-3304-4ab8-85cb-cd0e6f879c1d%2F.default' \
    -d 'client_secret=abc1D~Ef...2ghIJKlM3'
    

    Microsoft Entra ID-åtkomsttoken finns i värdet i access_token anropets utdata.

Hämta en Microsoft Entra ID-åtkomsttoken med Azure CLI

Viktigt!

I det här avsnittet beskrivs hur du manuellt hämtar en Microsoft Entra-ID-token för ett tjänsthuvudnamn med hjälp av Azure CLI.

Databricks rekommenderar inte att du skapar Microsoft Entra-ID-token (tidigare Azure Active Directory) för Microsoft Entra ID-tjänstens huvudnamn manuellt. Detta beror på att varje Microsoft Entra-ID-token är kortlivad och vanligtvis upphör att gälla inom en timme. Efter den här tiden måste du manuellt generera en ersättningstoken för Microsoft Entra-ID. Använd i stället något av de deltagande verktygen eller SDK:erna som implementerar Databricks-klientens enhetliga autentiseringsstandard . Dessa verktyg och SDK:er genererar och ersätter förfallna Microsoft Entra-ID-token åt dig, med hjälp av följande Typer av Databricks-autentisering:

För att få åtkomst till Databricks REST API med tjänstens huvudnamn får du och använder sedan en Microsoft Entra ID-åtkomsttoken för tjänstens huvudnamn.

  1. Samla in följande information:

    Parameter Description
    Tenant ID Directory (tenant) ID För det relaterade programmet som registrerats i Microsoft Entra-ID.
    Client ID Application (client) ID För det relaterade programmet som registrerats i Microsoft Entra-ID.
    Client secret Klienthemligheten Value för det relaterade programmet som registrerats i Microsoft Entra-ID.
  2. Hämta rätt Azure-prenumerations-ID för tjänstens huvudnamn för Microsoft Entra-ID om du inte redan känner till det här ID:t genom att göra något av följande:

    • I azure Databricks-arbetsytans övre navigeringsfält klickar du på ditt användarnamn och klickar sedan på Azure-portalen. På resurssidan för Azure Databricks-arbetsytan som visas klickar du på Översikt i sidofältet. Leta sedan efter fältet Prenumerations-ID, som innehåller prenumerations-ID:t.

    • Använd Azure CLI för att köra kommandot az databricks workspace list med hjälp av --query alternativen och -o för --output att begränsa resultatet. Ersätt adb-0000000000000000.0.azuredatabricks.net med namnet på din arbetsyteinstans, exklusive https://. I det här exemplet 00000000-0000-0000-0000-000000000000 är efter /subscriptions/ i utdata prenumerations-ID:t.

      az databricks workspace list --query "[?workspaceUrl==\`adb-0000000000000000.0.azuredatabricks.net\`].{id:id}" -o tsv
      
      # /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-rg/providers/Microsoft.Databricks/workspaces/my-ws
      

      Om följande meddelande visas är du inloggad på fel klientorganisation: The subscription of '<subscription-id>' doesn't exist in cloud 'AzureCloud'. Om du vill logga in på rätt klientorganisation måste du köra az login kommandot igen med hjälp av -t alternativet eller --tenant för att ange rätt klientorganisations-ID.

      Du kan hämta klientorganisations-ID:t för en Azure Databricks-arbetsyta genom att köra kommandot curl -v <per-workspace-URL>/aad/auth och titta i utdata < location: https://login.microsoftonline.com/00000000-0000-0000-0000-000000000000, där 00000000-0000-0000-0000-000000000000 är klientorganisations-ID:t. Se även Hämta prenumerations- och klient-ID:t i Azure-portalen.

      az login -t <tenant-id>
      
  3. När du har rätt Azure-klient-ID, klient-ID, klienthemlighet och prenumerations-ID för tjänstens huvudnamn för Microsoft Entra loggar du in på Azure med hjälp av Azure CLI för att köra kommandot az login . Använd alternativet --service-principal tillsammans med att ange värden för parametrarna Tenant ID för (Directory (tenant) ID), Client ID (Application (client) ID) och Client secret (Value) för det relaterade programmet som registrerats i Microsoft Entra-ID (tidigare Azure Active Directory).

    az login \
    --service-principal \
    -t <Tenant-ID> \
    -u <Client-ID> \
    -p <Client-secret>
    
  4. Bekräfta att du är inloggad på rätt prenumeration för ditt inloggade Microsoft Entra ID-tjänsthuvudnamn. Det gör du genom att köra kommandot az account set med hjälp av -s alternativet eller --subscription för att ange rätt prenumerations-ID.

    az account set -s <subscription-id>
    
  5. Generera Microsoft Entra ID-åtkomsttoken för det inloggade Microsoft Entra ID-tjänstens huvudnamn genom att köra kommandot az account get-access-token . Använd alternativet --resource för att ange det unika resurs-ID:t för Azure Databricks-tjänsten, som är 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d. Du kan bara visa värdet för Microsoft Entra-ID:t (tidigare Azure Active Directory) i kommandots utdata med hjälp --query av alternativen och-o.--output

    az account get-access-token \
    --resource 2ff814a6-3304-4ab8-85cb-cd0e6f879c1d \
    --query "accessToken" \
    -o tsv
    

Använda tjänstens huvudnamns Microsoft Entra ID-åtkomsttoken för att komma åt Databricks REST API

Viktigt!

I det här avsnittet beskrivs hur du använder curl och ett tjänsthuvudnamns Microsoft Entra ID-åtkomsttoken för åtkomst till Databricks REST API.

I stället curlför kan du använda ett av de deltagande verktygen eller SDK:erna som implementerar databricks-klientens enhetliga autentiseringsstandard . Dessa verktyg och SDK:er genererar och ersätter också förfallna Microsoft Entra-ID-token åt dig, med hjälp av följande autentiseringstyper för Databricks:

Ett huvudnamn för tjänsten som är en Databricks-användare kan autentisera till Databricks REST API med Microsoft Entra-ID-token.

Ett huvudnamn för tjänsten kan också lägga till sig själv som arbetsyteadministratör till en arbetsyta om det har rollen Deltagare eller Ägare på målarbetsytans resurs i Azure. Om tjänstens huvudnamn är deltagare eller ägare på målarbetsytan och du vill lägga till det i en arbetsyta med hjälp av dess Microsoft Entra-ID-token går du till API-åtkomst på arbetsyta för tjänsthuvudnamn som inte är Azure Databricks-användare.

Annars fortsätter du till API-åtkomst för tjänstens huvudnamn som är Azure Databricks-användare och administratörer.

API-åtkomst för tjänsthuvudnamn som är Azure Databricks-användare och administratörer

För att slutföra den här proceduren måste du först lägga till tjänstens huvudnamn till Azure Databricks-kontot eller arbetsytan. Du kan lägga till tjänstens huvudnamn direkt till ditt konto, utan att bevilja åtkomst till arbetsytan, med hjälp av SCIM-API:et (konto).

Du kan lägga till tjänstens huvudnamn på en arbetsyta med hjälp av API-slutpunkten för tjänstens huvudnamn. Detta lägger också till tjänstens huvudnamn till ditt Azure Databricks-konto. Till exempel:

Genom att använda Databricks CLI version 0.205 eller senare (rekommenderas):

Lägg till tjänstens huvudnamn:

databricks service-principals create --application-id 12a34b56-789c-0d12-e3fa-b456789c0123 --display-name "My Service Principal" -p <profile-name-that-references-calling-users-access-token>

Uppdatera tjänstens huvudnamns behörigheter för arbetsytan:

databricks service-principals patch 1234567890123456 --json @update-service-principal.json -p <profile-name-that-references-access-token>

update-service-principal.json:

{
  "Operations": [
    {
      "op": "add",
      "path": "entitlements",
      "value": {
        "value": "workspace-acccess",
        "value": "allow-cluster-create",
        "value": "databricks-sql-access"
      }
    }
  ],
  "schema": [
    "urn:ietf:params:scim:api:messages:2.0:PatchOp"
  ]
}

Se Autentisering för Databricks CLI.

Med hjälp curlav :

curl -X POST \
-H 'Authorization: Bearer <access-token>' \
https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/preview/scim/v2/ServicePrincipals \
-H 'Content-type: application/scim+json' \
-d @create-service-principal.json

create-service-principal.json:

{
  "displayName": "My Service Principal",
  "applicationId": "12a34b56-789c-0d12-e3fa-b456789c0123",
  "entitlements": [
    {
      "value": "allow-cluster-create"
    }
  ],
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:ServicePrincipal"
  ],
  "active": true
}

Gå vidare till API-åtkomst på arbetsytenivå för tjänsthuvudnamn som inte är Azure Databricks-användare om något av följande är sant:

  • Azure Databricks REST API som du vill anropa kräver administratörsåtkomst för arbetsytan och tjänstens huvudnamn är medlem i arbetsytan, men har för närvarande inte administratörsåtkomst till arbetsytan.
  • Tjänstens huvudnamn har inte redan lagts till på Azure Databricks-målarbetsytan.
  1. Samla in följande information.

    Parameter Description
    Åtkomsttoken för Microsoft Entra-ID Åtkomsttoken för Microsoft Entra-ID som returneras från begäran i Hämta en Microsoft Entra-ID-åtkomsttoken med Microsofts identitetsplattform REST API eller Hämta en Microsoft Entra ID-åtkomsttoken med Azure CLI.
  2. Använd Åtkomsttoken för Microsoft Entra-ID tillsammans med curl för att anropa Databricks REST API. Till exempel:

    Genom att använda Databricks CLI version 0.205 eller senare (rekommenderas):

    databricks clusters list -p <profile-name-that-references-azure-ad-access-token>
    

    Se Autentisering för Databricks CLI.

    Med hjälp curlav :

    curl -X GET \
    -H 'Authorization: Bearer <access-token>' \
    https://<databricks-instance>/api/2.0/clusters/list
    

    Ersätta:

    • <access-token> med Microsoft Entra ID-åtkomsttoken.
    • <databricks-instance>med URL:en per arbetsyta för din Azure Databricks-distribution.
    • GET och /api/2.0/clusters/list med lämplig HTTP-åtgärd och slutpunkt för mål-Databricks REST API.

    Till exempel:

    curl -X GET \
    -H 'Authorization: Bearer <access-token>' \
    https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/list
    

API-åtkomst på arbetsyta för tjänsthuvudnamn som inte är Azure Databricks-användare

Följ den här proceduren om något av följande är sant:

  • Azure Databricks REST API som du vill anropa kräver administratörsåtkomst för arbetsytan och tjänstens huvudnamn är medlem i arbetsytan, men har för närvarande inte administratörsåtkomst till arbetsytan.
  • Tjänstens huvudnamn har inte redan lagts till på Azure Databricks-målarbetsytan.

Krav:

  • Tjänstens huvudnamn kräver rollen Deltagare eller Ägare på målarbetsytans resurs i Azure.
  1. Samla in följande information:

    Parameter Description
    Klientorganisations-ID Katalog-ID :t (klientorganisation) för det relaterade programmet som registrerats i Microsoft Entra-ID i Etablera ett huvudnamn för tjänsten i Azure-portalen.
    Client ID Program-ID :t (klient) för det relaterade programmet som registrerats i Microsoft Entra-ID.
    Klienthemlighet Värdet för klienthemligheten för det relaterade programmet som registrerats i Microsoft Entra-ID, som du skapade i Etablera ett huvudnamn för tjänsten i Azure-portalen.
    Åtkomsttoken för Microsoft Entra-ID Åtkomsttoken för Microsoft Entra-ID som returneras från begäran i Hämta en Microsoft Entra-ID-åtkomsttoken med Microsofts identitetsplattform REST API eller Hämta en Microsoft Entra ID-åtkomsttoken med Azure CLI.
    Prenumerations-ID:t ID:t (inte namnet) för Azure-prenumerationen som är associerad med Azure Databricks-målarbetsytan. Information om hur du kommer åt detta och följande information finns i Öppna resurser. Om du vill öppna målresursen kan du söka efter Azure Databricks-tjänsttypen och annan information i Azure som du känner till om Azure Databricks-målarbetsytan.
    Namn på resursgrupp Namnet på den Azure-resursgrupp som är associerad med Azure Databricks-målarbetsytan.
    Namn på arbetsyta Namnet på Azure-målarbetsytan i Azure Databricks.
  2. Använd en del av föregående information tillsammans med curl för att hämta en åtkomsttoken för Microsoft Entra-ID-hanteringsslutpunkt.

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/<tenant-id>/oauth2/token \
    -d 'client_id=<client-id>' \
    -d 'grant_type=client_credentials' \
    -d 'resource=https%3A%2F%2Fmanagement.core.windows.net%2F' \
    -d 'client_secret=<client-secret>'
    

    Ersätta:

    • <tenant-id> med det registrerade programmets klientorganisations-ID.
    • <client-id> med det registrerade programmets klient-ID.
    • <client-secret> med det registrerade programmets klienthemlighetsvärde.

    Ändra inte värdet för parametern resource . Den representerar Microsoft Entra ID-hanteringsslutpunkten (https://management.core.windows.net/URL-kodad som https%3A%2F%2Fmanagement.core.windows.net%2F).

    Till exempel:

    curl -X POST -H 'Content-Type: application/x-www-form-urlencoded' \
    https://login.microsoftonline.com/a1bc2d34-5e67-8f89-01ab-c2345d6c78de/oauth2/token \
    -d 'client_id=12a34b56-789c-0d12-e3fa-b456789c0123' \
    -d 'grant_type=client_credentials' \
    -d 'resource=https%3A%2F%2Fmanagement.core.windows.net%2F' \
    -d 'client_secret=abc1D~Ef...2ghIJKlM3'
    

    Åtkomsttoken för Microsoft Entra ID-hanteringsslutpunkt finns i access_token värdet i anropets utdata.

  3. Använd åtkomsttoken för Microsoft Entra ID-hanteringsslutpunkt tillsammans med resten av föregående information och curl anropa Databricks REST API, till exempel:

     curl -X GET \
     -H 'Authorization: Bearer <access-token>' \
     -H 'X-Databricks-Azure-SP-Management-Token: <management-access-token>' \
     -H 'X-Databricks-Azure-Workspace-Resource-Id: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Databricks/workspaces/<workspace-name>' \
     https://<databricks-instance>/api/2.0/clusters/list
    

    Ersätta:

    • <access-token> med Microsoft Entra ID-åtkomsttoken.

      • <management-access-token> med åtkomsttoken för Microsoft Entra ID-hanteringsslutpunkt.
      • <subscription-id> med ID:t för prenumerationen som är associerad med Azure Databricks-målarbetsytan.
      • <resource-group-name> med namnet på resursgruppen som är associerad med Azure Databricks-målarbetsytan.
      • <workspace-name> med namnet på Azure Databricks-målarbetsytan.
      • <databricks-instance>med URL:en per arbetsyta för din Azure Databricks-distribution.
      • GET och /api/2.0/clusters/list med lämplig HTTP-åtgärd och slutpunkt för mål-Databricks REST API.

      Till exempel:

      curl -X GET \
      -H 'Authorization:Bearer <access-token>' \
      -H 'X-Databricks-Azure-SP-Management-Token: abC1dE...ghIj23kl' \
      -H 'X-Databricks-Azure-Workspace-Resource-Id: /subscriptions/12a345...bcd6789e/resourceGroups/my-resource-group/providers/Microsoft.Databricks/workspaces/my-workspace' \
      https://adb-1234567890123456.7.azuredatabricks.net/api/2.0/clusters/list
      

    När du autentiserar till arbetsytan blir tjänstens huvudnamn administratör för Azure Databricks-arbetsytan och behöver inte längre rollen Deltagare eller Ägare för att få åtkomst till arbetsytan.