Delen via


Een service-principal inrichten met behulp van Terraform

Notitie

Als u een door Microsoft Entra ID beheerde service-principal wilt inrichten met behulp van Azure Portal en de gebruikersinterface van Azure Databricks, raadpleegt u Service-principals beheren.

Beheerde service-principals van Microsoft Entra ID verschillen van beheerde identiteiten voor Azure-resources, die azure Databricks ook ondersteunt voor verificatie. Voor meer informatie over het gebruik van beheerde identiteiten voor Azure-resources in plaats van door Microsoft Entra ID beheerde service-principals voor Azure Databricks-verificatie, raadpleegt u Verificatie van door Azure beheerde identiteiten instellen en gebruiken voor Azure Databricks-automatisering.

Een service-principal is een identiteit voor geautomatiseerde hulpprogramma's en systemen, zoals scripts, apps en CI/CD-platforms. Databricks raadt u aan een service-principal en het bijbehorende OAuth-token of persoonlijk toegangstoken te gebruiken in plaats van uw Azure Databricks-gebruikersaccount en persoonlijk toegangstoken. Voordelen zijn onder meer:

  • De toegang tot resources onafhankelijk van een gebruiker verlenen en beperken.
  • Gebruikers in staat stellen hun eigen toegangstokens beter te beveiligen.
  • Een service-principal uitschakelen of verwijderen zonder dat dit van invloed is op andere gebruikers.
  • Een gebruiker verwijderen wanneer deze de organisatie verlaat zonder dat dit van invloed is op een service-principal.

Volg deze instructies om Terraform te gebruiken voor het maken van een door Microsoft Entra ID beheerde service-principal in Azure, gebruik de Databricks Terraform-provider om de Service-principal van Microsoft Entra ID te koppelen aan uw Azure Databricks-werkruimte en maak eventueel een Microsoft Entra ID-token of Azure Databricks OAuth-token voor de service-principal.

Vereisten

Stap 1: De service-principal maken

Als u al een door Microsoft Entra ID beheerde service-principal beschikbaar hebt, gaat u verder met stap 2.

  1. Maak in uw terminal een lege map en ga vervolgens naar de map. (Elke afzonderlijke set Terraform-configuratiebestanden moet zich in een eigen map bevinden.) Bijvoorbeeld: 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. Maak in deze lege map een bestand met de naam main.tf. Voeg de volgende inhoud toe aan dit bestand en sla het bestand op.

    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. Maak in dezelfde map een bestand met de naam terraform.tfvars. Voeg de volgende inhoud toe aan dit bestand, vervang de volgende waarde en sla het bestand op:

    • Vervang de azure_service_principal_display_name waarde door een weergavenaam voor de Service-principal van Microsoft Entra ID.
    azure_service_principal_display_name = "<A display name for the <entra-service-principal>>"
    
  4. Initialiseer de werkmap met het main.tf bestand door de opdracht uit te terraform init voeren. Zie Command: init op de Terraform-website voor meer informatie.

    terraform init
    
  5. Controleer of er syntaxisfouten in de configuratie zijn door de opdracht uit te terraform validate voeren. Zie Opdracht: valideren op de Terraform-website voor meer informatie.

    terraform validate
    
  6. Pas de wijzigingen toe die nodig zijn om de gewenste status van de configuratie te bereiken door de opdracht uit te terraform apply voeren. Zie Command: apply on the Terraform website(s) voor meer informatie.

    terraform apply
    

Nadat u de service-principal hebt gemaakt, kopieert u de azure_client_id en azure_client_secret uitvoerwaarden, zoals u deze later nodig hebt.

Als u de azure_client_secret waarde wilt ophalen, raadpleegt u de waarde van outputs.client_secret.value het terraform.tfstate bestand, die zich in de werkmap met het main.tf bestand bevindt.

Stap 2: De service-principal toevoegen aan de Azure Databricks-werkruimte

Notitie

Met de volgende inhoud wordt een service-principal toegevoegd op het niveau van de Azure Databricks-werkruimte. Als uw Azure Databricks-werkruimte is ingeschakeld voor identiteitsfederatie, synchroniseert de volgende inhoud ook automatisch de service-principal met het bijbehorende Azure Databricks-account.

  1. Maak in uw terminal een lege map en ga vervolgens naar de map. Elke afzonderlijke set Terraform-configuratiebestanden moet zich in een eigen map bevinden. Voorbeeld: 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. Maak in deze lege map een bestand met de naam main.tf. Voeg de volgende inhoud toe aan dit bestand en sla het bestand op.

    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."
    }
    

    Notitie

    Als u deze service-principal wilt toevoegen aan groepen en rechten wilt toevoegen aan deze service-principal, raadpleegt u databricks_service_principal op de Terraform-website.

  3. Maak in dezelfde map een bestand met de naam terraform.tfvars. Voeg de volgende inhoud toe aan dit bestand, vervang de volgende waarden en sla het bestand op:

    • Vervang de databricks_host waarde door de URL van de Azure Databricks-werkruimte.
    • Vervang de azure_client_id waarde door de azure_client_id waarde uit stap 1.
    • Vervang de databricks_service_principal_display_name waarde door een weergavenaam van een werkruimte voor de Azure Databricks-service-principal.
    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. Initialiseer de werkmap met het main.tf bestand door de opdracht uit te terraform init voeren. Zie Command: init op de Terraform-website voor meer informatie.

    terraform init
    
  5. Controleer of er syntaxisfouten in de configuratie zijn door de opdracht uit te terraform validate voeren. Zie Opdracht: valideren op de Terraform-website voor meer informatie.

    terraform validate
    
  6. Pas de wijzigingen toe die nodig zijn om de gewenste status van de configuratie te bereiken door de opdracht uit te terraform apply voeren. Zie Command: apply on the Terraform website(s) voor meer informatie.

    terraform apply
    

Nadat u de service-principal hebt gemaakt, kopieert u de databricks_service_principal_application_id uitvoerwaarde, omdat u deze nodig hebt om een Microsoft Entra ID-token voor de service-principal te maken.

(Optioneel) Stap 3: Een Microsoft Entra ID-toegangstoken (voorheen Azure Active Directory) maken voor een Microsoft Entra ID-service-principal

Databricks raadt u niet aan om handmatig Microsoft Entra ID-tokens (voorheen Azure Active Directory) te maken voor service-principals voor Microsoft Entra ID. Dit komt doordat elk Microsoft Entra ID-token kort duurt, meestal binnen één uur verloopt. Na deze tijd moet u handmatig een vervangend Microsoft Entra ID-token genereren. Gebruik in plaats daarvan een van de deelnemende hulpprogramma's of SDK's die de geïntegreerde verificatiestandaard van de Databricks-client implementeren. Deze hulpprogramma's en SDK's genereren en vervangen automatisch verlopen Microsoft Entra ID-tokens voor u, waarbij gebruik wordt gemaakt van de volgende Databricks-verificatietypen:

Als u handmatig een Microsoft Entra ID-token voor een Microsoft Entra ID-service-principal moet maken, verzamelt u de volgende informatie en volgt u de instructies in Het toegangstoken voor Microsoft Entra-id ophalen met de REST API van het Microsoft Identity Platform of haalt u een Microsoft Entra ID-toegangstoken op met de Azure CLI:

  • De tenant-id voor uw Microsoft Entra ID-service-principal, die u in de instructies als tenant-id/ map-id / <tenant-id> (tenant) gebruikt. Zie Een service-principal inrichten in Azure Portal om de tenant-id op te halen.
  • De databricks_service_principal_application_id waarde uit stap 2, die u in de instructies als client-id/ toepassings-id / <client-id> (client) gaat gebruiken.
  • De azure_client_secret waarde uit stap 1, die u in de instructies als clientgeheim/ waarde / <client-secret> gaat gebruiken.

Nadat u het Microsoft Entra ID-token hebt gemaakt, kopieert u de access_token waarde, omdat u deze moet opgeven voor uw script, app of systeem.

(Optioneel) Stap 4: Een Azure Databricks OAuth-token maken voor een Microsoft Entra ID-service-principal

Databricks raadt u niet aan Om Azure Databricks OAuth-tokens te maken voor door Microsoft Entra ID beheerde service-principals handmatig. Dit komt doordat elk Azure Databricks OAuth-token kort duurt, meestal binnen één uur verloopt. Na deze tijd moet u handmatig een vervangend Azure Databricks OAuth-token genereren. Gebruik in plaats daarvan een van de deelnemende hulpprogramma's of SDK's die de geïntegreerde verificatiestandaard van de Databricks-client implementeren. Deze hulpprogramma's en SDK's genereren en vervangen automatisch verlopen Azure Databricks OAuth-tokens voor u, waarbij gebruik wordt gemaakt van een service-principal om te verifiëren met Azure Databricks.

Als u handmatig een Azure Databricks OAuth-token wilt maken voor een Microsoft Entra ID-service-principal, raadpleegt u Handmatig toegangstokens genereren en gebruiken voor OAuth M2M-verificatie.