可以使用 Terraform 和 databricks_repoTerraform 资源在完全自动化的环境中管理 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"
}
若要将 Azure Databricks 服务主体与基于个人访问令牌的 Git 凭据配合使用,请执行以下步骤:
步骤 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 帐户控制台的用户管理>服务主体中找到服务主体的应用程序 ID。
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.databricks.azure.cn
-
entra_client_id
:Azure 服务主体的客户端 ID -
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 DevOps 支持的 Azure Active Directory 联合身份验证。
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]
}