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 库将角色包含到访问令牌中