Azure Function Managed Identity 到 Azure Sql - 用户“<令牌识别主体>”登录失败

Rob*_*man 4 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 Validator”工具并执行了此处描述的步骤。我从 Kudu 会话的 Powershell 窗口运行了以下命令:

./msi-validator.exe test-connection -r sql -e "数据源=sql-utrngen-dev-001.database.windows.net;初始目录=utrngen;"

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

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

  1. 我运行了 select * FROM sys.fn_get_audit_file(tsql 审计 blob 的路径) 但结果仅显示我的帐户登录到 SSMS 的活动

接下来我应该尝试什么?

Rob*_*man 9

修复方法是为数据库 \xe2\x80\x8d\xe2\x99\x82\xef\xb8\x8f 提供正确的名称。欲速则不达

\n