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

将Azure Active Directory用户添加到Azure SQL数据库,azure,azure-active-directory,azure-sql-database,Azure,Azure Active Directory,Azure Sql Database,我有一个Azure SQL Server,可以将SSMS插入其中。我还有一个名为mytestuser@mytest.onmicrosoft.com. 我想将此用户添加到my Azure SQL Server中的数据库中以获得权限。第一步是尝试将其添加到Azure SQL Server的主安全性中 我已在主数据库上尝试了以下操作: CREATE USER [mytestuser@mytest.onmicrosoft.com] FROM EXTERNAL PROVIDER; CREATE USER

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

我已在主数据库上尝试了以下操作:

CREATE USER [mytestuser@mytest.onmicrosoft.com] FROM EXTERNAL PROVIDER;
CREATE USER mytestuser;
但这会产生以下错误:

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

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

如何将Azure活动帐户添加到Azure SQL?一旦我通过主控添加了它,使其显示在安全中,我应该能够通过以下方式将其添加到任意数量的已创建数据库中:

CREATE USER mytestuser FROM LOGIN mytestuser; 

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

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


2) 确保Azure SQL Server已设置Azure Active Directory管理员。在我一天中浪费了4个小时的时间尝试连接后,您将在步骤1中连接此帐户,以下是对我有效的步骤:

  • 根据文档,将您的AD帐户设置为Active Directory管理员(按照此处文档中提到的步骤操作:在:为Azure SQL数据库服务器配置Azure Active Directory管理员下)
  • 在您的计算机上安装最新版本的SSMS(在我的示例中是18 RC1)。如果已安装现有版本,请卸载它并“尝试”清除任何剩余的注册表项,请在此处列出:)
  • 使用[Active Directory Integrated]连接到服务器。如果收到以下错误消息:[未能解析XML blob],请重复步骤2,或者仅在网络上的其他VM/计算机上安装最新版本的SSMS(需要是同一域的一部分)
  • 连接后,执行以下SQL(来自官方文档) 创建用户[username@domain.com]来自外部供应商

我不敢相信我浪费了将近两个工作日来尝试做一些简单的事情,比如向db添加一个用户。这是难以置信的。(/rantover)

对我来说,有一个技巧,您可以使用Active Directory集成在SSM中执行一些步骤,还可以使用本地SQL身份验证执行一些步骤。以下是对我有效的方法:

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

注意:为了简化作为另一个用户运行SSM的过程,我使用了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-Integrated”进行连接。从这里,我在主数据库中运行了以下内容:

CREATE USER [YourAdAdminUser@YourDomain.com] FROM EXTERNAL PROVIDER WITH DEFAULT_SCHEMA = dbo
ALTER ROLE dbmanager ADD MEMBER [YourAdAdminUser@YourDomain.com]
ALTER ROLE loginmanager ADD MEMBER [YourAdAdminUser@YourDomain.com]
然后,我使用本地SQL身份验证连接到SSMS中的同一台服务器,并使用设置为Azure SQL server实例的“服务器管理员”的帐户登录。在这里,我在master db中运行了alter role命令:

CREATE USER [YourAdAdminUser@YourDomain.com] FROM EXTERNAL PROVIDER WITH DEFAULT_SCHEMA = dbo
ALTER ROLE dbmanager ADD MEMBER [YourAdAdminUser@YourDomain.com]
ALTER ROLE loginmanager ADD MEMBER [YourAdAdminUser@YourDomain.com]
现在我可以返回到以AD Admin用户身份运行的to SSMS,从那里我可以像上面一样运行CREATE user命令,但对于其他域帐户:

CREATE USER [OtherAccount@YourDomain.com] FROM EXTERNAL PROVIDER WITH DEFAULT_SCHEMA = dbo
您可以决定运行上述数据库(例如,主数据库和非系统数据库)


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

对于使用pyodbc而不是SSMS的用户

  • 转到Azure门户

  • 查找服务器

  • 'Active Directory管理员'

  • 将Admin设置为some。body@domain.com,

  • 登录到要授予访问权限的数据库:

    from pyodbc import connect,drivers
    
    conn = connect(driver=drivers()[0],
                   server='someserver.database.windows.net', 
                   database='somedb',
                   Authentication='ActiveDirectoryPassword',
                   user='some.body@domain.com',
                   PWD='somepassword')
    cursor = conn.cursor()
    
  • 将用户添加到sql数据库

    cursor.execute("CREATE USER [someone.else@anydomain.com] FROM EXTERNAL PROVIDER;")
    conn.commit()
    
  • 授予读取权限:

    cursor.execute("EXEC sp_addrolemember 'db_datareader', 'someone.else@anydomain.com';")
    conn.commit()
    
  • 概述 我遇到了同样的问题,并使用和解决了它。我无法使sql management studio部分正常工作,因为它不断抱怨我的设备未被批准,但是,命令行工具也可以正常工作

    使用Azure CLI创建Azure AD Admin 将广告用户添加到Azure SQL 我在Ubuntu上使用了SQL命令行工具,可以使用安装


    你可能需要切换到你的数据库而不是Master我也试过了。我将向Azure SQL添加广告管理员,并尝试使用与Azure SQL绑定的Azure Active Directory管理员登录。。。但尝试从Azure SQL执行此操作并不需要您首先在AAD身份验证下登录。您不能使用SQL身份验证登录,然后添加一个AAD用户。如果我需要一个AAD用户访问Azure SQL中的多个数据库,该选项是什么?我是否需要分别为各个数据库创建用户?我不能在一个地方创建它,以便访问多个数据库吗?这就是为什么需要在Master下创建它的原因吗?我为自己的用户启用了Azure AD Admin(name@domain.com)但是仍然无法登录Azure DWH。您可以添加要执行最后一步所需连接的数据库吗?是“主人”吗?还是另一个数据库?