Hämta Microsoft Entra-ID-token för tjänstens huvudnamn
Viktigt!
I det här avsnittet beskrivs hur du manuellt hämtar Microsoft Entra-ID-token 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 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:
- Azure-hanterad identitetsautentisering
- MS Entra-tjänstens huvudnamnsautentisering
- Azure CLI-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 för användare med hjälp av MSAL.
Etablera ett huvudnamn för tjänsten i Azure-portalen
Logga in på Azure-portalen.
Kommentar
Portalen som ska användas skiljer sig beroende på om ditt Microsoft Entra-ID-program körs i det offentliga Azure-molnet eller i ett nationellt eller nationellt moln. Mer information finns i Nationella moln.
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.
I Sök efter resurser, tjänster och dokument söker du efter och väljer Microsoft Entra-ID.
Klicka på + Lägg till och välj Appregistrering.
Som Namn anger du ett namn för programmet.
I avsnittet Kontotyper som stöds väljer du Endast konton i den här organisationskatalogen (enskild klient).
Klicka på Registrera.
På programsidans översiktssida i avsnittet Essentials kopierar du följande värden:
- Program-ID (klient)-ID
- Katalog-ID (klientorganisation)
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.
På fliken Klienthemligheter klickar du på Ny klienthemlighet.
I fönstret Lägg till en klienthemlighet för Beskrivning anger du en beskrivning för klienthemligheten.
För Upphör att gälla väljer du en giltighetstid för klienthemligheten och klickar sedan på Lägg till.
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 rest-API:et för Microsoft platforma za identitete
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 Microsoft platforma za identitete REST API.
Databricks rekommenderar inte att du skapar Microsoft Entra-ID-token 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.
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.Använd föregående information tillsammans med curl för att hämta Åtkomsttoken för Microsoft Entra-ID.
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 (/.default
URL-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 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:
- Azure-hanterad identitetsautentisering
- MS Entra-tjänstens huvudnamnsautentisering
- Azure CLI-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.
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.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ättadb-0000000000000000.0.azuredatabricks.net
med namnet på din arbetsyteinstans, exklusivehttps://
. I det här exemplet00000000-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öraaz 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är00000000-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>
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ärdena för parametrarnaTenant ID
för (Directory (tenant) ID
),Client ID
(Application (client) ID
) ochClient secret
(Value
) för det relaterade programmet som registrerats i Microsoft Entra-ID.az login \ --service-principal \ -t <Tenant-ID> \ -u <Client-ID> \ -p <Client-secret>
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>
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 är2ff814a6-3304-4ab8-85cb-cd0e6f879c1d
. Du kan bara visa värdet för Microsoft Entra-ID-token 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 curl
fö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 curl
av :
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.
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 Microsoft platforma za identitete REST API eller Hämta en Microsoft Entra ID-åtkomsttoken med Azure CLI. 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
curl
av :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.
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 Microsoft platforma za identitete 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. 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 somhttps%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.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.