Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verwalten Sie Azure Databricks Git-Ordner in einer vollständig automatisierten Umgebung mithilfe von Terraform und dem Databricks Terraform-Anbieter.
In diesem Thema werden zwei Authentifizierungsansätze behandelt:
- Authentifizierung für persönliche Zugriffstoken (PERSONAL Access Token, PAT): Verwendet persönliche Git-Zugriffstoken für den Repositoryzugriff
- Dienstprinzipal mit Verbundanmeldeinformationen: Verwendet Azure-Dienstprinzipale mit OpenID Connect (OIDC)-Token für sichere, tokenlose Authentifizierung für Azure DevOps-Repositorys
Authentifizierung mit persönlichen Zugriffstoken
Bei diesem Ansatz werden Git-Persönliche Zugriffstokens zur Repository-Authentifizierung mit einem Dienstprinzipal verwendet.
Terraform wertet Anbieterkonfigurationen aus, bevor Ressourcen erstellt werden, sodass Sie innerhalb eines Anbieterblocks derselben Terraform-Konfiguration nicht auf einen Ressourcenwert (z. B. ein OBO-Token) verweisen können. Um diese Einschränkung zu umgehen, teilen Sie das Setup in zwei separate Konfigurationen auf:
- Teil 1: Erstellen des Dienstprinzipals: Erstellt den Dienstprinzipal und generiert ein OBO-Token.
- Teil 2: Konfigurieren von Git-Anmeldeinformationen: Verwendet das OBO-Token, um sich als Dienstprinzipal zu authentifizieren, konfiguriert dann Git-Anmeldeinformationen und erstellt den Git-Ordner.
Teil 1: Erstellen des Dienstprinzipals
Erstellen Sie ein setup/ Verzeichnis mit einer main.tf Datei.
Schritt 1: Deklarieren des Anbieters und der Variablen
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
}
Schritt 2: Erstellen des Dienstprinzipals
Wählen Sie einen Anzeigenamen für den Dienstprinzipal aus. Terraform erstellt es mit diesem Namen.
resource "databricks_service_principal" "sp" {
display_name = var.service_principal_name
}
Schritt 3: Erstellen und Exportieren des Autorisierungstokens
Generieren Sie ein OBO-Token für den Dienstprinzipal, und exportieren Sie es für die Verwendung in der nächsten Konfiguration.
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
}
Schritt 4: Anwenden der Konfiguration
Initialisieren, Anwenden und Abrufen des Tokens aus dem setup/ Verzeichnis:
terraform init
terraform apply
terraform output -raw obo_token_value
Schritt 5: Vorbereiten von Variablen für Teil 2
Erstellen Sie eine terraform.tfvars Datei im git-credentials/ Verzeichnis mit dem OBO-Token und anderen erforderlichen Werten:
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
Fügen Sie terraform.tfvars Ihrer .gitignore Datei hinzu, um zu vermeiden, dass vertrauliche Werte in die Versionskontrolle gelangen. Terraform liest diese Datei automatisch, wenn Sie terraform apply ausführen.
Teil 2: Konfigurieren von Git-Anmeldeinformationen
Erstellen Sie ein separates git-credentials/ Verzeichnis mit einer eigenen main.tf Datei.
Schritt 1: Deklarieren des Anbieters und der Variablen
Übergeben Sie das OBO-Token aus der Konfigurationsausgabe obo_token_value, um sich als setup/ Service Principal zu authentifizieren.
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
}
Schritt 2: Konfigurieren von Git-Anmeldeinformationen
Legen Sie die Git-Anmeldeinformationen fest, die der Service Principal für den Zugriff auf Ihr Git-Repository verwendet.
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
}
Schritt 3: Erstellen des Git-Ordners
resource "databricks_repo" "this" {
provider = databricks.sp
url = var.repo_url
depends_on = [databricks_git_credential.sp]
}
Schritt 4: Anwenden der Konfiguration von Git-Anmeldeinformationen
Initialisieren und anwenden Sie aus dem git-credentials/ Verzeichnis:
terraform init
terraform apply
Authentifizierung mit einem Dienstkonto und Verbundanmeldeinformationen
Bei Azure DevOps Repositorys können Sie sich mit Verbundidentitätsanmeldeinformationen authentifizieren, ohne langlebige geheime Schlüssel zu speichern. Bei diesem Ansatz wird ein Dienstprinzipal mit einem von Azure DevOps Pipelines ausgestellten OIDC-Token verwendet, wodurch die Notwendigkeit von persönlichen Zugriffstoken beseitigt wird.
Voraussetzungen
Konfigurieren Sie vor dem Einrichten der Verbundidentitätsauthentifizierung für Azure Databricks Git-Ordner die folgenden Komponenten:
- Ein Azure Service Principal in Ihrem Azure Databricks-Arbeitsbereich und Ihrer Azure DevOps-Organisation. Siehe Verwenden von Dienstprinzipalen und verwalteten Identitäten in Azure DevOps.
- Berechtigung zum Konfigurieren von Verbundanmeldeinformationen für den Dienstprinzipal. Siehe Konfigurieren einer App, um einem externen Identitätsanbieter zu vertrauen.
- Ein Git-Repository in Ihrer Azure DevOps-Organisation mit Berechtigungen für den Repositoryzugriff.
- Eine Azure DevOps-Pipeline, die ein OIDC-Token anfordern kann.
Schritt 1: Konfigurieren von Variablen
Geben Sie Werte für die folgenden Variablen in einer terraform.tfvars Datei an:
-
databricks_host: Die URL Ihres Azure Databricks-Arbeitsbereichs, z. B.https://adb-123417477717.17.azuredatabricks.net -
entra_client_id: Die Client-ID des Azure-Dienstprinzipals -
entra_client_secret: Der geheime Clientschlüssel für den Azure-Dienstprinzipal -
entra_tenant_id: Die Microsoft Entra-ID, in der der Dienstprinzipal registriert ist -
ado_repo_url: Die HTTPS-URL des Git-Repositorys in Azure DevOps
Step 2: Konfigurieren des Azure Databricks Anbieters
Verwenden Sie in Ihrer Terraform-Konfiguration den offiziellen databricks Provider. Die Authentifizierung für den Anbieter kann die Standardmethode Ihrer Organisation verwenden, z. B. Umgebungsvariablen in fortlaufender Integration (CI) oder einen Dienstprinzipal, wenn Terraform von einer sicheren Arbeitsstation ausgeführt wird.
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
}
Schritt 3: Erstellen einer federierten Git-Anmeldeinformation für Azure DevOps
Diese Authentifizierungsdaten sagen Azure Databricks, dass es den Microsoft Entra ID-gestützten Verbund für Azure DevOps verwenden soll.
resource "databricks_git_credential" "sp_ado" {
git_provider = "azureDevOpsServicesAad"
is_default_for_provider = true
}
Step 4: Verweisen sie auf einen Git-Ordner in Ihrem Azure DevOps Repository
Erstellen oder aktualisieren Sie den Git-Ordner, um Ihre Azure DevOps-Repository-URL zu verwenden.
resource "databricks_repo" "this" {
url = var.ado_repo_url
depends_on = [databricks_git_credential.sp_ado]
}