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

时间:2017-07-11 21:27:57

标签: azure azure-active-directory azure-sql-database

我有一个Azure SQL Server,可以将SSMS加入其中。我还有一个Azure Active Directory,其用户名为mytestuser@mytest.onmicrosoft.com。我想添加此用户以获取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 Active Account添加到Azure SQL?一旦我通过Master添加它以便它显示在Security中,我应该能够通过以下方式将它添加到任意数量的已创建数据库中:

CREATE USER mytestuser FROM LOGIN mytestuser; 

5 个答案:

答案 0 :(得分:2)

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

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

2)确保Azure SQL Server具有Azure Active Directory管理员集。您将此帐户连接到第1步

答案 1 :(得分:1)

在一天中浪费了4个小时尝试这样做之后,以下是对我有用的步骤:

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

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

答案 2 :(得分:1)

对我来说,有一个技巧,您可以在使用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” < / p>

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

CREATE USER [YourAdAdminUser@YourDomain.com] FROM EXTERNAL PROVIDER WITH DEFAULT_SCHEMA = dbo

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

ALTER ROLE dbmanager ADD MEMBER [YourAdAdminUser@YourDomain.com]
ALTER ROLE loginmanager ADD MEMBER [YourAdAdminUser@YourDomain.com]

现在,我可以回到以AD Admin用户身份运行的SSMS,然后可以从上面运行CREATE USER命令,但对于其他域帐户:

CREATE USER [OtherAccount@YourDomain.com] FROM EXTERNAL PROVIDER WITH DEFAULT_SCHEMA = dbo

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

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

答案 3 :(得分:1)

对于那些使用pyodbc代替SSMS的人

  1. 转到Azure门户,

  2. 查找服务器

  3. “ Active Directory管理员”,

  4. 将“管理员”设置为some.body@domain.com,

  5. 登录到您要授予访问权限的数据库:

    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()
    
  6. 将用户添加到sql数据库

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

    cursor.execute("EXEC sp_addrolemember 'db_datareader', 'someone.else@anydomain.com';")
    conn.commit()
    

答案 4 :(得分:1)

概述

我遇到了同样的问题,并使用Azure CLIsqlcmd解决了该问题。我无法使sql management studio零件正常工作,因为它一直抱怨我的设备未获批准,但是,使用命令行工具也是如此!

使用Azure CLI创建Azure AD Admin

# Get objectId of the user you want to be admin
objectid=$(az ad user list --filter "userPrincipalName eq 'youruser@yourdomain.dk'" --query [0].objectId -o tsv)

# Setting user as admin
az sql server ad-admin create --display-name youruser@yourdomain.dk --object-id $(objectid) --resource-group yourresourcegroup --server sqlservername --subscription "Subscription name or id"

将AD用户添加到Azure SQL

我在Ubuntu上使用了SQL命令行工具,可以使用documentation进行安装。

# Installing SQL command line on Ubuntu 20.04
sudo curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql17
sudo ACCEPT_EULA=Y apt-get install mssql-tools

# Logging in to Azure SQL (-G means that you use Azure AD)
/opt/mssql-tools/bin/sqlcmd -U youruser@yourdomain.dk -P yourpassword -S sqlservername.database.windows.net -d master -G

# Creating a user (If using SSMS, you may experience problems)
1>CREATE USER [newuser@yourdomain.dk] FROM EXTERNAL PROVIDER;
2>GO