您可以使用 Terraform 和 databricks_repo Terraform 資源,在完全自動化的環境中管理 Azure Databricks Git 資料夾。
本主題涵蓋兩種驗證方法:
- 個人存取權杖 (PAT) 驗證: 使用 Git 個人存取權杖進行存放庫存取
- 具有同盟認證的服務主體: 使用 Azure 服務主體搭配 OpenID Connect (OIDC) 權杖,對 Azure DevOps 存放庫進行安全、無權杖的驗證
使用個人存取權杖進行驗證
此方法會使用 Git 個人存取權杖進行存放庫驗證。
在 Terraform 配置(.tf)檔案中,將 databricks_repo 設定為您將用於 Git 資料夾的 Git 儲存庫 URL:
resource "databricks_repo" "this" {
url = "https://github.com/user/demo.git"
}
若要搭配個人存取權杖型 Git 認證使用 Azure Databricks 服務主體,請遵循下列步驟:
步驟 1:配置 Azure Databricks 提供者
將提供者 databricks 設定為 Azure Databricks 工作區的 URL。 您將在稍後的步驟中定義存取權杖 databricks_obo_token 。
provider "databricks" {
# Configuration options
}
# Example 'databricks' provider configuration
provider "databricks" {
alias = "sp"
host = "https://....cloud.databricks.com"
token = databricks_obo_token.this.token_value
}
步驟 2:建立服務主體
定義 Azure Databricks 服務主體的資源。 您可以在 Azure Databricks 帳戶控制台中的使用者管理>服務主體下找到服務主體名稱。
resource "databricks_service_principal" "sp" {
display_name = "<service_principal_name_here>"
}
步驟 3:建立授權權杖
使用應用程式 ID 設置 Azure Databricks 服務主體帳戶的授權權杖。 您可以在 Azure Databricks 帳戶控制台的使用者管理中,於>下找到服務主體的應用程式識別碼。
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
}
步驟 4:設定 Git 認證
設定服務主體使用的 Git 認證,以存取您的 Git 存放庫。
resource "databricks_git_credential" "sp" {
provider = databricks.sp
depends_on = [databricks_obo_token.this]
git_username = "<the_git_user_account_used_by_the_servcie_principal>"
git_provider = "<your_git_provider_string here>"
personal_access_token = "<auth_token_string_for_git_user>"
}
使用服務主體和聯合憑證進行身份驗證
針對 Azure DevOps 存放庫,您可以使用同盟身分識別認證來驗證,而不需要儲存長期秘密。 此方法會使用 Azure Databricks 服務主體,搭配 Azure DevOps 管線所發出的 OIDC 權杖,這就不需要個人存取權杖。
先決條件
在設定 Azure Databricks Git 資料夾的同盟身分識別驗證之前,請先設定下列元件:
- Azure Databricks 工作區和 Azure DevOps 組織中的 Azure 服務主體。 請參閱在 Azure DevOps 中使用服務主體和受控識別。
- 設定服務主體同盟認證的權限。 請參閱 設定應用程式以信任外部身分識別提供者。
- Azure DevOps 組織中的 Git 存放庫,擁有存放庫存取權限。
- 能夠請求 OIDC 權杖的 Azure DevOps 管道。
步驟 1:設定變數
指定檔案中 terraform.tfvars 下列變數的值:
-
databricks_host:Azure Databricks 工作區的 URL,例如https://adb-123417477717.17.azuredatabricks.net -
entra_client_id:Azure 服務主體的用戶端識別碼 -
entra_client_secret:Azure 服務主體的用戶端密碼 -
entra_tenant_id:服務主體註冊所在的 Microsoft Entra ID -
ado_repo_url:Azure DevOps 中 Git 存放庫的 HTTPS URL
步驟 2:設定 Azure Databricks 提供者
在您的 Terraform 組態中,請使用官方 databricks 提供者。 提供者的身份驗證可以使用您組織的標準方法,例如在持續整合(CI)中使用環境變數,或在從安全工作站執行 Terraform 時使用服務主體。
terraform {
required_providers {
databricks = {
source = "databricks/databricks"
version = "1.78.0"
}
}
}
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
}
步驟 3:建立 Azure DevOps 的同盟 Git 認證
此憑證會告知 Azure Databricks 使用 Azure Active Directory 支援的同盟驗證來處理 Azure DevOps。
resource "databricks_git_credential" "sp_ado" {
git_provider = "azureDevOpsServicesAad"
is_default_for_provider = true
}
步驟 4:將 Git 資料夾指向 Azure DevOps 存放庫
建立或更新 Git 資料夾,以使用您的 Azure DevOps 存放庫 URL。
resource "databricks_repo" "this" {
url = var.ado_repo_url
depends_on = [databricks_git_credential.sp_ado]
}