如何通过Graph API创建针对应用管理员角色的条件访问策略?
使用Graph API创建限制Application Administrator角色用户的条件访问策略
前置要求
- 账号需拥有全局管理员或条件访问管理员权限
- 可通过Graph Explorer(无需单独注册应用)或自定义应用调用API,需提前授予
Policy.ReadWrite.ConditionalAccess和Directory.Read.All权限
步骤1:获取所需ID信息
1.1 拿到Application Administrator角色ID
发送GET请求查询目录角色,定位到目标角色的ID:
GET https://graph.microsoft.com/v1.0/directoryRoles?$filter=displayName eq 'Application Administrator'
从返回结果里提取id字段,记为roleId。
1.2 获取目标应用ID(按需)
如果你的策略是限制用户管理特定应用,需要先拿到这些应用的服务主体ID:
GET https://graph.microsoft.com/v1.0/servicePrincipals?$filter=displayName eq '你的目标应用名称'
提取id字段,记为targetAppId。如果是要限制所有应用,这一步可以跳过,后续用["All"]代替。
1.3 获取特定用户ID(按需)
如果只是针对某几位拥有该角色的用户(而非整个角色组),查询这些用户的ID:
GET https://graph.microsoft.com/v1.0/users?$filter=userPrincipalName in ('user1@yourdomain.com','user2@yourdomain.com')
把每个用户的id收集起来,记为targetUserIds。
步骤2:构造条件访问策略的请求体
根据你在Azure门户配置的逻辑,构造对应的JSON请求体。以下是两种常见场景的示例:
场景1:限制整个Application Administrator角色用户访问指定应用(阻止管理)
{ "displayName": "限制Application Admin管理指定应用", "state": "enabled", "conditions": { "users": { "includeRoles": ["{roleId}"], // 替换为步骤1.1的roleId "excludeUsers": [] // 可添加需要豁免的用户ID }, "applications": { "includeApplications": ["{targetAppId}"], // 替换为步骤1.2的应用ID,或用["All"]限制所有应用 "excludeApplications": [] } }, "grantControls": { "operator": "OR", "builtInControls": ["block"] } }
场景2:仅针对特定几位Application Admin用户限制应用访问
把users部分替换为指定用户:
"users": { "includeUsers": ["user1-id", "user2-id"], // 替换为步骤1.3的targetUserIds "excludeUsers": [] }
步骤3:调用API创建策略
发送POST请求到条件访问策略端点:
POST https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies Content-Type: application/json // 粘贴上面构造的JSON请求体
验证策略有效性
创建成功后,会返回策略的id,用这个ID查询策略详情确认配置:
GET https://graph.microsoft.com/v1.0/identity/conditionalAccess/policies/{policy-id}
内容的提问来源于stack exchange,提问作者NaveenChalla
相关产品推荐
相关产品推荐

