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, vedere Gestire le entità servizio.
Le entità servizio gestite da Microsoft Entra ID differiscono dalle identità gestite per le risorse di Azure, che Azure Databricks supporta anche 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, vedere 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. Vedere Scaricare Terraform.
- L'interfaccia della riga di comando di Azure ha eseguito l'accesso alla sottoscrizione di Microsoft Entra ID (in precedenza Azure Active Directory) di destinazione eseguendo il
az login
comando . Per accedere usando un'entità servizio Microsoft Entra ID, vedere 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
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
In questa directory vuota creare un file denominato
main.tf
. Aggiungere il contenuto seguente a questo file e quindi salvare il file.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 }
Nella stessa directory creare un file denominato
terraform.tfvars
. Aggiungere il contenuto seguente a questo file, sostituendo il valore seguente e quindi salvare il file:- Sostituire il
azure_service_principal_display_name
valore 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
Inizializzare la directory di lavoro contenente il
main.tf
file eseguendo ilterraform init
comando . Per altre informazioni, vedere Comando: init nel sito Web terraform.terraform init
Verificare se sono presenti errori di sintassi nella configurazione eseguendo il
terraform validate
comando . Per altre informazioni, vedere Comando: validate nel sito Web Terraform.terraform validate
Applicare le modifiche necessarie per raggiungere lo stato desiderato della configurazione eseguendo il
terraform apply
comando . Per altre informazioni, vedere Command: apply on the Terraform website (Comando: apply on the Terraform website).terraform apply
Dopo aver creato l'entità servizio, copiare i azure_client_id
valori di output e azure_client_secret
, perché saranno necessari in un secondo momento.
Per ottenere il azure_client_secret
valore, vedere il valore di outputs.client_secret.value
nel terraform.tfstate
file , che si trova nella directory di lavoro contenente il main.tf
file.
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
In questa directory vuota creare un file denominato
main.tf
. Aggiungere il contenuto seguente a questo file e quindi salvare il file.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, vedere databricks_service_principal nel sito Web Terraform.
Nella stessa directory creare un file denominato
terraform.tfvars
. Aggiungere il contenuto seguente a questo file, sostituendo i valori seguenti e quindi salvare il file:- Sostituire il
databricks_host
valore con l'URL dell'area di lavoro di Azure Databricks. - Sostituire il
azure_client_id
valore con il valore delazure_client_id
passaggio 1. - Sostituire il
databricks_service_principal_display_name
valore 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
Inizializzare la directory di lavoro contenente il
main.tf
file eseguendo ilterraform init
comando . Per altre informazioni, vedere Comando: init nel sito Web terraform.terraform init
Verificare se sono presenti errori di sintassi nella configurazione eseguendo il
terraform validate
comando . Per altre informazioni, vedere Comando: validate nel sito Web Terraform.terraform validate
Applicare le modifiche necessarie per raggiungere lo stato desiderato della configurazione eseguendo il
terraform apply
comando . Per altre informazioni, vedere Command: apply on the Terraform website (Comando: apply on the Terraform website).terraform apply
Dopo aver creato l'entità servizio, copiare il databricks_service_principal_application_id
valore di output, 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 (in precedenza Azure Active Directory) per un'entità servizio Microsoft Entra ID
Databricks non consiglia di creare manualmente i token microsoft Entra ID (in precedenza Azure Active Directory) per le entità servizio Microsoft Entra ID. Ciò è dovuto al fatto che ogni token ID di Microsoft Entra è di breve durata, in genere scaduto entro un'ora. Dopo questa volta, è necessario generare manualmente un token ID Microsoft Entra 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 entità servizio di Microsoft 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 /
<tenant-id>
directory (tenant) nelle istruzioni. Per ottenere l'ID tenant, vedere Effettuare il provisioning di un'entità servizio in portale di Azure. - Valore
databricks_service_principal_application_id
del passaggio 2, che verrà usato come ID client/ ID /<client-id>
applicazione (client) 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 access_token
valore, 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. Questo avviene perché ogni token OAuth di Azure Databricks è di breve durata, in genere scaduto entro un'ora. Dopo questa volta, è 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'uso di un'entità servizio per l'autenticazione con Azure Databricks.
Se è necessario creare manualmente un token OAuth di Azure Databricks per un'entità servizio Microsoft Entra ID, vedere Generare e usare manualmente i token di accesso per l'autenticazione OAuth M2M.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per