我在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中作为受邀访客用户。
我做错了什么?
答案 0 :(得分:1)
你不能直接做,你必须使用一个组。 在主AAD中创建一个组(即测试)并在那里添加访客用户。 接下来在SQL DB中创建一个用户(测试),该用户(测试)位于AAD组中并使用访客用户连接到此数据库
答案 1 :(得分:1)
所以最后我得到了它的工作。原因是邀请使用必须接受邀请。由于我邀请用户没有真正的电子邮件,我(或某人)不得不以某种方式“点击”邀请链接。我是通过PowerShell做到的。
需要执行以下步骤以授予已猜测用户的读取权限:
Install-Module AzureAd
Connect-AzureAD
New-AzureADMSInvitation -InvitedUserEmailAddress "<user_email>" -InviteRedirectUrl "https://portal.azure.com" -SendInvitationMessage $false -InvitedUserType "Guest"
邀请用户加入AAD。哪里&lt; user_email&gt; 邀请用户的电子邮件。此命令的结果将是具有属性的对象,其中之一是 - 邀请链接。
注意:首先在记事本中复制并格式化,然后在浏览器中复制并接受邀请,或将其发送给拥有此帐户的人。 CREATE USER [<user principal>] FROM EXTERNAL PROVIDER
。诀窍是&lt;受邀用户的用户主体&gt; 具有“EXT”格式。要获得正确的主体,只需执行Get-AzureADUser
- 此命令会列出具有真实用户主体名称的用户。示例:
真实电子邮件:user1@dep1.myorg.com
主要名称:user1_dep1.myorg.com#EXT#@targetazuread.onmicrosoft.com
复制相应的主体并运行CREATE USER...
对于我的情况,最后一步是授予新用户读取权限,因此我调用了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
希望这有帮助。