本页介绍如何使用 Microsoft Entra ID 身份验证将 Databricks Lakehouse 联合身份验证配置为在 Microsoft SQL Server 上运行联合查询。 支持用户与机器(U2M)和机器与机器(M2M)的OAuth流程。
支持的 OAuth 流程
- U2M:使用Microsoft帐户进行身份验证。 系统会提示用户使用重定向 URI 登录,并向用户颁发访问令牌。
- M2M:使用服务主体进行身份验证。 为应用程序而不是特定用户颁发访问令牌。
在 Databricks 工作区中, OAuth 是指 U2M 身份验证, 而 OAuth 计算机到计算机 是指 M2M 身份验证。
在您开始之前
在使用 Entra ID 在 SQL Server 上运行联合查询之前,必须具有以下项:
- 访问 Azure 订阅和在 Microsoft Entra ID 中注册应用程序的权限。
- 为了创建 Entra 主体,您需要对 SQL Server 实例的管理员访问权限。
在 Microsoft Entra ID 中注册应用程序
若要创建用于身份验证的应用程序注册,请执行以下作:
- 登录到 Azure 门户。
- 导航到 Microsoft Entra ID>应用注册>新注册。
- 输入应用的名称。
- 对于 U2M(OAuth),请将重定向 URI 设置为以下内容:
https://<workspace-url>/login/oauth/azure.html - 对于 M2M(服务主体),请将重定向 URI 留空。
- 对于 U2M(OAuth),请将重定向 URI 设置为以下内容:
- 单击“注册”。
- 复制 应用程序(客户端)ID 和 目录(租户)ID。
- 导航到 证书和机密>“新建客户端机密”。
- 保存生成的机密值。
向应用程序分配权限
若要允许应用程序向 SQL Server 进行身份验证,请分配所需的 API 权限:
- 导航到 API 权限>“添加权限”。
- 选择 Azure SQL 数据库>user_impersonation (委托权限)。
- 对于 M2M,请确保应用具有服务主体身份验证所需的权限。
- 对于 Azure SQL 托管实例上的 M2M 身份验证,请确保已 将托管实例标识分配给“目录读取者”角色。
在 SQL Server 中创建服务主体(仅限 M2M)
使用 Entra ID 登录凭据连接到 SQL Server 实例。 必须具有创建新用户的权限。
为 Entra 应用创建新的登录名和用户。
向用户授予读取权限。
CREATE LOGIN [<app_name>] FROM EXTERNAL PROVIDER; CREATE USER [<app_name>] FROM LOGIN [<app_name>]; ALTER ROLE db_datareader ADD MEMBER [<app_name>];
有关详细信息和高级方案,请参阅Microsoft文档中的以下页面:
创建连接
在 Databricks 工作区中执行以下操作:
- 在边栏中,单击“目录>添加>添加连接”。
- 对于 “连接类型”,请选择 “SQL Server”。
- 对于 身份验证类型,请选择 OAuth (U2M)或 OAuth 计算机到计算机 (M2M)。
- 输入以下连接属性:
- 主机:SQL Server 主机名。
- 端口:SQL Server 端口。
- 用户:对于 U2M,Microsoft帐户用户。 对于 M2M,服务主体名称。
- 输入 Entra 应用注册中的 客户端 ID 和 客户端密码 。
- 输入 授权终结点:
- U2M:
https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize - M2M:
https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token
- U2M:
- 对于 OAuth 范围,请输入
https://database.windows.net/.default offline_access(仅限 U2M)。
- 对于 U2M,请单击“ 使用 Azure Entra ID 登录 ”并完成身份验证流。
- 单击“ 创建连接 ”,然后继续创建目录。
后续步骤
创建到 SQL Server 的连接后,请参阅 在 Microsoft SQL Server 上运行联合查询 ,以创建外部目录并查询数据。