You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过App Service系统托管标识连接Azure SQL数据库(AD集成认证)

解决Linux App Service系统托管标识连接Azure SQL的AD集成认证问题

针对你的场景,不需要在连接字符串中填写User ID,但需要调整认证参数并完成数据库层面的身份配置,以下是具体解决方案:

1. 修正连接字符串

将连接字符串中的Authentication="Active Directory Integrated"替换为Authentication="Active Directory Managed Identity",同时完全移除User ID参数,最终示例如下:

Server=tcp:foo.database.windows.net,1433;Initial Catalog=foo-db;Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication="Active Directory Managed Identity";

原因:Active Directory Integrated主要适配Windows域环境的账号认证,Linux环境下的托管标识需要使用Active Directory Managed Identity这个专属认证类型。

2. 完成数据库层面的用户配置

虽然你已给托管标识分配了SQL DB Contributor角色,仍需在目标数据库内创建对应外部用户并授予操作权限:

  • 使用具有数据库管理员权限的账号登录Azure SQL,执行以下SQL:
CREATE USER [你的App Service实例名称] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [你的App Service实例名称];
ALTER ROLE db_datawriter ADD MEMBER [你的App Service实例名称];
-- 可根据业务需求添加db_owner等其他权限角色

系统分配的托管标识名称与你的App Service实例名称完全一致,直接填写即可。

3. 排查常见验证点

  • 确认App Service的系统分配托管标识处于启用状态(状态为On)
  • 检查VNet集成配置,确保App Service能正常访问SQL Server的1433端口
  • 验证数据库驱动版本:建议使用最新版的ODBC或.NET驱动,旧版本可能不支持Linux环境下的托管标识认证

内容的提问来源于stack exchange,提问作者w.brian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 05:00:14