Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Gestire Azure Databricks cartelle Git in un ambiente completamente automatizzato usando Terraform e il provider Databricks Terraform.
Questo argomento illustra due approcci di autenticazione:
- Autenticazione del token di accesso personale (PAT): Usa i token di accesso personale Git per l'accesso al repository
- Entità servizio con credenziali federate: Usa le entità servizio di Azure con token OpenID Connect (OIDC) per l'autenticazione sicura senza token nei repository Di Azure DevOps
Autenticazione con token di accesso personali
Questo approccio utilizza i token di accesso personalizzato Git per l'autenticazione del repository con un servizio principale.
Terraform valuta le configurazioni del provider prima di creare qualsiasi risorsa, quindi non è possibile fare riferimento a un valore di risorsa (ad esempio un token su mandato (OBO)) in un blocco del provider all'interno della stessa Configurazione di Terraform. Per ovviare a questa limitazione, suddividere l'installazione in due configurazioni separate:
- Parte 1: Creare il principale del servizio: Crea il principale del servizio e genera un token OBO.
- Parte 2: Configurare le credenziali Git: usa il token OBO per l'autenticazione come entità servizio, quindi configura le credenziali Git e crea la cartella Git.
Parte 1: Creare l'entità servizio principale
Creare una setup/ directory con un main.tf file.
Passaggio 1: Dichiarare il provider e le variabili
terraform {
required_providers {
databricks = {
source = "databricks/databricks"
}
}
}
variable "databricks_host" {}
variable "databricks_admin_token" {
sensitive = true
}
variable "service_principal_name" {}
provider "databricks" {
host = var.databricks_host
token = var.databricks_admin_token
}
Passaggio 2: Crea il principale del servizio
Scegliere un nome da visualizzare per il principale del servizio. Terraform lo crea usando questo nome.
resource "databricks_service_principal" "sp" {
display_name = var.service_principal_name
}
Passaggio 3: Creare ed esportare il token di autorizzazione
Generare un token OBO per il principale del servizio ed esportarlo per l'utilizzo nella configurazione successiva.
resource "databricks_obo_token" "this" {
application_id = databricks_service_principal.sp.application_id
comment = "PAT on behalf of ${databricks_service_principal.sp.display_name}"
lifetime_seconds = 3600
}
output "obo_token_value" {
value = databricks_obo_token.this.token_value
sensitive = true
}
Passaggio 4: Applicare la configurazione
Dalla directory setup/, inizializza, applica e recupera il token:
terraform init
terraform apply
terraform output -raw obo_token_value
Passaggio 5: Preparare le variabili per la parte 2
Creare un terraform.tfvars file nella git-credentials/ directory con il token OBO e altri valori obbligatori:
databricks_host = "https://<your-workspace>.cloud.databricks.com"
obo_token_value = "<token from previous step>"
git_username = "<your-git-username>"
git_provider = "<gitHub|gitLab|azureDevOpsServices|...>"
git_personal_access_token = "<your-git-PAT>"
repo_url = "https://github.com/<your-org>/<your-repo>.git"
Note
Aggiungi terraform.tfvars al file .gitignore per evitare di eseguire il commit di valori sensibili al controllo di versione. Terraform legge automaticamente questo file quando si esegue terraform apply.
Parte 2: Configurare le credenziali Git
Creare una directory separata git-credentials/ con il relativo file main.tf.
Passaggio 1: Dichiarare il provider e le variabili
Fornire il token OBO dall'output di configurazione come obo_token_value per autenticare come entità servizio.
terraform {
required_providers {
databricks = {
source = "databricks/databricks"
}
}
}
variable "databricks_host" {}
variable "obo_token_value" {
sensitive = true
}
variable "git_username" {}
variable "git_provider" {}
variable "git_personal_access_token" {
sensitive = true
}
variable "repo_url" {}
provider "databricks" {
alias = "sp"
host = var.databricks_host
token = var.obo_token_value
}
Passaggio 2: Configurare le credenziali Git
Configura le credenziali Git che l'entità del servizio utilizzerà per accedere al tuo repository Git.
resource "databricks_git_credential" "sp" {
provider = databricks.sp
git_username = var.git_username
git_provider = var.git_provider
personal_access_token = var.git_personal_access_token
}
Passaggio 3: Creare la cartella Git
resource "databricks_repo" "this" {
provider = databricks.sp
url = var.repo_url
depends_on = [databricks_git_credential.sp]
}
Passaggio 4: Applicare la configurazione delle credenziali Git
Dalla directory git-credentials/, inizializza e applica:
terraform init
terraform apply
Autenticazione con un service principal e credenziali federate
Per Azure DevOps repository, le credenziali di identità federate consentono di eseguire l'autenticazione senza archiviare segreti di lunga durata. Questo approccio usa un'entità servizio con un token OIDC rilasciato dalle pipeline di Azure DevOps, eliminando la necessità di token di accesso personali.
Prerequisiti
Prima di configurare l'autenticazione dell'identità federata per Azure Databricks cartelle Git, configurare i componenti seguenti:
- Un principale del servizio di Azure nell'area di lavoro di Azure Databricks e nell'organizzazione Azure DevOps. Vedere Usare entità servizio e identità gestite in Azure DevOps.
- Permesso di configurare le credenziali federate per il principal del servizio. Vedere Configurare un'app per considerare attendibile un provider di identità esterno.
- Un repository Git nell'organizzazione di Azure DevOps, con autorizzazioni concesse per l'accesso al repository.
- Una pipeline di Azure DevOps in grado di richiedere un token OIDC.
Passaggio 1: Configurare le variabili
Specificare i valori per le variabili seguenti in un terraform.tfvars file:
-
databricks_host: URL dell'area di lavoro di Azure Databricks, ad esempiohttps://adb-123417477717.17.azuredatabricks.net -
entra_client_id: ID del client principale del servizio Azure -
entra_client_secret: segreto del client per il principale del servizio di Azure -
entra_tenant_id: ID Microsoft Entra in cui è registrata l'entità servizio -
ado_repo_url: URL HTTPS del Git repository in Azure DevOps
P 2: Configurare il provider di Azure Databricks
Nella configurazione di Terraform usare il provider ufficiale databricks . L'autenticazione per il provider può usare il metodo standard dell'organizzazione, ad esempio le variabili di ambiente nell'integrazione continua (CI) o un'entità servizio quando si esegue Terraform da una workstation sicura.
terraform {
required_providers {
databricks = {
source = "databricks/databricks"
}
}
}
provider "databricks" {
host = var.databricks_host
azure_client_id = var.entra_client_id
azure_client_secret = var.entra_client_secret
azure_tenant_id = var.entra_tenant_id
}
P 3: Creare una credenziale Git federata per Azure DevOps
Questa credenziale indica Azure Databricks di usare la federazione supportata da Microsoft Entra ID per Azure DevOps.
resource "databricks_git_credential" "sp_ado" {
git_provider = "azureDevOpsServicesAad"
is_default_for_provider = true
}
Fase 4: Puntare una cartella Git su il repository Azure DevOps
Creare o aggiornare la cartella Git per usare l'URL del repository Azure DevOps.
resource "databricks_repo" "this" {
url = var.ado_repo_url
depends_on = [databricks_git_credential.sp_ado]
}