结合使用 Microsoft Entra 身份验证与 Synapse SQL 进行身份验证
Microsoft Entra 身份验证是使用 Microsoft Entra ID 中的标识连接到 Azure Synapse Analytics 的一种机制。
使用 Microsoft Entra 身份验证,可以集中管理有权访问 Azure Synapse 的用户标识,以简化权限管理。 包括如下优点:
- 它提供了一种替代常规的用户名和密码身份验证的方法。
- 帮助阻止用户标识在服务器之间激增。
- 允许在单一位置中轮换密码。
- 客户可以使用外部 (Microsoft Entra ID) 组来管理权限。
- 通过启用集成的 Windows 身份验证和 Microsoft Entra ID 支持的其他形式的身份验证来消除存储密码。
- Microsoft Entra ID 支持对连接到 Azure Synapse 的应用程序进行基于令牌的身份验证。
- Microsoft Entra 身份验证支持对本地 Microsoft Entra ID 进行 ADFS(域联合)或本机用户/密码身份验证,无需进行域同步。
- Microsoft Entra ID 支持从 SQL Server Management Studio 进行连接,后者使用 Active Directory 通用身份验证,其中包括多重身份验证 (MFA)。 MFA 包括利用一系列简单的验证选项(包括电话、短信、带有 PIN 码的智能卡或移动应用通知)进行的强身份验证。 有关详细信息,请参阅 SSMS 支持将多重 Microsoft Entra 多重身份验证与 Synapse SQL 配合使用。
- Microsoft Entra ID 支持来自 SQL Server Data Tools (SSDT) 的使用 Active Directory 交互式身份验证的类似连接。 有关详细信息,请参阅 SQL Server Data Tools (SSDT) 中的 Microsoft Entra ID 支持。
配置步骤包括配置和使用 Microsoft Entra 身份验证的以下过程。
- 创建并填充 Microsoft Entra ID。
- 创建 Microsoft Entra 标识
- 在 Synapse 工作区中为所创建的 Microsoft Entra 标识分配角色
- 使用 Microsoft Entra 标识连接到 Synapse Studio。
Azure Synapse Analytics 中的 Microsoft Entra 直通
有了 Azure Synapse Analytics,就可以使用 Microsoft Entra 标识访问数据湖中的数据。
通过定义在不同的数据引擎中都需遵守的文件访问权限和数据访问权限,你可以简化数据湖解决方案,因为可以在单一位置定义这些权限,而不必在多个位置定义它们。
信任体系结构
以下概要关系图概述了将 Microsoft Entra 身份验证与 Synapse SQL 配合使用的解决方案体系结构。 若要支持 Microsoft Entr 本机用户密码,只需考虑云部分和 Azure AD/Synapse SQL。 若要支持联合身份验证(或 Windows 凭据的用户/密码),需要与 ADFS 块进行通信。 箭头表示通信路径。
下图表明允许客户端通过提交令牌连接到数据库的联合、信任和托管关系。 该令牌已由 Microsoft Entra ID 进行身份验证且受数据库信任。
客户 1 可以代表本机用户的 Microsoft Entra ID,也可以代表联合用户的 Microsoft Entra ID。 客户 2 代表包含已导入用户的可行解决方案;在本例中,来自联合 Microsoft Entra ID 且 ADFS 正与 Microsoft Entra ID 进行同步。
请务必了解,使用 Microsoft Entra 身份验证访问数据库需要托管订阅与 Microsoft Entra ID 相关联。 必须使用同一订阅来创建托管 Azure SQL 数据库或专用 SQL 池的 SQL Server。
管理员结构
使用 Microsoft Entra 身份验证时,Synapse SQL 会有两个管理员帐户:原始的 SQL 管理员(使用 SQL 身份验证)和 Microsoft Entra 管理员。 只有 Microsoft Entra 帐户的管理员可以在用户数据库中创建第一个包含 Microsoft Entra ID 的数据库用户。
Microsoft Entra 管理员登录名可以是 Microsoft Entra 用户或 Microsoft Entra 组。 当管理员为组帐户时,可以由任何组成员使用,因此可以为 Synapse SQL 实例启用多个 Microsoft Entra 管理员。
以管理员身份使用组帐户时,可以在 Microsoft Entra ID 中集中添加和删除组成员,无需在 Azure Synapse Analytics 工作区中更改用户或权限,从而提高可管理性。 无论何时都仅可配置一个 Microsoft Entra 管理员(一个用户或组)。
权限
若要新建用户,必须具有数据库中的 ALTER ANY USER
权限。 ALTER ANY USER
权限可以授予任何数据库用户。 ALTER ANY USER
权限还由 SQL 管理员和 Microsoft Entra 管理员帐户、具有该数据库的 CONTROL ON DATABASE
或 ALTER ON DATABASE
权限的数据库用户以及 db_owner
数据库角色的成员拥有。
若要在 Synapse SQL 中创建一个包含数据库用户,必须使用 Microsoft Entra 标识连接到数据库或实例。 若要创建第一个包含数据库用户,必须通过使用 Microsoft Entra 管理员(其是数据库的所有者)连接到数据库。
只有为 Synapse SQL 创建 Microsoft Entra 管理员之后,才能进行 Microsoft Entra 身份验证。 如果已从服务器删除 Microsoft Entra 管理员,先前在 Synapse SQL 内创建的现有 Microsoft Entra 用户将无法再使用其 Microsoft Entra 凭据连接到数据库。
“禁用本地身份验证”
通过仅允许 Microsoft Entra 身份验证,集中管理对 Azure Synapse 资源(如 SQL 池)的访问。 若要在创建工作区期间禁用 Synapse 中的本地身份验证,请选择“仅使用 Microsoft Entra 身份验证”作为身份验证方法。 尽管仍将创建 SQL 管理员登录,但它将被禁用。 Synapse 工作区的 Azure 所有者或参与者稍后可以启用本地身份验证。
你还可以在通过 Azure 门户创建工作区之后禁用本地身份验证。 在为 Azure Synapse 工作区创建 Microsoft Entra 管理员之前,无法禁用本地身份验证。
Microsoft Entra 功能和限制
可以在 Synapse SQL 中预配 Microsoft Entra ID 的以下成员:
- 本机成员:在托管域或客户域中的 Microsoft Entra ID 中创建的成员。 有关详细信息,请参阅将自已的域名添加到 Microsoft Entra ID。
- 联合域成员:在联合域的 Microsoft Entra ID 中创建的成员。 有关详细信息,请参阅在 Azure 中部署 Active Directory 联合身份验证服务。
- 作为原生域或联合域成员从其他 Azure AD 导入的成员。
- 以安全组形式创建的 Active Directory 组。
如果 Microsoft Entra 用户是具有
db_owner
服务器角色的组的成员,则此类用户无法在 Synapse SQL 中使用 CREATE DATABASE SCOPED CREDENTIAL 语法。 将出现以下错误:SQL Error [2760] [S0001]: The specified schema name 'user@mydomain.com' either does not exist or you do not have permission to use it.
请直接将
db_owner
角色授予个体 Microsoft Entra 用户以缓解 CREATE DATABASE SCOPED CREDENTIAL 问题。这些系统函数在 Microsoft Entra 主体下执行时,返回 NULL 值:
SUSER_ID()
SUSER_NAME(<admin ID>)
SUSER_SNAME(<admin SID>)
SUSER_ID(<admin name>)
SUSER_SID(<admin name>)
使用 Microsoft Entra 标识进行连接
Microsoft Entra 身份验证支持使用 Microsoft Entra 标识连接到数据库的以下方法:
- Microsoft Entra 密码
- Microsoft Entra 集成
- 使用 MFA 的 Microsoft Entra Universal
- 使用应用程序令牌身份验证
Microsoft Entra 服务器主体(登录名)支持以下身份验证方法:
- Microsoft Entra 密码
- Microsoft Entra 集成
- 使用 MFA 的 Microsoft Entra Universal
其他注意事项
- 为了增强可管理性,建议将一个专用 Microsoft Entra 组预配为管理员。
- 任何时候都只能为 Synapse SQL 池配置一个 Microsoft Entra 管理员(一个用户或组)。
- 为 Synapse SQL 添加 Microsoft Entra 服务器主体(登录名)之后,即可创建能够添加到
sysadmin
角色的多个 Microsoft Entra 服务器主体(登录名)。
- 为 Synapse SQL 添加 Microsoft Entra 服务器主体(登录名)之后,即可创建能够添加到
- 只有 Synapse SQL 的 Microsoft Entra 管理员最初可以使用 Microsoft Entra 帐户连接到 Synapse SQL。 Active Directory 管理员可以配置后续的 Microsoft Entra 数据库用户。
- 我们建议将连接超时值设置为 30 秒。
- SQL Server 2016 Management Studio 和 SQL Server Data Tools for Visual Studio 2015(版本 14.0.60311.1(2016 年 4 月)或更高版本)支持 Microsoft Entra 身份验证。 (用于 SqlServer 的 .NET Framework 数据提供程序(.NET Framework 4.6 或更高版本)支持 Microsoft Entra 身份验证)。 因此,这些工具和数据层应用程序(DAC 和 .BACPAC)的最新版本可以使用 Microsoft Entra 身份验证。
- 从版本 15.0.1 开始,sqlcmd 实用工具和 bcp 实用工具支持采用了 MFA 的 Active Directory 交互式身份验证。
- SQL Server Data Tools for Visual Studio 2015 至少需要 2016 年 4 月版的 Data Tools(版本 14.0.60311.1)。 目前,Microsoft Entra 用户不会显示在 SSDT 对象资源管理器中。 解决方法是在 sys.database_principals 中查看这些用户。
- Microsoft JDBC Driver 6.0 for SQL Server 支持 Microsoft Entra 身份验证。 另外,请参阅设置连接属性。
- Microsoft Entra 管理员帐户控制对专用池的访问,而 Synapse RBAC 角色用于控制对无服务器池的访问,例如使用 Synapse 管理员和 Synapse SQL 管理员角色。 有关通过 Synapse Studio 配置 Synapse RBAC 角色的详细信息,请参阅如何在 Synapse Studio 中管理 Synapse RBAC 角色分配。
- 如果将用户配置为 Microsoft Entra 管理员和 Synapse 管理员,然后从 Microsoft Entra 管理员角色中将该用户删除,其将失去对 Synapse 中专用 SQL 池的访问权限。 必须删除用户,然后将其添加到 Synapse 管理员角色,以重新获得对专用 SQL 池的访问权限。
后续步骤
- 有关 Synapse SQL 中的访问和控制的概述,请参阅 Synapse SQL 访问控制。
- 有关数据库主体的详细信息,请参阅主体。
- 有关数据库角色的详细信息,请参阅数据库角色。