将Azure Active Directory用户添加到Azure SQL数据库
我有一个Azure SQL Server,可以将SSMS插入其中。我还有一个名为mytestuser@mytest.onmicrosoft.com. 我想将此用户添加到my Azure SQL Server中的数据库中以获得权限。第一步是尝试将其添加到Azure SQL Server的主安全性中 我已在主数据库上尝试了以下操作:将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
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的用户
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()
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()
你可能需要切换到你的数据库而不是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。您可以添加要执行最后一步所需连接的数据库吗?是“主人”吗?还是另一个数据库?