配置 Microsoft Entra ID 以进行 SQL Server 联合身份验证

本页介绍如何使用 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 中注册应用程序

若要创建用于身份验证的应用程序注册,请执行以下作:

  1. 登录到 Azure 门户
  2. 导航到 Microsoft Entra ID>应用注册>新注册
  3. 输入应用的名称。
    • 对于 U2M(OAuth),请将重定向 URI 设置为以下内容: https://<workspace-url>/login/oauth/azure.html
    • 对于 M2M(服务主体),请将重定向 URI 留空。
  4. 单击“注册”。
  5. 复制 应用程序(客户端)ID目录(租户)ID
  6. 导航到 证书和机密>“新建客户端机密”。
  7. 保存生成的机密值。

向应用程序分配权限

若要允许应用程序向 SQL Server 进行身份验证,请分配所需的 API 权限:

  1. 导航到 API 权限>“添加权限”。
  2. 选择 Azure SQL 数据库>user_impersonation (委托权限)。
  3. 对于 M2M,请确保应用具有服务主体身份验证所需的权限。
  4. 对于 Azure SQL 托管实例上的 M2M 身份验证,请确保已 将托管实例标识分配给“目录读取者”角色

在 SQL Server 中创建服务主体(仅限 M2M)

  1. 使用 Entra ID 登录凭据连接到 SQL Server 实例。 必须具有创建新用户的权限。

  2. 为 Entra 应用创建新的登录名和用户。

  3. 向用户授予读取权限。

    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 工作区中执行以下操作:

  1. 在边栏中,单击“目录>添加>添加连接”。
  2. 对于 “连接类型”,请选择 “SQL Server”。
  3. 对于 身份验证类型,请选择 OAuth (U2M)或 OAuth 计算机到计算机 (M2M)。
  4. 输入以下连接属性:
    • 主机: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
    • 对于 OAuth 范围,请输入 https://database.windows.net/.default offline_access (仅限 U2M)。
  5. 对于 U2M,请单击“ 使用 Azure Entra ID 登录 ”并完成身份验证流。
  6. 单击“ 创建连接 ”,然后继续创建目录。

后续步骤

创建到 SQL Server 的连接后,请参阅 在 Microsoft SQL Server 上运行联合查询 ,以创建外部目录并查询数据。