无法使用服务主体创建映射到 Azure AD 身份的 Azure SQL 数据库用户
Can't Create Azure SQL Database Users Mapped to Azure AD Identities using Service Principal
作为 Azure SQL 数据库自动化解决方案的一部分,我尝试使用 服务主体[=创建 Azure SQL 数据库用户 mapped to Azure AD Identities 40=].
结果是一条错误消息:此时找不到主体 'AAD_User_UPN_or_Group_Name'。请稍后再试。
可以使用我自己的用户帐户创建数据库用户,步骤完全相同。
请在下面找到更多详细信息:
- 服务主体是 Azure AD 安全组的成员
- 组被设置为 Azure SQL 服务器的 Active Directory 管理员
- 我自己的用户帐户也是该组的成员
- 服务主体在 Azure Active Directory
中具有 Directory Reader 和 Directory Writer 角色
- 我自己的用户帐户是普通会员,在 Azure Active Directory 中没有任何管理员角色
服务主体在 Azure SQL 数据库中执行以下 T-SQL 语句:
CREATE USER [AAD_User_UPN_or_Group_Name] FROM EXTERNAL PROVIDER;
返回的错误信息为:
Principal 'AAD_User_UPN_or_Group_Name' could not be found at this time. Please try again later.
当我自己的用户账号触发同样的T-SQL语句时,运行成功,创建用户。
非常感谢您的帮助或建议。
我在 Azure 支持下开了一张票,他们给了我这个解决方案。
sql 语句需要是:
-- type X for AAD Group
create user [myAADGroupName] with sid = <sid>, type = X;
-- type E for AAD User or Service Principal/MSI
create user [myAADUserName] with sid = <sid>, type = E;
大多数情况下需要从 AAD Principal ObjectID 生成 sid。但是,对于 Service Principals/MSIs,它需要来自 AppId。这是生成 sid 值的 powershell 脚本:
param (
[string]$objectIdOrAppId
)
[guid]$guid = [System.Guid]::Parse($objectIdOrAppId)
foreach ($byte in $guid.ToByteArray())
{
$byteGuid += [System.String]::Format("{0:X2}", $byte)
}
return "0x" + $byteGuid
作为 Azure SQL 数据库自动化解决方案的一部分,我尝试使用 服务主体[=创建 Azure SQL 数据库用户 mapped to Azure AD Identities 40=].
结果是一条错误消息:此时找不到主体 'AAD_User_UPN_or_Group_Name'。请稍后再试。
可以使用我自己的用户帐户创建数据库用户,步骤完全相同。
请在下面找到更多详细信息:
- 服务主体是 Azure AD 安全组的成员
- 组被设置为 Azure SQL 服务器的 Active Directory 管理员
- 我自己的用户帐户也是该组的成员
- 服务主体在 Azure Active Directory 中具有 Directory Reader 和 Directory Writer 角色
- 我自己的用户帐户是普通会员,在 Azure Active Directory 中没有任何管理员角色
服务主体在 Azure SQL 数据库中执行以下 T-SQL 语句:
CREATE USER [AAD_User_UPN_or_Group_Name] FROM EXTERNAL PROVIDER;
返回的错误信息为:
Principal 'AAD_User_UPN_or_Group_Name' could not be found at this time. Please try again later.
当我自己的用户账号触发同样的T-SQL语句时,运行成功,创建用户。
非常感谢您的帮助或建议。
我在 Azure 支持下开了一张票,他们给了我这个解决方案。
sql 语句需要是:
-- type X for AAD Group
create user [myAADGroupName] with sid = <sid>, type = X;
-- type E for AAD User or Service Principal/MSI
create user [myAADUserName] with sid = <sid>, type = E;
大多数情况下需要从 AAD Principal ObjectID 生成 sid。但是,对于 Service Principals/MSIs,它需要来自 AppId。这是生成 sid 值的 powershell 脚本:
param (
[string]$objectIdOrAppId
)
[guid]$guid = [System.Guid]::Parse($objectIdOrAppId)
foreach ($byte in $guid.ToByteArray())
{
$byteGuid += [System.String]::Format("{0:X2}", $byte)
}
return "0x" + $byteGuid