来宾用户无法通过 Azure AD 身份验证连接到 Azure SQL

Ale*_*zis 1 azure azure-active-directory azure-sql-database

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

找不到主体“user@mytenant1.onmicrosoft.com”或不支持此主体类型。

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

我究竟做错了什么 ?

Ale*_*zis 5

所以最后我成功了。原因是邀请使用必须接受邀请。由于我邀请的用户没有真实的电子邮件,我(或某人)必须以某种方式“单击”邀请链接。我是通过 PowerShell 完成的。

需要执行以下步骤来授予访客用户读取访问权限:

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

例子:

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

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

复制对应的principal并运行CREATE USER...

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

    结果我可以与受邀用户连接到数据库。Get-AzureADUser我还知道在哪里可以通过powershell 命令(Azure AD 模块)查看真实的用户主体。