Share via


Etablera ett huvudnamn för tjänsten med hjälp av Terraform

Kommentar

Information om hur du etablerar ett Microsoft Entra ID-huvudnamn för den hanterade tjänsten med hjälp av Azure-portalen och Användargränssnittet för Azure Databricks finns i Hantera tjänstens huvudnamn.

Microsoft Entra ID managed service principals skiljer sig från hanterade identiteter för Azure-resurser, som Azure Databricks också stöder för autentisering. Information om hur du använder hanterade identiteter för Azure-resurser i stället för hanterade tjänsthuvudnamn för Microsoft Entra ID för Azure Databricks-autentisering finns i Konfigurera och använda Azure-hanterad identitetsautentisering för Azure Databricks-automatisering.

Tjänstens huvudnamn är en identitet för automatiserade verktyg och system som skript, appar och CI/CD-plattformar. Databricks rekommenderar att du använder tjänstens huvudnamn och dess OAuth-token eller personliga åtkomsttoken i stället för ditt Azure Databricks-användarkonto och din personliga åtkomsttoken. Förmånerna omfattar:

  • Bevilja och begränsa åtkomst till resurser oberoende av en användare.
  • Gör det möjligt för användare att bättre skydda sina egna åtkomsttoken.
  • Inaktivera eller ta bort ett huvudnamn för tjänsten utan att påverka andra användare.
  • Ta bort en användare när de lämnar organisationen utan att påverka tjänstens huvudnamn.

Följ de här anvisningarna för att använda Terraform för att skapa ett Microsoft Entra ID-hanterat tjänstobjekt i Azure, använda Databricks Terraform-providern för att länka Tjänstens huvudnamn för Microsoft Entra-ID till din Azure Databricks-arbetsyta och sedan skapa en Microsoft Entra-ID-token eller Azure Databricks OAuth-token för tjänstens huvudnamn.

Krav

  • The Terraform CLI. Se Ladda ned Terraform.
  • Azure CLI loggade in på Microsoft Entra-målprenumerationen (tidigare Azure Active Directory) genom att köra az login kommandot . Information om hur du loggar in med hjälp av tjänstens huvudnamn för Microsoft Entra-ID finns i Azure CLI-inloggning med tjänstens huvudnamn för Microsoft Entra-ID. Information om hur du loggar in med ett Azure Databricks-användarkonto finns i Azure CLI-inloggning med ett Azure Databricks-användarkonto.

Steg 1: Skapa tjänstens huvudnamn

Om du redan har ett Microsoft Entra ID-hanterat tjänsthuvudnamn tillgängligt går du vidare till steg 2.

  1. Skapa en tom katalog i terminalen och växla sedan till den. (Varje separat uppsättning Terraform-konfigurationsfiler måste finnas i en egen katalog.) Till exempel: mkdir terraform_azure_service_principal_demo && cd terraform_azure_service_principal_demo.

    mkdir terraform_azure_service_principal_demo && cd terraform_azure_service_principal_demo
    
  2. I den här tomma katalogen skapar du en fil med namnet main.tf. Lägg till följande innehåll i den här filen och spara sedan filen.

    variable "azure_service_principal_display_name" {
      description = "A display name for the <entra-service-principal>."
      type        = string
    }
    
    terraform {
      required_providers {
        azuread = {
          source  = "hashicorp/azuread"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
    resource "azuread_application" "this" {
      display_name = var.azure_service_principal_display_name
    }
    
    resource "azuread_service_principal" "this" {
      application_id = azuread_application.this.application_id
    }
    
    resource "time_rotating" "month" {
      rotation_days = 30
    }
    
    resource "azuread_service_principal_password" "this" {
      service_principal_id = azuread_service_principal.this.object_id
      rotate_when_changed  = { rotation = time_rotating.month.id }
    }
    
    output "azure_client_id" {
      description = "The Azure AD service principal's application (client) ID."
      value       = azuread_application.this.application_id
    }
    
    output "azure_client_secret" {
      description = "The Azure AD service principal's client secret value."
      value       = azuread_service_principal_password.this.value
      sensitive   = true
    }
    
  3. Skapa en fil med namnet terraform.tfvarsi samma katalog. Lägg till följande innehåll i den här filen, ersätt följande värde och spara sedan filen:

    • Ersätt värdet azure_service_principal_display_name med ett visningsnamn för Tjänstens huvudnamn för Microsoft Entra ID.
    azure_service_principal_display_name = "<A display name for the <entra-service-principal>>"
    
  4. Initiera arbetskatalogen main.tf som innehåller filen genom att terraform init köra kommandot . Mer information finns i Kommando: init på Terraform-webbplatsen.

    terraform init
    
  5. Kontrollera om det finns några syntaxfel i konfigurationen genom att terraform validate köra kommandot . Mer information finns i Kommando: verifiera på Terraform-webbplatsen.

    terraform validate
    
  6. Använd de ändringar som krävs för att nå det önskade tillståndet för konfigurationen genom att terraform apply köra kommandot . Mer information finns i Kommando: tillämpa på Terraform-webbplatsen.

    terraform apply
    

När du har skapat tjänstens huvudnamn kopierar azure_client_id du utdatavärdena och azure_client_secret eftersom du behöver dem senare.

Om du vill hämta azure_client_secret värdet läser du värdet outputs.client_secret.value för i terraform.tfstate filen, som finns i arbetskatalogen main.tf som innehåller filen.

Steg 2: Lägg till tjänstens huvudnamn på Azure Databricks-arbetsytan

Kommentar

Följande innehåll lägger till ett huvudnamn för tjänsten på arbetsytan Azure Databricks. Om din Azure Databricks-arbetsyta är aktiverad för identitetsfederation synkroniserar följande innehåll även tjänstens huvudnamn automatiskt med det relaterade Azure Databricks-kontot.

  1. Skapa en tom katalog i terminalen och växla sedan till den. Varje separat uppsättning Terraform-konfigurationsfiler måste finnas i en egen katalog. Exempel: mkdir terraform_databricks_service_principal_demo && cd terraform_databricks_service_principal_demo.

    mkdir terraform_databricks_service_principal_demo && cd terraform_databricks_service_principal_demo
    
  2. I den här tomma katalogen skapar du en fil med namnet main.tf. Lägg till följande innehåll i den här filen och spara sedan filen.

    variable "databricks_host" {
      description = "The Azure Databricks workspace URL."
      type = string
    }
    
    variable "azure_client_id" {
      type        = string
      description = "The application (client) ID of the <entra-service-principal> to link to an Azure Databricks service principal. This application (client) ID will be the application ID of the Azure Databricks service principal."
    }
    
    variable "databricks_service_principal_display_name" {
      type        = string
      description = "A workspace display name for the Azure Databricks service principal."
    }
    
    terraform {
      required_providers {
        databricks = {
          source = "databricks/databricks"
        }
      }
    }
    
    provider "databricks" {
      host = var.databricks_host
    }
    
    resource "databricks_service_principal" "sp" {
      application_id = var.azure_client_id
      display_name   = var.databricks_service_principal_display_name
    }
    
    output "databricks_service_principal_application_id" {
      value       = databricks_service_principal.sp.application_id
      description = "Application ID of the Azure Databricks service principal."
    }
    
    output "databricks_service_principal_display_name" {
      value       = databricks_service_principal.sp.display_name
      description = "Workspace display name of the Azure Databricks service principal."
    }
    
    output "databricks_workspace_service_principal_id" {
      value       = databricks_service_principal.sp.id
      description = "Workspace ID of the Azure Databricks service principal. This ID is generated by Azure Databricks for this workspace."
    }
    

    Kommentar

    Information om hur du lägger till tjänstens huvudnamn i grupper och för att lägga till rättigheter till tjänstens huvudnamn finns i databricks_service_principal på Terraforms webbplats.

  3. Skapa en fil med namnet terraform.tfvarsi samma katalog. Lägg till följande innehåll i den här filen, ersätt följande värden och spara sedan filen:

    • Ersätt värdet databricks_host med URL:en för Azure Databricks-arbetsytan.
    • Ersätt värdet azure_client_id med värdet azure_client_id från steg 1.
    • Ersätt värdet databricks_service_principal_display_name med ett visningsnamn för arbetsytan för Azure Databricks-tjänstens huvudnamn.
    databricks_host                           = "<The Azure Databricks workspace URL, starting with https://>"
    azure_client_id                           = "<The Azure client ID of the Azure Active AD service principal>"
    databricks_service_principal_display_name = "<A workspace display name for the Azure Databricks service principal>"
    
  4. Initiera arbetskatalogen main.tf som innehåller filen genom att terraform init köra kommandot . Mer information finns i Kommando: init på Terraform-webbplatsen.

    terraform init
    
  5. Kontrollera om det finns några syntaxfel i konfigurationen genom att terraform validate köra kommandot . Mer information finns i Kommando: verifiera på Terraform-webbplatsen.

    terraform validate
    
  6. Använd de ändringar som krävs för att nå det önskade tillståndet för konfigurationen genom att terraform apply köra kommandot . Mer information finns i Kommando: tillämpa på Terraform-webbplatsen.

    terraform apply
    

När du har skapat tjänstens huvudnamn kopierar databricks_service_principal_application_id du utdatavärdet eftersom du behöver det för att skapa en Microsoft Entra-ID-token för tjänstens huvudnamn.

(Valfritt) Steg 3: Skapa en Microsoft Entra-ID (tidigare Azure Active Directory) åtkomsttoken för ett Microsoft Entra ID-tjänsthuvudnamn

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 behöver skapa en Microsoft Entra-ID-token manuellt för ett Microsoft Entra ID-tjänsthuvudnamn samlar du in följande information och följer sedan anvisningarna i Hämta en Microsoft Entra ID-åtkomsttoken med Microsofts identitetsplattform REST API eller Hämta en Microsoft Entra-ID-åtkomsttoken med Azure CLI:

  • Klientorganisations-ID:t för ditt Microsoft Entra ID-tjänsthuvudnamn, som du ska använda som klientorganisations-ID/ katalog-ID / <tenant-id> (klientorganisation) i anvisningarna. Information om hur du hämtar klient-ID :t finns i Etablera ett huvudnamn för tjänsten i Azure-portalen.
  • Värdet databricks_service_principal_application_id från steg 2, som du ska använda som klient-ID/ program-ID (klient)-ID / <client-id> i anvisningarna.
  • Värdet azure_client_secret från steg 1, som du ska använda som klienthemlighet/ värde / <client-secret> i anvisningarna.

När du har skapat Microsoft Entra-ID-token kopierar access_token du värdet, eftersom du måste ange det till ditt skript, din app eller ditt system.

(Valfritt) Steg 4: Skapa en Azure Databricks OAuth-token för ett Microsoft Entra ID-tjänsthuvudnamn

Databricks rekommenderar inte att du skapar Azure Databricks OAuth-token för Microsoft Entra ID-hanterade tjänsthuvudnamn manuellt. Det beror på att varje Azure Databricks OAuth-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 Azure Databricks OAuth. 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 automatiskt utgångna Azure Databricks OAuth-token åt dig, med hjälp av M2M-autentisering (machine-to-machine).

Om du behöver skapa en Azure Databricks OAuth-token manuellt för ett Microsoft Entra ID-tjänsthuvudnamn kan du läsa Manuellt generera och använda åtkomsttoken för OAuth-M2M-autentisering (machine-to-machine).