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 Portal 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. Mer information om hur du använder hanterade identiteter för Azure-resurser i stället för microsoft Entra ID-hanterade tjänsthuvudnamn för Azure Databricks-autentisering finns i Konfigurera och använda Azure-hanterad identitetsautentisering för Azure Databricks Automation.
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 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 hjälp av 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.
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
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 }
Skapa en fil med namnet
terraform.tfvars
i 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>>"
- Ersätt värdet
Initiera arbetskatalogen
main.tf
som innehåller filen genom attterraform init
köra kommandot . Mer information finns i Kommando: init på Terraform-webbplatsen.terraform init
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
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 du azure_client_id
och azure_client_secret
utdatavärden, eftersom du behöver dem senare.
Om du vill hämta värdet för azure_client_secret
läser du värdet för outputs.client_secret.value
i filen terraform.tfstate
, som finns i arbetskatalogen som innehåller filen main.tf
.
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.
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
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.
Skapa en fil med namnet
terraform.tfvars
i 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ärdetazure_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>"
- Ersätt värdet
Initiera arbetskatalogen
main.tf
som innehåller filen genom attterraform init
köra kommandot . Mer information finns i Kommando: init på Terraform-webbplatsen.terraform init
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
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-åtkomsttoken för ett Microsoft Entra ID-tjänsthuvudnamn
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 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 REST API:et för Microsoft-identitetsplattformen 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 förfallna Azure Databricks OAuth-token åt dig, vilket utnyttjar Autentisera åtkomst till Azure Databricks med ett tjänsthuvudnamn med OAuth (OAuth M2M).
Om du behöver skapa en Azure Databricks OAuth-token manuellt för ett Microsoft Entra ID-tjänsthuvudnamn kan du läsa generera och använda åtkomsttoken manuellt för OAuth M2M-autentisering.