将Azure Active Directory用户添加到Azure SQL数据库

Kod*_*ode 2 azure azure-active-directory azure-sql-database

我有一个Azure SQL Server,可以将SSMS插入其中。我还有一个Azure Active Directory,其用户名为mytestuser@mytest.onmicrosoft.com。我想添加此用户以对其Azure SQL Server中的数据库具有权限。第一步是尝试将其添加到Azure SQL Server的主要安全性中。

我已经在Master数据库上尝试了以下方法:

CREATE USER [mytestuser@mytest.onmicrosoft.com] FROM EXTERNAL PROVIDER;
CREATE USER mytestuser;
Run Code Online (Sandbox Code Playgroud)

但这会产生以下错误:

无法创建主体“ mytestuser@mytest.onmicrosoft.com”。只有使用Active Directory帐户建立的连接才能创建其他Active Directory用户。

“ mytestuser”不是有效的登录名,或者您没有权限。

如何将Azure Active Account添加到Azure SQL?一旦通过主服务器添加了它,使其显示在“安全性”中,我应该可以通过以下方式将其添加到任意数量的已创建数据库中:

CREATE USER mytestuser FROM LOGIN mytestuser; 
Run Code Online (Sandbox Code Playgroud)

Kod*_*ode 6

我能够连接并添加一个 Active Directory 用户,但它需要以下内容:

1) SQL Server Management Studio 2016 或更高版本具有 Active Directory 登录选项(我使用 Active Directory 密码身份验证)

2) 确保 Azure SQL Server 设置了 Azure Active Directory Admin。您将在步骤 1 中连接此帐户


M0-*_*-3E 5

在一天中浪费了4个小时尝试执行此操作之后,以下是对我有用的步骤:

  • 根据文档,将您的AD帐户设置为Active Directory管理员(按照此处文档中提到的步骤进行操作:https : //docs.microsoft.com/zh-cn/azure/sql-database/sql-database-aad-身份验证-配置,位于:为您的Azure SQL数据库服务器提供Azure Active Directory管理员)。
  • 在您的计算机上安装最新版本的SSMS(在我的情况下为18 RC1)。如果安装了现有版本,请将其卸载并“尝试”清除所有剩余的注册表项,请在此处列出:无法解析XML blob)。
  • 使用[集成了Active Directory]连接到服务器。如果您收到以下错误消息:[无法解析XML blob],请重复步骤2,或仅在网络上的其他VM /计算机上安装最新版本的SSMS(需要属于同一域)。
  • 连接后,执行以下SQL(来自官方文档):从EXTERNAL PROVIDER创建用户[username@domain.com];

我不敢相信我花了将近两个工作日来尝试做一些简单的事情,例如将用户添加到数据库中。这是难以置信的。(/ rantover)


小智 5

对我来说,有一个技巧,您可以使用 Active Directory - Integrated 在 SSMS 中执行一些步骤,并使用本地 SQL 身份验证执行一些步骤。这对我有用:

我在 Azure Sql Server 功能屏幕中设置了用于“Active Directory 管理员”设置的域帐户。然后我就可以使用在此帐户下运行的 SSMS 进行连接。

注意:为了简化以其他用户身份运行 SSMS,我使用了 runas:C:\Windows\System32\runas.exe /savecred /user:YourAdAdminUser@YourDomain.com "C:\Program Files (x86)\Microsoft SQL Server Management Studio 18 \Common7\IDE\Ssms.exe"

作为该用户运行,我使用 SSMS 身份验证选项“Active Directory - 集成”进行连接。从这里我在主数据库中运行了以下命令:

CREATE USER [YourAdAdminUser@YourDomain.com] FROM EXTERNAL PROVIDER WITH DEFAULT_SCHEMA = dbo
Run Code Online (Sandbox Code Playgroud)

然后,我使用本地 SQL 身份验证连接到 SSMS 中的同一服务器,使用设置为 Azure Sql Server 实例的“服务器管理员”的帐户登录。从这里我在主数据库中运行了更改角色命令:

ALTER ROLE dbmanager ADD MEMBER [YourAdAdminUser@YourDomain.com]
ALTER ROLE loginmanager ADD MEMBER [YourAdAdminUser@YourDomain.com]
Run Code Online (Sandbox Code Playgroud)

现在我可以返回到以 AD 管理员用户身份运行的 SSMS,从那里我可以运行上面的 CREATE USER 命令,但对于其他域帐户:

CREATE USER [OtherAccount@YourDomain.com] FROM EXTERNAL PROVIDER WITH DEFAULT_SCHEMA = dbo
Run Code Online (Sandbox Code Playgroud)

您可以决定运行上面的哪个数据库(例如,master 和您的非系统数据库)。

域用户现在可以使用“Active Directory - 集成”登录。请注意,如果您添加为 MFA 配置的域用户,则要使该用户使用 SSMS 登录,他们应选择 SSMS 身份验证选项“Azure Active Directory - 与 MFA 通用”,并且其用户名应带有“@”不是反斜杠。