如何以编程方式检查Azure用户/安全主体是否具备指定权限?求等效AWS方案
实现Azure中类似AWS simulate-principal-policy的权限验证
核心方案:Microsoft Graph API validatePermissions 端点
这个API可以直接传入用户ID和权限列表,批量验证用户是否拥有指定权限,完全匹配你需要的功能。
REST API 请求示例
POST https://graph.microsoft.com/v1.0/users/{user-id}/validatePermissions Content-Type: application/json { "permissions": [ { "permissionId": "e1fe6dd8-ba31-4d61-89e7-88639da4683d", // User.Read.All 权限ID "resourceAppId": "00000003-0000-0000-c000-000000000000" // Microsoft Graph 应用ID }, { "permissionId": "19dbc75e-c2e2-444c-a770-ec69d8559fc7", // Directory.ReadWrite.All 权限ID "resourceAppId": "00000003-0000-0000-c000-000000000000" } ] }
响应解析
返回结果会针对每个权限给出isGranted字段,直接标记该权限是否已授予用户,同时附带权限来源(如直接分配、组继承)等信息。
Azure CLI 快速验证
如果用命令行操作,可使用az ad user permission check命令:
az ad user permission check --id {user-object-id} --permissions @permissions.json
permissions.json的格式与上述Graph API请求体一致。
关键注意点
- 调用API需要持有
Directory.Read.All或Directory.AccessAsUser.All权限的令牌。 - 权限ID和资源应用ID需准确匹配:资源应用ID是目标服务的客户端ID(例如Microsoft Graph固定为
00000003-0000-0000-c000-000000000000),权限ID可通过az ad sp show --id {resource-app-id} --query "oauth2Permissions[].{id:id, name:name}"获取。 - 支持验证应用权限和委派权限,只需在请求体中添加
permissionType字段,可选值为Application或Delegated。
内容的提问来源于stack exchange,提问作者Rohith Paul
相关产品推荐
相关产品推荐

