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

Azure服务主体管理应用注册密钥时权限限制失效问题排查

问题分析与解决方案

核心问题根源

你的配置存在两个关键错误:过宽的全局权限覆盖了自定义角色限制,以及角色分配的范围逻辑颠倒,同时自定义角色的权限选品不符合密钥操作需求。


解决步骤

  1. 移除全局过宽权限
    立即撤销服务主体aadapp-manage的Application.ReadWrite.All应用权限——这个权限是全局级别的,会直接允许管理所有服务主体,完全无视你配置的自定义角色限制,这是测试3未被拦截的根本原因。

  2. 修正自定义角色权限
    你当前配置的microsoft.directory/servicePrincipals/synchronizationCredentials/manage是用于管理同步凭据的,并非服务主体的客户端密钥(Client Secret)。需给Got-ManagedSecrets-Role添加正确的密钥操作权限:

    • 添加密钥:microsoft.directory/servicePrincipals/addPassword/action(权限名称:Add password to servicePrincipal)
    • 删除旧密钥(若需轮换):microsoft.directory/servicePrincipals/removePassword/action(权限名称:Remove password from servicePrincipal)
  3. 修正PIM角色分配逻辑
    之前的角色分配范围完全搞反,正确配置应为:

    • 角色:选择Got-ManagedSecrets-Role
    • 分配对象:选定服务主体aadapp-manage
    • 范围类型:选择组,并指定aadgrp-managed-secrets(包含可管理的aadapp-user-01/02)
      此配置会让aadapp-manage仅能对该组内的服务主体执行密钥操作。
  4. 验证与同步等待
    配置完成后等待5-10分钟让Azure AD权限同步生效,再重新测试:

    • 测试1/2:aadapp-manage操作aadapp-user-01/02密钥,应返回成功
    • 测试3:aadapp-manage操作aadapp-user-03密钥,应返回403权限不足错误

额外注意事项

  • 确保自定义角色在目录级别创建,否则组范围限制无法生效
  • 调用Graph API时必须使用应用权限流(Client Credentials Flow)获取令牌
  • 若需查询服务主体信息,可添加Application.Read.All只读权限,该权限仅用于查询,不会赋予修改权限

内容的提问来源于stack exchange,提问作者Andre

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:34:54