Azure 的 Azure 函数托管标识 Sql - 用户“<token-identified principal>”登录失败

Azure Function Managed Identity to Azure Sql - Login failed for user '<token-identified principal>'

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

采取的步骤:

  1. 为 sql 服务器帐户创建了 AAD 管理员

  2. 使用该帐户打开到 sql 服务器的连接

  3. 运行 下面创建了一个与 azure 函数 app

    同名的“包含用户”

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

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

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

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

  5. 确保系统 assigned\Status 在函数应用程序的身份 blade

    上设置为“开启”

当函数应用程序尝试进​​行身份验证时,出现以下错误:

Login failed for user '<token-identified principal>'

所以我安装了微软的“MSI Validator”工具,并通过here所述的步骤运行。 我 运行 来自 Kudu session 的 Powershell window 的以下内容:

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

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

Unable to connect to SQL. Exception : Login failed for user '<token-identified principal>'

  1. I 运行 select * FROM sys.fn_get_audit_file(tsql 审核 blob 的路径)但结果只显示 activity 来自我登录的帐户SSMS

接下来我应该尝试什么?

解决方法是为数据库提供正确的名称 ‍♂️。越急越慢