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

时间:2019-02-04 03:50:24

标签: azure azure-active-directory azure-sql-database

问题::我试图将活动目录用户和组(从本地同步到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身份验证连接到数据库。当我尝试CREATE USER [username@mytenant.com] FROM EXTERNAL PROVIDER时收到错误消息无法创建主体'username@mytenant.com'。只有使用Active Directory帐户建立的连接才能创建其他Active Directory用户。

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

再次使用SSMS并以用户名@ mytenant.com身份连接 Active Directory-具有MFA支持的通用 ,在登录尝试时出现错误用户'NT AUTHORITY \ ANONYMOUS LOGON'登录失败。 (Microsoft SQL Server,错误:18456)。将连接到数据库配置为DBName,将 AD域名或租户ID 配置为mytenant.onmicrosoft.com时,结果相同。即使使用设置环境时创建的初始承租人管理员帐户,我也会得到相同的结果。

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

我显然缺少基本的东西,只需要朝正确的方向指出一点即可。感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:2)

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

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

您也可以从CLI执行此操作:

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

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

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

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