Effettuare il provisioning di un'entità servizio usando Terraform
Nota
Per effettuare il provisioning di un'entità servizio gestita di Microsoft Entra ID usando la portale di Azure e l'interfaccia utente di Azure Databricks, consultare Gestire le entità servizio.
Le entità di servizio gestite di Microsoft Entra ID si differenziano dalle risorse identità gestite per Azure che sono supportate anche da Azure Databricks per l’autenticazione. Per informazioni su come usare le identità gestite per le risorse di Azure anziché le entità servizio gestite con ID Entra di Microsoft per l'autenticazione di Azure Databricks, consultare Configurare e usare l'autenticazione delle identità gestite di Azure per l'automazione di Azure Databricks.
Un'entità servizio è un'identità per strumenti e sistemi automatizzati, ad esempio script, app e piattaforme CI/CD. Databricks consiglia di usare un'entità servizio e il token di accesso OAuth o il token di accesso personale anziché l'account utente di Azure Databricks e il token di accesso personale. I vantaggi includono:
- Concessione e limitazione dell'accesso alle risorse indipendentemente da un utente.
- Consentire agli utenti di proteggere meglio i propri token di accesso.
- Disabilitazione o eliminazione di un'entità servizio senza influire sugli altri utenti.
- Rimozione di un utente quando lascia l'organizzazione senza alcun impatto sull'entità servizio.
Seguire queste istruzioni per usare Terraform per creare un'entità servizio gestita di Microsoft Entra ID in Azure, usare il provider Databricks Terraform per collegare l'entità servizio Microsoft Entra ID all'area di lavoro di Azure Databricks e quindi, facoltativamente, creare un token ID Microsoft Entra o un token OAuth di Azure Databricks per l'entità servizio.
Requisiti
- Interfaccia della riga di comando di Terraform. Consultare Scaricare Terraform.
- L'interfaccia della riga di comando di Azure ha eseguito l'accesso alla sottoscrizione di Microsoft Entra ID di destinazione eseguendo il comando
az login
. Per accedere usando un'entità servizio Microsoft Entra ID, consultare Accesso dell'interfaccia della riga di comando di Azure con un'entità servizio Microsoft Entra ID. Per accedere usando un account utente di Azure Databricks, vedere Accesso dell'interfaccia della riga di comando di Azure con un account utente di Azure Databricks.
Passaggio 1: creare l'entità servizio dell'app
Se è già disponibile un'entità servizio gestita di Microsoft Entra ID, passare al passaggio 2.
Nel terminale creare una directory vuota e quindi passare a essa. Ogni set separato di file di configurazione Terraform deve trovarsi nella propria directory. Ad esempio:
mkdir terraform_azure_service_principal_demo && cd terraform_azure_service_principal_demo
.mkdir terraform_azure_service_principal_demo && cd terraform_azure_service_principal_demo
Creare un nuovo file denominato
main.tf
nella directory vuota. Aggiungere il contenuto seguente al file e quindi salvarlo.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 }
Creare un nuovo file denominato
terraform.tfvars
nella stessa directory. Aggiungere il contenuto seguente a questo file, sostituendo il valore seguente e quindi salvare il file:- Sostituire il valore
azure_service_principal_display_name
con un nome visualizzato per l'entità servizio Microsoft Entra ID.
azure_service_principal_display_name = "<A display name for the <entra-service-principal>>"
- Sostituire il valore
Inizializzare la directory di lavoro contenente il file
main.tf
eseguendo il comandoterraform init
. Per altre informazioni, consultare Comando: init sul sito Web Terraform.terraform init
Verificare se sono presenti errori di sintassi nella configurazione eseguendo il comando
terraform validate
. Per altre informazioni, consultare Comando: validate sul sito Web Terraform.terraform validate
Applica le modifiche richieste per raggiungere lo stato desiderato della configurazione eseguendo il comando
terraform apply
. Per altre informazioni, consultare Comando: applica al sito Web Terraform.terraform apply
Dopo aver creato l'entità servizio, copiare i valori di output azure_client_id
e azure_client_secret
, perché saranno necessari in un secondo momento.
Per ottenere il valore azure_client_secret
, consultare il valore di outputs.client_secret.value
nel file terraform.tfstate
, che si trova nella directory di lavoro contenente il file main.tf
.
Passaggio 2: aggiungere l'entità servizio all'area di lavoro di Azure Databricks
Nota
Il contenuto seguente aggiunge un'entità servizio a livello di area di lavoro di Azure Databricks. Se l'area di lavoro di Azure Databricks è abilitata per la federazione delle identità, il contenuto seguente sincronizza automaticamente l'entità servizio con l'account Azure Databricks correlato.
Nel terminale creare una directory vuota e quindi passare a essa. Ogni set separato di file di configurazione Terraform deve trovarsi nella propria directory. Ad esempio:
mkdir terraform_databricks_service_principal_demo && cd terraform_databricks_service_principal_demo
.mkdir terraform_databricks_service_principal_demo && cd terraform_databricks_service_principal_demo
Creare un nuovo file denominato
main.tf
nella directory vuota. Aggiungere il contenuto seguente al file e quindi salvarlo.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." }
Nota
Per aggiungere questa entità servizio ai gruppi e per aggiungere diritti a questa entità servizio, consultare databricks_service_principal sul sito Web Terraform.
Creare un nuovo file denominato
terraform.tfvars
nella stessa directory. Aggiungere il contenuto seguente a questo file, sostituendo i valori seguenti e quindi salvare il file:- Sostituire il valore
databricks_host
con l'URL dell'area di lavoro di Azure Databricks. - Sostituire il valore
azure_client_id
con il valoreazure_client_id
del passaggio 1. - Sostituire il valore
databricks_service_principal_display_name
con un nome visualizzato dell'area di lavoro per l'entità servizio di Azure Databricks.
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>"
- Sostituire il valore
Inizializzare la directory di lavoro contenente il file
main.tf
eseguendo il comandoterraform init
. Per altre informazioni, consultare Comando: init sul sito Web Terraform.terraform init
Verificare se sono presenti errori di sintassi nella configurazione eseguendo il comando
terraform validate
. Per altre informazioni, consultare Comando: validate sul sito Web Terraform.terraform validate
Applica le modifiche richieste per raggiungere lo stato desiderato della configurazione eseguendo il comando
terraform apply
. Per altre informazioni, consultare Comando: applica al sito Web Terraform.terraform apply
Dopo aver creato l'entità servizio, copiare il valore di output databricks_service_principal_application_id
, perché sarà necessario per creare un token ID Microsoft Entra per l'entità servizio.
(Facoltativo) Passaggio 3: creare un token di accesso microsoft Entra ID per un'entità servizio Microsoft Entra ID
Databricks non consiglia di creare manualmente token di Microsoft Entra ID per le entità servizio di Microsoft Entra ID. Ciò è dovuto al fatto che ogni token di Microsoft Entra ID è di breve durata e scade in genere entro un'ora. Dopo la scadenza è necessario generare manualmente un token di Microsoft Entra ID sostitutivo. Usare invece uno degli strumenti o degli SDK partecipanti che implementano lo standard di autenticazione unificata del client Databricks. Questi strumenti e SDK generano e sostituiscono automaticamente i token ID Microsoft Entra scaduti, sfruttando i tipi di autenticazione di Databricks seguenti:
- Autenticazione delle identità gestite di Azure
- Autenticazione dell’entità servizio di MS Entra
- Autenticazione con interfaccia della riga di comando di Azure
Se è necessario creare manualmente un token ID Microsoft Entra per un'entità servizio Microsoft Entra ID, raccogliere le informazioni seguenti e quindi seguire le istruzioni in Ottenere un token di accesso microsoft Entra ID con l'API REST di Microsoft Identity Platform o Ottenere un token di accesso microsoft Entra ID con l'interfaccia della riga di comando di Azure:
- ID tenant per l'entità servizio Microsoft Entra ID, che verrà usato come ID tenant/ ID directory (tenant) /
<tenant-id>
nelle istruzioni. Per ottenere l'ID tenant, consultare Effettuare il provisioning di un'entità servizio in portale di Azure. - Il valore
databricks_service_principal_application_id
del passaggio 2, che verrà usato come ID client/ ID applicazione (client) /<client-id>
nelle istruzioni. - Valore
azure_client_secret
del passaggio 1, che verrà usato come segreto client/ valore /<client-secret>
nelle istruzioni.
Dopo aver creato il token ID Microsoft Entra, copiare il valore access_token
, perché sarà necessario specificarlo nello script, nell'app o nel sistema.
(Facoltativo) Passaggio 4: creare un token OAuth di Azure Databricks per un'entità servizio Microsoft Entra ID
Databricks non consiglia di creare manualmente i token OAuth di Azure Databricks per le entità servizio gestite da Microsoft Entra ID. Ciò è dovuto al fatto che ogni token OAuth di Azure Databricks è di breve durata e scade in genere entro un'ora. Dopo la scadenza è necessario generare manualmente un token OAuth di Azure Databricks sostitutivo. Usare invece uno degli strumenti o degli SDK partecipanti che implementano lo standard di autenticazione unificata del client Databricks. Questi strumenti e SDK generano e sostituiscono automaticamente i token OAuth di Azure Databricks scaduti, sfruttando l'autenticazione dell'accesso ad Azure Databricks con un'entità servizio usando OAuth (OAuth M2M).
Se è necessario creare manualmente un token OAuth di Azure Databricks per un'entità servizio Microsoft Entra ID, consultare Generare e usare manualmente i token di accesso per l'autenticazione OAuth M2M.