Microsoft Entra 身份验证作为 SQL 身份验证的替代方法
适用于:✅ SQL 分析端点和 Microsoft Fabric 中的仓库
本文介绍用户和客户在 Microsoft Fabric 中从 SQL 身份验证过渡到 Microsoft Entra 身份验证的技术方法。 Microsoft Entra 身份验证是在 SQL 身份验证中使用的用户名和密码的替代方法,可以登录到 Lakehouse 的 SQL 分析终结点或 Microsoft Fabric 中的仓库。 Microsoft Entra 身份验证是我们推荐的方法,它对于创建安全数据平台至关重要。
本文重点介绍 Microsoft Entra 身份验证,它可作为 Microsoft Fabric 项(如仓库或 Lakehouse SQL 分析终结点)中的 SQL 身份验证的替代方法。
Fabric 中的 Microsoft Entra 身份验证的优点
Microsoft Fabric 的核心原则之一是通过设计确保安全。 Microsoft Entra 能够确保强大的数据保护、治理和合规性,它对于保护 Microsoft Fabric 的安全性不可或缺。
Microsoft Entra 在 Microsoft Fabric 的安全性方面发挥着重要作用,原因有几个:
- 身份验证:使用 Microsoft Entra ID 验证用户和服务主体,并授予 Fabric 中操作的访问令牌。
- 安全访问:从任何设备或网络安全连接到云应用,保护对 Fabric 发出的请求。
- 条件访问:管理员可以设置用于评估用户登录上下文、控制访问权限或强制实施额外验证步骤的策略。
- 集成:Microsoft Entra ID 可与所有 Microsoft SaaS 产品/服务无缝配合使用,包括 Fabric,允许跨设备和网络轻松访问。
- 广泛平台:通过任何方法(无论是通过 Fabric 门户、SQL 连接字符串、REST API 还是 XMLA 终结点),使用 Microsoft Entra ID 访问 Microsoft Fabric。
Microsoft Entra 采用完全零信任策略,为仅限于用户名和密码的传统 SQL 身份验证提供一种更好的替代方法。 这种方法:
- 防止用户模拟。
- 实现精细的访问控制,考虑到用户标识、环境、设备等因素。
- 支持高级安全功能,例如 Microsoft Entra 多重身份验证。
Fabric 配置
用于仓库或 Lakehouse SQL 分析终结点的 Microsoft Entra 身份验证需要在租户和工作区设置中进行配置。
租户设置
你租户中的 Fabric 管理员必须允许服务主体名称 (SPN) 访问 Fabric API,这是 SPN 将 SQL 连接字符串连接到 Fabric 仓库或 SQL 分析终结点项所必需的。
此设置位于开发者设置部分,标记为“服务主体可以使用 Fabric API”。 请确保它已启用。
工作区设置
工作区中的 Fabric 管理员必须授予用户或 SPN 访问 Fabric 项的访问权限。
有两种方法可以授予用户/SPN 访问权限:
向用户/SPN 成员身份授予角色:任何工作区角色(管理员、成员、参与者或观看者)都有足够的权限使用 SQL 连接字符串连接到仓库或湖屋中的项。
- 在工作区中的“管理访问”选项中,分配“参与者”角色。 有关详细信息,请参阅服务角色。
将用户/SPN 分配给特定项:授予对湖屋的特定仓库或 SQL 分析终结点的访问权限。 Fabric 管理员可从不同的权限级别中进行选择。
- 导航至相关的仓库或 SQL 分析终结点项。
- 选择“更多选项”,然后选择“管理权限”。 选择“添加用户”。
- 在“向人员授予访问权限”页上添加用户/SPN。
- 为 用户/SPN 分配必要的权限。 选择“其他权限”,仅授予连接权限。
可以更改系统授予用户或 SPN 的默认权限。 使用 T-SQL GRANT 和 DENY 命令,根据需要更改权限,或者使用 ALTER ROLE 将成员身份添加到角色。
目前,SPN 没有作为用户帐户对 GRANT
/DENY
进行详细权限配置的功能。
支持用户标识和服务主体名称 (SPN)
在与仓库和 SQL 分析终结点项的 SQL 连接中,Fabric 本机支持 Microsoft Entra 用户和服务主体名称(SPN)的身份验证和授权。
- 用户标识是组织中的每个用户的唯一凭据。
- SPN 表示租户中的应用程序对象,作为应用程序实例的标识,承担为应用程序进行身份验证和授权的角色。
支持表格格式数据流 (TDS)
使用连接字符串连接时,Fabric 将使用与 SQL Server 相同的表格格式数据流 (TDS) 协议。
Fabric 与任何能够连接到 SQL 数据库引擎产品的应用程序或工具都兼容。 与 SQL Server 实例连接类似,TDS 在 TCP 端口 1433 上运行。 有关 Fabric SQL 连接以及 SQL 连接字符串位置的详细信息,请参阅连接。
示例连接字符串如下所示:<guid_unique_your_item>.datawarehouse.fabric.microsoft.com
。
应用程序和客户端工具可以在连接字符串中设置 Authentication
连接属性,以选择 Microsoft Entra 身份验证模式。 下表详细介绍了不同的 Microsoft Entra 身份验证模式,包括对 Microsoft Entra 多重身份验证 (MFA) 的支持。
身份验证模式 | 方案 | 注释 |
---|---|---|
Microsoft Entra 交互式 | 在用户身份验证可以交互进行的情况下,或在可以接受手动干预凭据验证时,由应用程序或工具使用。 | 激活 MFA 和 Microsoft Entra 条件访问策略以强制实施组织规则。 |
Microsoft Entra 服务主体 | 由应用程序用于安全身份验证,无需人工干预,最适合应用程序集成。 | 建议启用 Microsoft Entra 条件访问策略。 |
Microsoft Entra 密码 | 如果应用程序由于不兼容而无法使用基于 SPN 的身份验证,或者需要多个用户的通用用户名和密码,或者其他方法不可行时。 | MFA 必须关闭,而且无法设置任何条件访问策略。 建议你在选择此解决方案之前,先与客户的安全团队进行验证。 |
Microsoft Entra 身份验证的驱动程序支持
大多数 SQL 驱动程序最初都支持 Microsoft Entra 身份验证,最近的更新还扩展了兼容性,包括基于 SPN 的身份验证。 此增强功能简化了各个应用程序和工具向 Microsoft Entra 身份验证的迁移,可通过驱动程序升级、增加对 Microsoft Entra 身份验证的支持来实现。
但是,有时我们必须调整其他设置,例如启用某些端口或防火墙,以便进行主机上的 Microsoft Entra 身份验证。
应用程序和工具必须将驱动程序升级到支持 Microsoft Entra 身份验证的版本,并在其 SQL 连接字符串中添加身份验证模式关键字,如 ActiveDirectoryInteractive
、ActiveDirectoryServicePrincipal
或 ActiveDirectoryPassword
。
Fabric 可以兼容 Microsoft 的本机驱动程序,包括 OLE DB、Microsoft.Data.SqlClient
、通用驱动程序(如 ODBC 和 JDBC)。 应用程序向使用 Fabric 的过渡可通过重新配置来管理,以便使用基于 Microsoft Entra ID 的身份验证。
有关详细信息,请参阅连接到 Microsoft Fabric 中的数据仓库。
Microsoft OLE DB
OLE DB Driver for SQL Server 是专为 OLE DB 设计的独立数据访问 API,最初随 SQL Server 2005 (9.x) 一同发布。 此后,版本 18.5.0 提供的扩展功能包括了基于 SPN 的身份验证,为早期版本中的现有身份验证方法提供了补充。
身份验证模式 | SQL 连接字符串 |
---|---|
Microsoft Entra 交互式 | Microsoft Entra 交互式身份验证 |
Microsoft Entra 服务主体 | Microsoft Entra 服务主体身份验证 |
Microsoft Entra 密码 | Microsoft Entra 用户名和密码身份验证 |
如需将 OLE DB 与基于 SPN 的身份验证配合使用的 C# 代码片段,请参阅 System.Data.OLEDB.Connect.cs。
Microsoft ODBC 驱动程序
Microsoft ODBC Driver for SQL Server 是单个动态链接库 (DLL),它包含对使用本机代码 API 连接到 SQL Server 的应用程序的运行时支持。 建议使用最新版本的驱动程序,以便将应用程序与 Fabric 集成。
有关结合使用 Microsoft Entra ID 与 ODBC 驱动程序的详细信息,请参阅将 Microsoft Entra ID 与 ODBC 驱动程序配合使用的示例代码。
身份验证模式 | SQL 连接字符串 |
---|---|
Microsoft Entra 交互式 | DRIVER={ODBC Driver 18 for SQL Server};SERVER=<SQL Connection String>;DATABASE=<DB Name>;UID=<Client_ID@domain>;PWD=<Secret>;Authentication=ActiveDirectoryInteractive |
Microsoft Entra 服务主体 | DRIVER={ODBC Driver 18 for SQL Server};SERVER=<SQL Connection String>;DATABASE=<DBName>;UID=<Client_ID@domain>;PWD=<Secret>;Authentication=ActiveDirectoryServicePrincipal |
Microsoft Entra 密码 | DRIVER={ODBC Driver 18 for SQL Server};SERVER=<SQL Connection String>;DATABASE=<DBName>;UID=<Client_ID@domain>;PWD=<Secret>;Authentication=ActiveDirectoryPassword |
如需获取将 ODBC 与基于 SPN 的身份验证配合使用的 python 代码片段,请参阅 pyodbc-dw-connectivity.py。
Microsoft JDBC Driver
Microsoft JDBC Driver for SQL Server 是一个 Type 4 JDBC 驱动程序,它通过 Java 平台中可用的标准 JDBC 应用程序编程接口 (API) 提供数据库连接。
从版本 9.2 开始,mssql-jdbc
可以支持 ActiveDirectoryInteractive
和 ActiveDirectoryServicePrincipal
,另外在版本 12.2 及更高版本中,还可以支持 ActiveDirectoryPassword
。 此驱动程序需要附加的 jar 作为依赖项,它们必须与应用程序中使用的版本 mssql-driver
兼容。 有关详细信息,请参阅 JDBC 驱动程序的功能依赖项和客户端设置要求。
身份验证模式 | 详细信息 |
---|---|
Microsoft Entra 交互式 | 使用 ActiveDirectoryInteractive 身份验证模式进行连接 |
Microsoft Entra 服务主体 | 使用 ActiveDirectoryServicePrincipal 身份验证模式进行连接 |
Microsoft Entra 密码 | 使用 ActiveDirectoryPassword 身份验证模式进行连接 |
如需获取将 JDBC 与基于 SPN 的身份验证配合使用的 java 代码片段,请参阅 fabrictoolbox/dw_connect.java 和 sample pom file pom.xml。
Microsoft.Data.SqlClient in .NET Core (C#)
Microsoft.Data.SqlClient 是 Microsoft SQL Server 和 Azure SQL Database 的数据提供程序。 它是在 .NET Framework 和 .NET Core 中独立运行的两个 System.Data.SqlClient
组件的联合,提供一系列的类,用于访问 Microsoft SQL Server 数据库。 建议对所有新开发的项目使用 Microsoft.Data.SqlClient
。
身份验证模式 | 详细信息 |
---|---|
Microsoft Entra 交互式 | 使用交互式身份验证 |
Microsoft Entra 服务主体 | 使用服务主体身份验证 |
Microsoft Entra 密码 | 使用密码身份验证 |
使用 SPN 的代码片段: