无法通过Azure AD身份验证由已猜测的用户连接到Azure SQL

时间:2017-10-05 10:14:13

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

我在Azure SQL中创建了db并配置了Azure auth,因此我可以使用我的Azure AD帐户通过SQL Management Studio连接到db。然后我从其他Azure AD添加了用户,当我执行CREATE USER [user@mytenant1.onmicrosoft.com] FROM EXTERNAL PROVIDER时出现错误

  

无法找到校长'user@mytenant1.onmicrosoft.com'或不支持此主体类型。

此用户user@mytenant1.onmicrosoft.com在我的Azure AD中作为受邀访客用户。

我做错了什么?

3 个答案:

答案 0 :(得分:1)

你不能直接做,你必须使用一个组。 在主AAD中创建一个组(即测试)并在那里添加访客用户。 接下来在SQL DB中创建一个用户(测试),该用户(测试)位于AAD组中并使用访客用户连接到此数据库

答案 1 :(得分:1)

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

需要执行以下步骤以授予已猜测用户的读取权限:

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

    示例:

         

    真实电子邮件:user1@dep1.myorg.com

         

    主要名称:user1_dep1.myorg.com#EXT#@targetazuread.onmicrosoft.com

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

    1. 对于我的情况,最后一步是授予新用户读取权限,因此我调用了EXEC sp_addrolemember 'db_datareader', '<user principal>'

      结果我可以与受邀用户连接到db。此外,我知道在PowerShell的Get-AzureADUser命令(Azure AD模块)中查看真实用户主体​​的位置。

答案 2 :(得分:0)

您需要按如下方式为数据库创建用户:

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

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

CREATE USER [GroupFromAzureActiveDirectory] FROM EXTERNAL PROVIDER

希望这有帮助。