问题::我试图将活动目录用户和组(从本地同步到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用户访问数据库?
我显然缺少基本的东西,只需要朝正确的方向指出一点即可。感谢您提供的任何帮助。
答案 0 :(得分:2)
首先为该池创建一个Active Directory管理员。
您也可以从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]