2017-10-05 53 views
0

我在Azure SQL中创建了数据库并配置了Azure认证,因此我可以使用Azure AD帐户通过SQL Management Studio连接到数据库。然后,我从其他Azure的AD添加用户,当我执行CREATE USER [[email protected]] FROM EXTERNAL PROVIDER我得到错误无法通过Azure AD认证用户连接到Azure SQL认证

Principal '[email protected]' could not be found or this principal type is not supported.

该用户[email protected]是我Azure的AD作为特邀嘉宾的用户。

我在做什么错?

回答

0

所以最后我得到了它的工作。原因是受邀使用必须接受邀请。由于我邀请的用户没有真正的电子邮件,我(或某人)不得不以某种方式“点击”邀请链接。我通过PowerShell做到了。

这些步骤需要完成,以授予客串用户读取访问:

  1. 安装Azure的AD模块。我通过Connect-AzureAD
  2. 通过命令Install-Module AzureAd
  3. 连接到AAD你要邀请的用户做到了通过命令New-AzureADMSInvitation -InvitedUserEmailAddress "<user_email>" -InviteRedirectUrl "https://portal.azure.com" -SendInvitationMessage $false -InvitedUserType "Guest"邀请用户AAD。其中< user_email>邀请用户的电子邮件。该命令的结果将与属性对象对应,其中之一 - 邀请链接。 enter image description here 注意:首先将其复制到记事本中并格式化,然后在浏览器中复制并接受邀请,或将其发送给拥有此帐户的人。
  4. 现在要将用户添加到数据库中,我们必须执行T-SQL CREATE USER [<user principal>] FROM EXTERNAL PROVIDER。技巧是<用户主体>对于受邀用户具有“EXT”格式。要获得正确的委托人只需执行Get-AzureADUser - 此命令列出具有真实用户主体​​名称的用户。

Example:

Real email: [email protected]

Principal name: user1_dep1.myorg.com#EXT#@targetazuread.onmicrosoft.com

复制相对应的主并运行CREATE USER...

  • 最后步骤中,对于我的情况下,是准许新用户读取的权限,因此,我称为EXEC sp_addrolemember 'db_datareader', '<user principal>'

    因为我可以与受邀用户连接到数据库。此外,我知道通过Get-AzureADUser命令powershell(Azure AD模块)在哪里可以看到真正的用户主体。

  • 1

    你不能直接做,你必须改用组。 在主AAD中创建一个组(即测试)并在其中添加访客用户。 接下来在SQL数据库用户(测试)谁是AAD组中创建和连接到此DB使用guest用户

    +0

    你试过这个吗?对你起作用吗 ?我只是尝试过,它也不工作。我创建了组'external_db',邀请访客用户并将其添加到此组中,使用'CREATE USER [external_db] FROM EXTERNAL PROVIDER'将组添加到数据库,尝试连接到猜测用户,并且'用户登录失败'NT AUTHORITY \ ANONYMOUS LOGON”。 (Microsoft SQL Server,错误:18456)'。然后我在这个组中添加了本地用户,并连接到数据库。总结:Azure AD认证不适用于外部用户。 – Alezis

    0

    您需要创建用户数据库如下:

    CREATE USER [your.user_example.com#EXT#@<yourAzureSubscriptionPrefix>.onmicrosoft.com] FROM EXTERNAL PROVIDER 
    

    你也可以在Azure Active Directory中创建一个组,将外部用户添加到该组,然后将该组添加到数据库。

    CREATE USER [GroupFromAzureActiveDirectory] FROM EXTERNAL PROVIDER 
    

    希望这会有所帮助。

    +0

    谢谢,但我曾尝试过这种奇怪的语法,并得到相同的错误。此外,我没有发现任何官方的微软网页这样的语法,因此它看起来像我“黑客”。 – Alezis