使用 Microsoft Entra ID 从 dbt Core 配置 Azure Databricks 登录
重要
此功能目前以公共预览版提供。
本文介绍如何使用 Microsoft Entra ID 从 dbt Core 配置 Azure Databricks 登录。 以 Azure Databricks 帐户管理员身份完成此一次性配置后,用户可以使用单一登录 (SSO) 将 Azure Databricks 连接到 dbt Core。
除了使用 Microsoft Entra ID,还可以使用 Databricks M2M OAuth 与 dbt Core 集成。 请参阅启用或禁用合作伙伴 OAuth 应用程序。
开始之前
在完成本文中的步骤之前,必须:
- 有权访问本地 dbt Core 环境
- 获取 Azure Databricks 工作区中 SQL 仓库的服务器主机名和 HTTP 路径
- 成为 Azure Databricks 帐户管理员
- 有权在 Azure 租户中为 Azure Databricks 帐户创建 Azure 应用注册。
为 dbt Core 配置计算机到计算机 (M2M) 身份验证
本部分介绍如何为 Azure Databricks 和 dbt Core 配置计算机到计算机 (M2M) 身份验证。 OAuth 的 M2M 工作流支持自动化过程(例如 CI/CD 集成),无需人工干预即可安全访问资源。 dbt 客户端作为服务主体运行,使用服务主体从 Azure AD 获取 OAuth 令牌,并利用此令牌与 Databricks SQL API 连接。
创建 Azure 应用注册
- 使用 Azure 门户登录到 Azure Databricks 帐户的 Azure 租户(位于
https://portal.azure.cn/<tenant-id>
)。 - 单击“应用注册”。 如果“应用注册”不可见,请单击“更多服务”,然后使用“筛选服务”文本框搜索“应用注册”。
- 单击“新建注册”。
- 输入应用的“名称”。
- 对于“重定向 URI”,请从下拉菜单中选择“公共客户端/本机(移动和桌面)”,然后输入
http://localhost:8020
。 - 单击“注册”。
- 复制“应用程序(客户端) ID”。 稍后将需要此值。
为 Azure 应用注册生成客户端密码
- 在 Azure 门户中,选择上一步创建的应用注册。
- 单击“证书和机密”,然后单击“新建客户端密码”。
- 输入说明,然后单击“添加”。
- 复制机密值。 稍后需要用到此值,并且只能在创建机密后访问此值。
将 Microsoft Entra ID 服务主体添加到工作区
- 在 Azure Databricks 工作区中,单击右上角的用户名,然后单击“管理设置”。
- 单击“标识和访问”选项卡。
- 单击“服务主体”旁的“管理”。
- 单击“添加服务主体”,然后单击“客户端 ID”。
- 对于“ApplicationId”,输入之前复制的“应用程序(客户端) ID”。
- 对于“显示名称”,输入服务主体的逻辑名称,然后单击“添加”。
将 M2M 配置文件添加到 dbt 项目
将之前复制的“应用程序(客户端) ID”和客户端密码设置为环境变量。 Databricks 不建议直接将敏感信息(如机密)存储在
profiles.yml
中。~ export DATABRICKS_CLIENT_ID=<client-id> ~ export DATABRICKS_CLIENT_SECRET=<client-secret>
将 M2M 配置文件添加到 dbt 项目的
profiles.yml
文件中。以下是指定了 M2M 配置文件
azure-oauth-m2m
的profiles.yml
文件示例。 为target
指定azure-oauth-m2m
会将 M2M 配置文件设置为 dbt 使用的默认运行配置文件。databricks_demo: outputs: ... azure-oauth-m2m: catalog: uc_demos host: "adb-xxx.databricks.azure.cn" http_path: "/sql/1.0/warehouses/9196548d010cf14d" schema: databricks_demo threads: 1 type: databricks auth_type: oauth client_id: "{{ env_var('DATABRICKS_CLIENT_ID') }}" client_secret: "{{ env_var('DATABRICKS_CLIENT_SECRET') }}" target: azure-oauth-m2m
授权服务主体访问 SQL 仓库
- 在边栏中,单击“SQL 仓库”,单击你的 SQL 仓库,然后单击“权限”。
- 在本文前面创建的服务主体旁边,从下拉菜单中选择“可以使用”。
验证 OAuth 应用程序设置
运行 dbt debug
命令,验证是否已正确配置 OAuth 应用程序。 例如:
dbt debug --target azure-oauth-m2m
以下是成功运行 dbt debug
的示例输出:
...
Configuration:
profiles.yml file [OK found and valid]
dbt_project.yml file [OK found and valid]
Required dependencies:
- git [OK found]
Connection:
...
Connection test: OK connection ok
为 dbt Core 配置用户到计算机 (U2M) 身份验证
本部分介绍如何为 Azure Databricks 和 dbt Core 配置用户到计算机身份验证。 OAuth 的 U2M 工作流允许系统通过从 Azure AD 弹出的浏览器安全地获取 OAuth 令牌来代表用户(例如 dbt 客户端)进行访问。 dbt 使用此令牌连接到 Databricks SQL API,从而简化了身份验证和授权。
创建 Azure 应用注册
- 使用 Azure 门户登录到 Azure Databricks 帐户的 Azure 租户(位于
https://portal.azure.cn/<tenant-id>
)。 - 单击“应用注册”。 如果“应用注册”不可见,请单击“更多服务”,然后使用“筛选服务”文本框搜索“应用注册”。
- 单击“新建注册”。
- 输入应用的“名称”。
- 对于“重定向 URI”,请从下拉菜单中选择“公共客户端/本机(移动和桌面)”,然后输入
http://localhost:8020
。 - 单击“注册”。
- 复制“应用程序(客户端) ID”和“租户 ID”。 在后面的步骤中会用到这些值。
将 U2M 配置文件添加到 dbt 项目
将 U2M 配置文件添加到 dbt 项目的 profiles.yml
文件中。
以下是指定了 U2M 配置文件 azure-oauth-u2m
的 profiles.yml
文件示例。 为 target
指定 azure-oauth-u2m
会将 U2M 配置文件设置为 dbt 使用的默认运行配置文件。
databricks_demo:
outputs:
azure-oauth-u2m:
catalog: uc_demos
host: "adb-xxx.databricks.azure.cn"
http_path: "/sql/1.0/warehouses/9196548d010cf14d"
schema: databricks_demo
threads: 1
type: databricks
auth_type: oauth
client_id: "9729e77e-ba94-4d53-8cfb-bb609f43f881"
target: azure-oauth-u2m
验证 OAuth 应用程序设置
运行
dbt debug
命令,验证是否已正确配置 OAuth 应用程序。 例如:dbt debug --target azure-oauth-u2m
“请求的权限”页将在浏览器中打开。
单击接受。
以下是成功运行 dbt debug
的示例输出:
...
Configuration:
profiles.yml file [OK found and valid]
dbt_project.yml file [OK found and valid]
Required dependencies:
- git [OK found]
Connection:
...
Connection test: OK connection ok
其他资源
要创建新的 dbt Core 项目并使用 SSO 身份验证连接到 Azure Databricks,请参阅《连接到 dbt Core》。