Azure SQL - 如何将 AD 用户添加到 SQL 池数据库

Posted

技术标签:

【中文标题】Azure SQL - 如何将 AD 用户添加到 SQL 池数据库【英文标题】:Azure SQL - How to add AD users to SQL Pool Databases 【发布时间】:2019-06-27 19:51:21 【问题描述】:

问题:我正在尝试将 活动目录用户和组(从本地同步到 Azure AD)添加到 SQL 弹性池中的 SQL 数据库同一租户中的 Azure。我不想使用 SQL Server 身份验证(集成)。我似乎无法使用 AD 帐户(必需)登录以添加其他 AD 帐户。

本地目录已同步到 Azure AD。租户已配置并使用 O365 电子邮件,我们现在在弹性池中的租户中拥有多个 SQL 数据库。

注意:这不是托管 SQL 实例。当我直接管理弹性池或数据库时,我没有可用的菜单选项 Active Directory admin,as outlined here。

我的 AD 管理员帐户作为所有者添加到弹性池访问控制 (IAM)。

使用SSMS连接云端数据库,可以使用SQL Server Authentication连接数据库。当我尝试CREATE USER [username@mytenant.com] FROM EXTERNAL PROVIDER 时,我收到错误无法创建主体“用户名@mytenant.com”。只有与 Active Directory 帐户建立的连接才能创建其他 Active Directory 用户。

also outlined here 的原因是“不是基于 Azure AD 帐户(包括 Azure SQL 服务器管理员帐户)的用户,无法创建基于 Azure AD 的用户,因为他们没有使用 Azure AD 验证建议的数据库用户的权限。"

再次使用 SSMS 并以 username@mytenant.com 身份连接 Active Directory - Universal with MFA support,在尝试登录时我收到错误 用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败. (Microsoft SQL Server,错误:18456)。当我将 Connect to database 配置为 DBName 并将 AD 域名或租户 ID 配置为 mytenant.onmicrosoft.com 时,结果相同。即使使用我们在设置环境时创建的初始租户管理员帐户,我也会得到相同的结果。

所以我的问题在一天结束时 - 如何添加从本地同步的 AD 用户到 Azure SQL 数据库(或弹性池),以便我可以使用该用户登录并开始添加额外的 AD用户访问数据库?

我显然遗漏了一些基本的东西,只需要指出正确的方向。感谢您提供的任何帮助。

【问题讨论】:

【参考方案1】:

首先为池创建一个 Active Directory 管理员。

    在门户中选择您现有的弹性池 在“概览”中,点击您的“服务器名称” 选择“Active Directory 管理员”->“设置管理员”。您可以将单个用户或 AD 组设置为管理员。

您也可以通过 CLI 执行此操作:

> az sql server ad-admin create --object-id <Object-Id-OfUserOrGroup>
    -s <Database-Name>
    -g <Resource-Group>
    -u <NameOrEmailAkaDisplayName>

现在,您现在应该可以使用 AD 管理员通过 SSMS 登录到弹性池中的数据库。在这种情况下,您可以通过“Active Directory 密码验证”登录,但也可以使用“通用验证”或“集成验证”。

以 AD 管理员身份登录后,您可以创建与 AD 组对应的新 SQL Server 用户。请考虑我已经创建了一个名为“SQL Developers”的 AD 组,因此我可以将其映射到 Azure SQL Server 数据库并将其添加到 db_datareader 固定角色,如下所示:

CREATE USER [SQL Developers] FROM EXTERNAL PROVIDER 
ALTER ROLE db_datareader ADD MEMBER [SQL Developers]

【讨论】:

阿尔贝托,非常感谢。这完美地回答了我的问题。 感谢您的反馈。

以上是关于Azure SQL - 如何将 AD 用户添加到 SQL 池数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Azure AD MSAL 库将角色包含到访问令牌中

使用 Azure AD 授予用户权限

如何将自己的元素(文本等)添加到 Azure AD B2C 语言自定义?

Azure 数据库迁移服务安全问题

Azure AD 身份验证和为应用程序用户分配角色

Azure实践系列 2:Azure AD用户管理