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

Sti*_*kys 2 azure azure-active-directory azure-sql-database azure-elasticpool

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

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

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

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

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

此处也概述了其原因是“不基于 Azure AD 帐户(包括 Azure SQL Server 管理员帐户)的用户无法创建基于 Azure AD 的用户,因为他们无权验证建议的数据库用户与 Azure AD 一起。

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

所以我最后的问题是:如何添加从本地同步到 Azure SQL 数据库(或弹性池)的 AD 用户,以便我可以使用该用户登录并开始向数据库添加其他 AD 用户?

我显然错过了一些基本的东西,只需要一个正确方向的点。感谢您提供的任何帮助。

Alb*_*llo 6

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

\n\n
    \n
  1. 在门户中选择您现有的弹性池
  2. \n
  3. 从 \xe2\x80\x9cOverview\xe2\x80\x9d,单击您的 \xe2\x80\x9cServer Name\xe2\x80\x9d
  4. \n
  5. 选择\xe2\x80\x9cActive Directory 管理\xe2\x80\x9d -> \xe2\x80\x9c设置管理\xe2\x80\x9d。您可以将单个用户或 AD 组设置为管理员。
  6. \n
\n\n

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

\n\n
> az sql server ad-admin create --object-id <Object-Id-OfUserOrGroup>\n    -s <Database-Name>\n    -g <Resource-Group>\n    -u <NameOrEmailAkaDisplayName>\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在,您应该能够通过 SSMS 使用 AD 管理员登录信息登录到弹性池中的数据库。在这种情况下,您可以通过 \xe2\x80\x9cActive Directory 密码身份验证\xe2\x80\x9d 登录,但也可以使用 \xe2\x80\x9c 通用身份验证\xe2\x80\x9d 或 \xe2\x80\x9c 集成身份验证\xe2\x80\x9d。

\n\n

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

\n\n
CREATE USER [SQL Developers] FROM EXTERNAL PROVIDER \nALTER ROLE db_datareader ADD MEMBER [SQL Developers]\n
Run Code Online (Sandbox Code Playgroud)\n

  • 阿尔贝托,非常感谢你。这完美地回答了我的问题。 (2认同)