Azure 函数管理标识到 Azure Sql - 用户“<令牌识别主体>”登录失败

时间:2021-07-28 18:50:42

标签: azure-active-directory azure-functions azure-managed-identity

我有一个 C# dotnet core 3.1 Azure Function App(名为 func-utrngen-dev-001),我想将其配置为通过托管标识对 Sql Azure 数据库进行身份验证。

采取的步骤:

  1. 为 sql server 帐户创建 AAD 管理员

  2. 使用该帐户打开与 sql server 的连接

  3. 运行以下命令以创建与 azure 函数应用程序同名的“包含用户”

    从外部提供商创建用户 [func-utrngen-dev-001]

    更改角色 db_datareader 添加成员 [func-utrngen-dev-001]

    更改角色 db_datawriter 添加成员 [func-utrngen-dev-001]

  4. 确保从 Sql Server\Security\Firewalls 和虚拟网络 blas 下的 Azure 门户将“允许 Azure 服务和资源访问此服务器”设置为“是”

  5. 确保在功能应用的身份刀片上将系统分配\状态设置为“开”

当函数应用尝试进行身份验证时,我收到以下错误:

<块引用>

用户“”登录失败

因此,我安装了 Microsoft 的“MSI 验证器”工具并执行了 here 所述的步骤。 我从 Kudu 会话的 Powershell 窗口运行以下命令:

<块引用>

./msi-validator.exe test-connection -r sql -e "Data Source=sql-utrngen-dev-001.database.windows.net;Initial Catalog=utrngen;"

它成功获得了一个令牌,但随后失败,并出现与我的函数应用程序相同的错误:

<块引用>

无法连接到 SQL。异常:用户登录失败 '<令牌识别主体>'

  1. 我运行了 select * FROM sys.fn_get_audit_file(path to tsql audit blob),但结果只显示了我登录到 SSMS 的帐户的活动

接下来我应该尝试什么?

1 个答案:

答案 0 :(得分:0)

修复是为数据库提供正确的名称?‍♂️。多急少速度