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 数据库进行身份验证。
采取的步骤:
为 sql 服务器帐户创建了 AAD 管理员
使用该帐户打开到 sql 服务器的连接
运行 下面创建了一个与 azure 函数 app
同名的“包含用户”
从外部提供商创建用户 [func-utrngen-dev-001]
更改角色 db_datareader 添加成员 [func-utrngen-dev-001]
更改角色 db_datawriter 添加成员 [func-utrngen-dev-001]
确保在 Sql Server\Security\Firewalls 和虚拟网络 blas[ 下的 Azure 门户中将“允许 Azure 服务和资源访问此服务器”设置为“是” =16=]
确保系统 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>'
- I 运行 select * FROM sys.fn_get_audit_file(tsql 审核 blob 的路径)但结果只显示 activity 来自我登录的帐户SSMS
接下来我应该尝试什么?
解决方法是为数据库提供正确的名称 ♂️。越急越慢
我有一个 C# dotnet core 3.1 Azure Function App(名为 func-utrngen-dev-001),我想将其配置为通过托管身份向 Sql Azure 数据库进行身份验证。
采取的步骤:
为 sql 服务器帐户创建了 AAD 管理员
使用该帐户打开到 sql 服务器的连接
运行 下面创建了一个与 azure 函数 app
同名的“包含用户”从外部提供商创建用户 [func-utrngen-dev-001]
更改角色 db_datareader 添加成员 [func-utrngen-dev-001]
更改角色 db_datawriter 添加成员 [func-utrngen-dev-001]
确保在 Sql Server\Security\Firewalls 和虚拟网络 blas[ 下的 Azure 门户中将“允许 Azure 服务和资源访问此服务器”设置为“是” =16=]
确保系统 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>'
- I 运行 select * FROM sys.fn_get_audit_file(tsql 审核 blob 的路径)但结果只显示 activity 来自我登录的帐户SSMS
接下来我应该尝试什么?
解决方法是为数据库提供正确的名称 ♂️。越急越慢