问题:我正在尝试添加active directory用户&组(从on-prem同步到Azure AD)到同一租户中Azure上SQL弹性池中存在的SQL数据库。我不想使用SQL Server身份验证(集成)。我似乎无法使用AD帐户登录(必需)以添加其他AD帐户。
内部部署目录已同步到Azure AD。租户已配置并使用O365电子邮件,我们现在在租户中的弹性池中有几个SQL数据库。
注意:这不是托管SQL实例。当我直接管理弹性池或数据库时,我没有菜单选项Active Directory admin可用,如下所述。
我的AD管理员帐户作为所有者添加到弹性池访问控制(IAM)中。
使用SSMS连接到云中的数据库,可以使用SQL Server身份验证连接到数据库。当我尝试CREATE USER [username@mytenant.com] FROM EXTERNAL PROVIDER
时,我收到错误Principal'username@mytenant.com"无法创建。只有使用Active Directory帐户建立的连接才能创建其他Active Directory用户
原因也在这里概述,">非基于Azure AD帐户(包括Azure SQL server管理员帐户)的用户无法创建基于Azure AD的用户,因为他们无权使用Azure AD验证提议的数据库用户。">
再次使用SSMS并连接Active Directory-支持MFA的通用username@mytenant.com,在尝试登录时,我收到错误用户"NT AUTHORITY\ANOYMOUS LOGON"登录失败。(Microsoft SQL Server,错误:18456)。当我将连接到数据库配置为DBName,将AD域名或租户ID设置为mytenant.onmicrosoft.com时,结果相同。即使使用我们在设置环境时创建的初始租户管理员帐户,我也会得到相同的结果。
因此,我在一天结束时的问题是-我如何将从on-prem同步的AD用户添加到Azure SQL数据库(或弹性池),以便我可以与该用户一起登录并开始向数据库添加其他AD用户
我显然错过了一些基本的东西,只需要一个正确的方向。感谢您提供的任何帮助。
首先为池创建一个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>
现在,您应该能够通过SSMS使用AD Admin登录登录到弹性池中的数据库。在这种情况下,您可以通过"Active Directory密码身份验证"登录,但也可以使用"通用身份验证"或"集成身份验证"。
以AD管理员身份登录后,可以创建与AD组相对应的新SQL Server USER。请考虑我已经创建了一个名为"SQL Developers"的AD组,这样我就可以将其映射到Azure SQL Server数据库,并将其添加到db_datarader固定角色中,如下所示:
CREATE USER [SQL Developers] FROM EXTERNAL PROVIDER
ALTER ROLE db_datareader ADD MEMBER [SQL Developers]