Azure中App Service发布后Authentication=Active Directory Default对应实体是什么?
问题解答
未知实体是什么?
当App Service部署后使用Authentication=Active Directory Default连接SQL时,这个“未知实体”其实是App Service的系统托管标识(System-assigned Managed Identity)。本地环境下该配置会自动使用你当前登录的Azure AD账号;但部署到App Service后,默认会切换为App Service自身的系统托管标识进行AD认证。
之前正常、重启后失效,大概率是这个托管标识的数据库访问权限被意外移除,或者标识本身的配置出现了变更。
如何查看该实体的访问权限?
1. 确认App Service的系统托管标识
- 登录Azure门户,打开你的App Service资源
- 左侧导航栏找到「标识」,切换到「系统分配」标签页
- 这里显示的名称就是App Service的系统托管标识名称(和App Service名称一致),状态应为「开启」
2. 查看该标识在SQL数据库中的权限
方式一:通过SQL查询验证
用SSMS或Azure门户的SQL数据库「查询编辑器」执行以下语句:
-- 列出数据库中所有AD相关的用户/主体 SELECT name, type_desc, authentication_type_desc FROM sys.database_principals WHERE type_desc IN ('EXTERNAL_USER', 'EXTERNAL_GROUPS'); -- 查看特定标识的权限(替换为你的App Service标识名称) USE [你的数据库名称]; EXEC sp_helprotect @username = '你的App Service名称';
方式二:通过Azure门户查看
- 打开你的SQL数据库资源,左侧导航栏找到「权限」
- 在「角色分配」中搜索你的App Service名称,即可看到它被分配的数据库角色(比如
db_datareader、db_datawriter等)
3. 额外排查点
- 检查SQL Server的「Azure Active Directory」->「管理员」是否已配置AD管理员(托管标识需要AD管理员存在才能完成授权)
- 确认SQL Server防火墙规则是否允许Azure服务访问(或包含App Service的出站IP)
- 查看App Service的「日志流」或「诊断日志」,获取更详细的连接错误信息,确认是认证失败还是权限不足
内容的提问来源于stack exchange,提问作者Oliver Nicholls
相关产品推荐
相关产品推荐

