近日,多名开发者反馈在使用 Microsoft Graph API 执行应用注册(App Registration)密码回收(Recycle password)操作时,遇到间歇性失败问题。该问题影响了部分依赖自动轮换客户端密钥的 DevOps 流程与安全合规策略,引发技术社区关注。微软官方已在服务健康仪表板中确认该问题,并着手调查根本原因。

背景:密码回收为何重要?

在 Azure Active Directory(Azure AD)中,应用注册用于标识和验证第三方应用或服务的身份。每个应用注册可以生成多个客户端密码(Client Secret,俗称“应用密码”),用于 OAuth 2.0 授权流程。出于安全最佳实践,企业通常会通过自动化脚本定期轮换这些密码——例如,调用 Microsoft Graph 的 POST /applications/{appId}/addPassword 接口创建新密码,随后使用 POST /applications/{appId}/removePasswordDELETE 操作删除旧密码。

所谓的“密码回收”(Recycle password)并非一个官方术语,但社区中常指代“删除旧密码并创建新密码”的原子化操作流程。Graph API 官方提供了 recyclePassword 端点(位于 /applications/{applicationId}/recyclePassword),其设计意图是让管理员能够在不影响现有令牌有效性的情况下,异步生成新密码并废弃旧密码。这一功能对高安全敏感度的应用尤为关键。

问题表现:操作返回不一致错误

根据多个技术论坛及 GitHub Issue 反馈,自2025年2月中旬起,调用 recyclePassword 端点时,约5%~10%的请求会遭遇失败。典型错误包括:

  • HTTP 500 内部服务器错误,返回 ServiceUnavailableInternalServerError
  • HTTP 403 权限错误,尽管调用方已拥有 Application.ReadWrite.AllApplication.ReadWrite.OwnedBy 权限;
  • 偶发性的超时或长时间无响应,导致客户端重试机制触发幂等性问题。

部分开发者指出,失败请求在重试后有时能成功,但重试间隔过短(如小于30秒)反而加剧了失败概率。更棘手的是,当回收操作失败时,原有旧密码可能已被标记为待删除状态但实际未清除,造成应用身份验证两难——既不能继续使用旧密码,也无法立即获得新密码。

影响范围:DevOps 流水线与合规审计受冲击

该问题对以下场景影响尤为显著:

  1. 自动密钥轮换脚本:许多企业使用 Azure DevOps、GitHub Actions 或 Terraform 定期调用 Graph API 回收密码。失败的轮换可能导致安全策略违规(例如密码超过90天未更新),并触发告警风暴。
  2. 多区域部署:跨区域复制应用注册配置时,某个区域的回收异常可能导致集群内凭据不一致,引发服务间调用失败。
  3. 审计日志:由于操作失败未留下完整的审计记录,安全团队难以追溯究竟是哪个环节导致凭据泄露风险。

据一名 Azure 技术顾问匿名透露,其客户在近期一次例行密码轮换中遭遇连续5次回收失败,被迫手动在Azure Portal中创建新密码,中断了近两个小时的自动化部署流程。

官方回应:初步定位为后端服务缓存问题

微软于2025年2月25日更新了Azure服务健康仪表板(Service Health Dashboard),将问题编号标记为 GRPH-CO2P。官方公告称:“我们已收到部分客户报告,当通过Microsoft Graph的‘recyclePassword’操作更新应用注册密码时,请求偶尔会失败。初步调查表明,此问题与后端服务节点间的缓存同步延迟有关,导致部分区域在处理回收请求时无法正确锁定资源。”

作为临时缓解措施,微软建议开发者:

  • 在重试逻辑中加入指数退避(Exponential Backoff),首次重试至少等待60秒;
  • 对于关键流程,优先采用“先创建新密码,后删除旧密码”的两步操作方法,而非使用 recyclePassword 端点;
  • 启用应用注册的 addIns 功能作为备用身份验证方法,降低对密码的依赖。

不过,社区中部分用户抱怨两步法增加了代码复杂度,且同样可能因并发问题产生孤儿密码。微软表示正在开发永久性补丁,预计在未来两周内通过渐进式部署推送至所有区域。

趋势观察:API 可靠性成为云服务新焦点

本次故障并非孤立事件。近半年,Microsoft Graph 的多个端点(包括 GET /applicationsPOST /servicePrincipals 等)均出现过性能下降或错误率升高的情况。随着企业加速向零信任架构迁移,API 驱动的自动化操作愈发频繁,云服务商需要在高可用性与快速迭代之间寻找更优平衡。

对于正在积极采用AI和自动化运维的团队而言,本次事件再次敲响警钟:关键路径上的任何间歇性故障,都可能通过自动化放大为全局风险。建议企业在设计超时与重试策略时,始终假定API调用可能一致性失败,并预留手动干预的应急通道。

截至发稿时,微软尚未公布完整的事故后分析(PIR)报告。我们将持续跟踪此问题的修复进展,并在第一时间为读者带来后续报道。