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
- De Terraform CLI. Zie Terraform downloaden.
- De Azure CLI, aangemeld bij het Microsoft Entra ID-doelabonnement door de opdracht uit te
az login
voeren. Als u zich wilt aanmelden met behulp van een Microsoft Entra ID-service-principal, raadpleegt u azure CLI-aanmelding met een Service-principal van Microsoft Entra ID. Als u zich wilt aanmelden met behulp van een Azure Databricks-gebruikersaccount, raadpleegt u de Azure CLI-aanmelding met een Azure Databricks-gebruikersaccount.
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.
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
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 }
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>>"
- Vervang de
Initialiseer de werkmap met het
main.tf
bestand door de opdracht uit teterraform init
voeren. Zie Command: init op de Terraform-website voor meer informatie.terraform init
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
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.
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
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.
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 deazure_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>"
- Vervang de
Initialiseer de werkmap met het
main.tf
bestand door de opdracht uit teterraform init
voeren. Zie Command: init op de Terraform-website voor meer informatie.terraform init
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
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 maken voor een Microsoft Entra ID-service-principal
Databricks raadt u niet aan om Handmatig Microsoft Entra ID-tokens te maken voor Microsoft Entra ID-service-principals. 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:
- Verificatie van door Azure beheerde identiteiten
- Verificatie van MS Entra-service-principal
- Azure CLI-verificatie
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 verificatietoegang tot Azure Databricks met een service-principal met behulp van OAuth (OAuth M2M).
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.