Köra ett jobb med tjänstens huvudnamn för Microsoft Entra-ID
Jobb är ett icke-interaktivt sätt att köra program i ett Azure Databricks-kluster, till exempel ett ETL-jobb eller en dataanalysuppgift som ska köras enligt ett schema. De här jobben körs vanligtvis som den användare som skapade dem, men det kan ha vissa begränsningar:
- Att skapa och köra jobb är beroende av att användaren having har lämpliga behörigheter.
- Endast användaren som skapade jobbet har åtkomst till jobbet.
- Användaren kan tas bort från Azure Databricks-arbetsytan.
Att använda ett tjänstkonto – ett konto som är associerat med ett program snarare än en specifik användare – är en vanlig metod för att hantera dessa begränsningar. I Azure kan du använda ett Microsoft Entra ID-program och tjänstens huvudnamn för att skapa ett tjänstkonto.
Ett exempel på where detta är viktigt är när tjänstprincipaler kontrollerar åtkomsten till data som lagras i ett Azure Data Lake Storage Gen2-konto. Genom att köra jobb med dessa tjänsthuvudnamn kan jobben komma åt data i lagringskontot och ge kontroll över dataåtkomstomfånget.
I den här självstudien beskrivs hur du skapar ett Microsoft Entra-ID-program och tjänstens huvudnamn och gör tjänstens huvudnamn till ägare till ett jobb. Du får också lära dig hur du ger behörigheter för jobbkörningen till andra grupper som inte äger jobbet. Följande är en översikt på hög nivå över de uppgifter som den här självstudien går igenom:
- Skapa ett huvudnamn för tjänsten i Microsoft Entra-ID .
- Skapa en personlig åtkomsttoken (PAT) i Azure Databricks. Du använder PAT för att autentisera till Databricks REST API.
- Lägg till tjänstens huvudnamn som en icke-administrativ användare i Azure Databricks med hjälp av Databricks SCIM-API:et.
- Skapa ett Azure Key Vault-säkerhetskopierat hemlighetsomfång i Azure Databricks.
- Grant tjänstens huvudnamn läsbehörighet till det hemliga omfånget.
- Skapa ett jobb i Azure Databricks och konfigurera jobbklustret så att det läser hemligheter från det hemliga omfånget.
- Överföra ägarskapet för jobbet till tjänstens huvudnamn.
- Testa jobbet genom att köra det som tjänstens huvudnamn.
Om du inte har en Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
Kommentar
Du kan inte använda ett kluster med genomströmning av autentiseringsuppgifter aktiverat för att köra ett jobb som ägs av tjänstens huvudnamn. Om ditt jobb kräver ett tjänsthuvudnamn för åtkomst till Azure Storage, se Ansluta till Azure Data Lake Storage Gen2 eller Blob Storage med Azure credentials.
Krav
Du behöver följande för den här självstudien:
- Ett användarkonto med de behörigheter som krävs för att registrera ett program i din Microsoft Entra ID-klientorganisation.
- Administratörsbehörigheter på Azure Databricks-arbetsytan where som krävs när du ska köra jobb.
- Ett verktyg för att göra API-begäranden till Azure Databricks. I den här självstudien används cURL, men du kan använda alla verktyg som gör att du kan skicka REST API-begäranden.
Skapa ett huvudnamn för tjänsten i Microsoft Entra-ID
Ett huvudnamn för tjänsten är identiteten för ett Microsoft Entra-ID-program. Så här skapar du tjänstens huvudnamn som ska användas för att köra jobb:
- I Azure-portalen selectMicrosoft Entra ID > Appregistreringar > Ny registrering. Ange ett namn för programmet och klicka på Registrera.
- Gå till Certifikat & hemligheter, klicka på Ny klienthemlighetoch generate en ny klienthemlighet. Kopiera och spara hemligheten på en säker plats.
- Gå till Översikt och notera program-ID:t (klient-) och katalog-ID:t (klientorganisation).
Skapa personlig åtkomsttoken för Azure Databricks
Du använder en personlig åtkomsttoken för Azure Databricks (PAT) för att autentisera mot Databricks REST API. Så här skapar du en PAT som kan användas för att göra API-begäranden:
- Gå till din Azure Databricks-arbetsyta.
- Klicka på ditt användarnamn i det övre högra hörnet på skärmen och klicka på Inställningar.
- Klicka på Utvecklare.
- Bredvid Åtkomsttoken klickar du på Hantera.
- Klicka på Generate Ny token.
- Kopiera och spara tokenvärdet.
Dricks
I det här exemplet används en personlig åtkomsttoken, men du kan använda en Microsoft Entra-ID-token för de flesta API:er. Bästa praxis är att en PAT är lämplig för administrativa konfigurationsuppgifter, men Microsoft Entra-ID-token föredras för produktionsarbetsbelastningar.
Du kan begränsa genereringen av PAT:er till administratörer endast i säkerhetssyfte. Mer information finns i Övervaka och revoke personliga åtkomsttoken.
Lägg till tjänstens huvudnamn på Azure Databricks-arbetsytan
Du lägger till tjänstens huvudnamn för Microsoft Entra-ID till en arbetsyta med hjälp av API:et För tjänstens huvudnamn. Du måste också ge tjänstens huvudnamn behörighet att starta automatiserade jobbkluster. Du kan grant detta via behörigheten allow-cluster-create
. Öppna en terminal och använd Databricks CLI- för att köra följande kommando för att lägga till tjänstens huvudnamn och grant de behörigheter som krävs:
databricks service-principals create --json '{
"schemas":[
"urn:ietf:params:scim:schemas:core:2.0:ServicePrincipal"
],
"applicationId":"<application-id>",
"displayName": "test-sp",
"entitlements":[
{
"value":"allow-cluster-create"
}
]
}'
Ersätt <application-id>
med för registrering av Application (client) ID
Microsoft Entra-ID-program.
Skapa ett Azure Key Vault-säkerhetskopierat hemlighetsomfång i Azure Databricks
Hantera hemliga omfång ger säker lagring och hantering av hemligheter. Du lagrar hemligheten som är associerad med tjänstens huvudnamn i ett hemligt omfång. Du kan lagra hemligheter i ett hemligt Azure Databricks-omfång eller ett Azure Key Vault-säkerhetskopierat hemlighetsomfång. De här anvisningarna beskriver det Azure Key Vault-säkerhetskopierade alternativet:
- Skapa en Azure Key Vault-instans i Azure Portal.
- Skapa azure Databricks-hemlighetsomfånget som backas upp av Azure Key Vault-instansen.
Steg 1: Skapa en Azure Key Vault-instans
I Azure-portalen selectKey Vaults > + Lägg till och ge Key Vault ett namn.
Klicka på Granska och skapa.
När verifieringen är klar klickar du på Skapa .
När du har skapat Key Vault går du till sidan Egenskaper för det nya Nyckelvalvet.
Kopiera och spara valvets URI och resurs-ID.
Steg 2: Skapa ett Azure Key Vault-säkerhetskopierat hemlighetsomfång
Azure Databricks-resurser kan referera till hemligheter som lagras i ett Azure Key Vault genom att skapa ett Key Vault-säkerhetskopierat hemlighetsomfång. Så här skapar du azure Databricks-hemlighetsomfånget:
Gå till sidan Skapa hemligt omfång i Azure Databricks på
https://<per-workspace-url>/#secrets/createScope
. Ersättper-workspace-url
med den unika URL:en per arbetsyta för din Azure Databricks-arbetsyta.Ange ett omfångsnamn.
Ange Vault URI och resurs-IDvalues för Azure Key Vault som du skapade i steg 1: Skapa en Azure Key Vault-instans.
Klicka på Skapa.
Spara klienthemligheten i Azure Key Vault
I Azure Portal går du till key vaults-tjänsten.
Select den Key Vault som skapades i steg 1: Skapa en Azure Key Vault-instans.
Under Inställningar > Hemligheterklickar du på Generate/Import.
Select alternativet manuell uppladdning och ange klienthemligheten i fältet värde.
Klicka på Skapa.
Grant tjänstens huvudnamn läsbehörighet till det hemliga omfånget
Du har skapat ett hemligt omfång och lagrat tjänstens huvudnamns klienthemlighet i det omfånget. Nu ska du ge tjänstens huvudnamn åtkomst till att läsa hemligheten från det hemliga omfånget.
Öppna en terminal och använd Databricks CLI för att köra följande kommando:
databricks secrets put-acl <scope-name> <application-id> READ
- Ersätt
<scope-name>
med namnet på det hemliga Azure Databricks-omfånget som innehåller klienthemligheten. - Ersätt
<application-id>
med för registrering avApplication (client) ID
Microsoft Entra-ID-program.
Skapa ett jobb i Azure Databricks och konfigurera klustret för att läsa hemligheter från det hemliga omfånget
Nu är du redo att skapa ett jobb som kan köras som det nya tjänstens huvudnamn. Du använder en notebook-fil som skapats i Azure Databricks-användargränssnittet och lägger till konfigurationen så att jobbklustret kan hämta tjänstens huvudnamns hemlighet.
Gå till din Azure Databricks-landningssida och selectNy > Anteckningsbok. Ge anteckningsboken ett namn och selectSQL- som standardspråk.
Ange
SELECT 1
i den första cellen i anteckningsboken. Det här är ett enkelt kommando som bara visar 1 om det lyckas. Om du har beviljat tjänstens huvudnamn åtkomst till specifika filer eller sökvägar i Azure Data Lake Storage Gen 2 kan du läsa från dessa sökvägar i stället.Gå till Arbetsflöden och klicka på Skapa jobb. Ge jobbet och uppgiften ett namn, klicka på Select Notebookoch select anteckningsboken som du nyss skapade.
Klicka på Redigera bredvid klusterinformationen.
På sidan Konfigurera kluster klickar du på Avancerade alternativ.
På fliken Spark anger du följande Spark-konfiguration:
fs.azure.account.auth.type.<storage-account>.dfs.core.windows.net OAuth fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.windows.net org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.windows.net <application-id> fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.windows.net {{secrets/<secret-scope-name>/<secret-name>}} fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.windows.net https://login.microsoftonline.com/<directory-id>/oauth2/token
- Ersätt
<storage-account>
med namnet på lagringskontot som innehåller dina data. - Ersätt
<secret-scope-name>
med namnet på det hemliga Azure Databricks-omfånget som innehåller klienthemligheten. - Ersätt
<application-id>
med för registrering avApplication (client) ID
Microsoft Entra-ID-program. - Ersätt
<secret-name>
med namnet som är associerat med klienthemlighetsvärdet i det hemliga omfånget. - Ersätt
<directory-id>
med för registrering avDirectory (tenant) ID
Microsoft Entra-ID-program.
- Ersätt
Överföra ägarskapet för jobbet till tjänstens huvudnamn
Ett jobb kan ha exakt en ägare, så du måste överföra ägarskapet för jobbet från dig själv till tjänstens huvudnamn. För att säkerställa att andra användare kan hantera jobbet kan du även tilldela behörigheten grant KAN HANTERA till en grupp. I det här exemplet använder vi Behörighets-API:et för att set dessa behörigheter.
Öppna en terminal och använd Databricks CLI för att köra följande kommando:
databricks permissions set jobs <job-id> --json '{
"access_control_list": [
{
"service_principal_name": "<application-id>",
"permission_level": "IS_OWNER"
},
{
"group_name": "admins",
"permission_level": "CAN_MANAGE"
}
]
}'
- Ersätt
<job-id>
med jobbets unika identifier. Om du vill hitta jobb-ID:t klickar du på Arbetsflöden i sidofältet och klickar på jobbnamnet. Jobb-ID:t finns på sidan Jobbinformation . - Ersätt
<application-id>
med för registrering avApplication (client) ID
Microsoft Entra-ID-program.
Jobbet behöver också läsbehörighet till notebook-filen. Använd Databricks CLI för att köra följande kommando för att grant de behörigheter som krävs:
databricks permissions set notebooks <notebook-id> --json '{
"access_control_list": [
{
"service_principal_name": "<application-id>",
"permission_level": "CAN_READ"
}
]
}'
- Ersätt
<notebook-id>
med ID:t för anteckningsboken som är associerad med jobbet. Om du vill hitta ID:t går du till notebook-filen på Azure Databricks-arbetsytan och letar efter det numeriska ID som följernotebook/
i anteckningsbokens URL. - Ersätt
<application-id>
med för registrering avApplication (client) ID
Microsoft Entra-ID-program.
Testa jobbet
Du kör jobb med ett huvudnamn för tjänsten på samma sätt som du kör jobb som en användare, antingen via användargränssnittet, API:et eller CLI. Så här testar du jobbet med hjälp av Azure Databricks-användargränssnittet:
- Gå till Arbetsflöden i Azure Databricks-användargränssnittet och select jobbet.
- Klicka på Kör nu.
Du ser statusen Lyckades för jobbet om allt körs korrekt. Du kan select utföra arbetet i användargränssnittet för att verifiera resultatet.
Läs mer
Mer information om hur du skapar och kör jobb finns i Schemalägg och samordna arbetsflöden.