Dela via


Använda tjänstens huvudnamn för Microsoft Entra för att autentisera åtkomst till Azure Databricks Git-mappar

Lär dig hur du konfigurerar autentiserad åtkomst till Azure Databricks Git-mappar som hanteras av Azure DevOps (Azure Repos) med microsoft entra-tjänstens huvudnamn.

Om du har Databricks Git-mappar i ditt Databricks-projekt som backas upp av Azure Repos Git-lagringsplatser och du vill hantera dem i din automatisering, kan du använda informationen i den här artikeln för att konfigurera autentiseringen med hjälp av microsoft Entra-tjänstens huvudnamn och Azure DevOps. När du har slutfört den här uppgiften har du en autentiserad Databricks Git-autentiseringsuppgift som du kan använda i din automatisering.

Varför använda Microsoft Entra och inte en PAT?

Tidigare var personliga åtkomsttoken (PAT) det bästa sättet att autentisera när du anropar ett API som kräver specifik åtkomst och behörighet till resurser. Dessa ägartoken representerade ett användarnamn och lösenord och krävde regelbunden rotation för att minimera säkerhetsrisken de uppvisade. Microsoft Entra ID-åtkomsttoken löser detta problem genom att automatiskt hantera rotationen av dessa token varje timme, och Databricks rekommenderar dem som bästa praxis när du arbetar med Azure-resurser. Genom att skapa ett Huvudnamn för Microsoft Entra-tjänsten kan du hantera de behörigheter som beviljas för åtkomst till dessa resurser utan att använda ett Microsoft Azure-användarkonto.

Krav

Du måste ha:

  • Åtkomst till ett Azure DevOps-projekt med en Azure Repos Git-lagringsplats som är ansluten till en Databricks Git-mapp.
  • Behörigheter för ditt Azure-konto för att skapa ett MS Entra-tjänsthuvudnamn.
  • Azure CLI installerat.
  • Databricks CLI installerat.

Steg 1: Skapa ett Huvudnamn för Microsoft Entra-tjänsten

Du kan hoppa över det här steget om du redan har ett konfigurerat Microsoft Entra-tjänstens huvudnamn.

Om du vill skapa ett Microsoft Entra-tjänsthuvudnamn följer du stegen i Microsoft Azure-dokumentationen: Registrera en Microsoft Entra-app och skapa ett huvudnamn för tjänsten. I avsnittet "Konfigurera autentisering" i den här artikeln ignorerar du de två första alternativen och följer stegen i "Alternativ 3: Skapa en ny klienthemlighet".

När du har konfigurerat den har du:

  • En klienthemlighet. Den visas som en lång sträng med slumpmässiga tecken.
    • Ett ID för tjänstens huvudnamn. Det här är det unika namn som du tilldelade ms Entra-tjänstens huvudnamn. Som bästa praxis bör namnet även innehålla information som anger hur och när det ska användas (till exempel Databricks_CICD_SP).

(Du kan ignorera det valfria omdirigeringsgränssnittet i ms Entra-konfigurationsdialogrutan eftersom det inte kommer att användas i den här konfigurationen.)

Kopiera ned dessa någonstans eftersom du kommer att använda dem i framtida steg. När du har slutfört processen i den här dokumentationen kan du skydda eller ta bort den här informationen.

Steg 2: Konfigurera Azure DevOps-behörigheter för MS Entra-tjänstens huvudnamn

Först måste du ge ms Entra-tjänstens huvudnamn behörighet att komma åt dina Azure DevOps-resurser. För att göra detta måste du använda Azure DevOps-portalen.

  1. Logga in på ditt Azure DevOps-konto och gå till projektet.

  2. Under Projektinställningar>Behörigheter klickar du på Läsare.

    Innehållet i panelen Medlemmar under Behörigheter i Projektinställningar för Azure DevOps

  3. Klicka på fliken Medlemmar, klicka på Lägg till och lägg sedan till namnet på MS Entra-tjänstens huvudnamn som du skapade.

  4. I -konsolen går du tillbaka till organisationsnivån för din Azure DevOps-organisation och klickar på Organisationsinställningar längst ned i det vänstra fönstret.

  5. Klicka på Användare>Lägg till användare och konfigurera åtkomst för tjänstens huvudnamn på följande sätt:

    • Lägg till tjänstens huvudnamn för MS Entra med det ID som du skapade tidigare.
    • Konfigurera åtkomsten för tjänstens huvudnamn till den lägsta nivå som krävs för att utföra åtgärder i Azure Repos. Vanligtvis räcker behörigheter på basic-nivå . Om du inte är säker på vilken nivå du ska använda kontaktar du din Administratör för Azure DevOps-organisationen.
    • Lägg till tjänstens huvudnamn i Azure DevOps-projektet.
    • Tilldela tjänstens huvudnamn till gruppen Projektdeltagare.

    Innehållet i panelen Användare i Organisationens inställningar för Azure DevOps

Steg 3: Tilldela behörigheter till tjänstens huvudnamn i Azure Databricks

Du måste också tilldela behörigheter i Azure Databricks till tjänstens huvudnamn för Microsoft Entra.

  1. Logga in på Azure Databricks-kontoadministrationskonsolen för ditt konto.
  2. Klicka på Användare och grupper.
  3. Klicka på fliken Tjänstens huvudnamn och klicka sedan på Lägg till tjänstens huvudnamn. Fliken Tjänstens huvudnamn under Användare och grupper i administratörskonsolen för Databricks-kontot
  4. På sidan Lägg till tjänstens huvudnamn klickar du på Microsoft Entra-ID som hanteras och lägger sedan till ditt Microsoft Entra-program-ID och tjänstens huvudnamn från "Steg 1: Skapa ett Huvudnamn för Microsoft Entra-tjänsten". Klicka på Lägg till när du är klar. Dialogrutan Lägg till tjänstens huvudnamn i administratörskonsolen för Databricks-kontot
  5. Klicka på det tillagda Microsoft Entra-tjänstens huvudnamn för att se fliken Huvudnamnsinformation .
  6. Klicka på Generera hemlighet längst ned till vänster på sidan för att generera en OAuth-hemlighet. Med den här hemligheten kan du autentisera Azure Databricks API-anrop med hjälp av Databricks CLI.
  7. Kopiera den hemliga strängen och klient-ID:t och klicka sedan på Klar. Du använder båda i nästa steg. Välj Klar. Dialogrutan Generera hemlighet i administratörskonsolen för Databricks-kontot
  8. I det vänstra sidofältet klickar du på Arbetsytor, väljer din arbetsyta och klickar sedan på fliken Behörigheter .
  9. Ge tjänstens huvudnamn behörigheter "Användare" och klicka sedan på Lägg till behörigheter.

Viktigt!

Om fliken Behörigheter är nedtonad tilldelas inte Azure Databricks-arbetsytan till ett Unity Catalog-metaarkiv. Kontakta Databricks-administratören.

Sedan skapar du dina Azure Databricks Git-autentiseringsuppgifter.

Steg 4: Skapa en Microsoft Entra ID-åtkomsttoken och lagra den som en Azure Databricks Git-autentiseringsuppgift.

Kommentar

Det här steget kräver användning av både Azure- och Databricks-CLIs.

Om du vill autentisera till Azure Databricks måste du ha en konfigurationsprofil (.databrickscfg) konfigurerad med OAuth-hemligheten som du skapade i föregående steg. Om du vill konfigurera den här konfigurationen öppnar du .databrickscfg filen i redigeraren och lägger till följande i filen:

[DEFAULT]
host = https://<workspace-url>.azuredatabricks.net/
client_id = <service principal ID>
client_secret = <Databricks OAuth token value>

Var host är URL:en till databricks-arbetsytan, client_id är Microsoft Entra-tjänstens huvudnamns-ID och client_secret är OAuth-klienthemligheten som du skapade i "Steg 3: Tilldela behörigheter till tjänstens huvudnamn i Azure Databricks".

Du bör nu ha följande värden att ange för CLI-anrop i den här processen:

  • Klient-ID:t för tjänstens huvudnamn från steg 1 eller 3 – de bör vara desamma. (sp_id i följande CLI-exempel.)
  • Tjänstens huvudnamn från steg 1. (sp_name)
  • Klienthemlighetssträngen för tjänstens huvudnamn från steg 1. (sp_secret)
  • Ditt Azure DevOps-organisationsnamn. (devops_org)
  • Ditt Azure DevOps-projektnamn. (devops_project)
  • Namnet på lagringsplatsen för Azure Repos. (devops_repo)

Dessutom behöver du Azure-klientorganisations-ID (tenant_id i följande exempel) för din Azure-prenumeration. Följ de här anvisningarna för att hämta den från Azure Portal.

Nu kan du skapa en Git-autentiseringsuppgift från Azure CLI.

  1. Öppna ett kommandoradsfönster med åtkomst till AZURE- och Databricks-CLIs.
  2. Kör följande Azure CLI-kommando för att logga in som Microsoft Entra-tjänstens huvudnamn: az login --allow-no-subscriptions --service-principal -u $sp_id -p $sp_secret --tenant $tenant_id
  3. Som Microsoft Entra-tjänstens huvudnamn begär du en Åtkomsttoken för Microsoft Entra-ID och tilldelar den till en variabel: ENTRA_ID_TOKEN=$(az account get-access-token --resource "499b84ac-1321-427f-aa17-267ca6975798" --query "accessToken" --output tsv)
  4. Använd åtkomsttoken för att skapa en Git-autentiseringsuppgift för Azure Databricks-åtkomst med hjälp av de behörighetsnivåer som du har konfigurerat för den: databricks git-credentials create azureDevOpsServices --personal-access-token $ENTRA_ID_TOKEN --git-username $sp_name
  5. Skapa slutligen en ny Git-mapp med tjänstens huvudnamn för Microsoft Entra: databricks repos create \https://$sp_name@dev.azure.com/$devops_org/$devops_project/_git/$devops_repo

Motsvarande Git-mapp för den här Azure DevOps-lagringsplatsen är nu tillgänglig på din Azure Databricks-arbetsyta. Du kan ange Git-autentiseringsuppgifterna för att hantera den från din kod med hjälp av REST-API:erna för Databricks Repos eller Databricks CLI.

Nu har du lärt dig hur du genererar en Microsoft Entra ID-åtkomsttoken som är begränsad till Azure DevOps och lagrar den som en Databricks Git-autentiseringsuppgift.

Bästa praxis

Åtkomsttoken för Entra-ID är kortlivad, så din pipeline måste uppdatera Databricks Git-autentiseringsuppgifterna med .git-credentials update Du kan sedan utlösa en pull-begäran från den med hjälp av databricks repos update.

Viktigt!

Ytterligare säkerhetsåtgärder krävs i en produktionsinställning. I en produktionsmiljö bör du lagra klienthemligheten för tjänstens huvudnamn och Databricks OAuth-token i ett säkert hemligt arkiv, till exempel Azure Key Vault.

Se även