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

如何用C#及MS Graph实现Azure组PIM请求的自动审批

组PIM请求自动审批的实现方案

一、核心HTTP请求构造

组PIM请求的审批操作无需使用角色专属端点,统一通过approvals端点执行,具体格式如下:

PATCH https://graph.microsoft.com/beta/approvals/{approvalId}/steps/{approvalStepId}
Content-Type: application/json

{
    "reviewResult": "Approve", // 拒绝请改为"Deny"
    "justification": "自动审批:符合权限申请规则"
}

二、C# MS Graph SDK实现代码

从你已获取的assignmentScheduleRequests对象中提取关联的审批ID和步骤ID,再执行审批操作:

// 获取带审批关联信息的待审批组请求
var groupRequests = await GraphClient.IdentityGovernance.PrivilegedAccess.Group.AssignmentScheduleRequests
    .FilterByCurrentUserWithOn("approver")
    .GetAsFilterByCurrentUserWithOnGetResponseAsync(config => 
    {
        config.QueryParameters.Expand = ["approval", "group", "principal"]; // 扩展approval字段获取审批关联数据
    });

// 遍历处理每个待审批请求
foreach (var request in groupRequests.Value)
{
    if (request.Approval == null) continue; // 跳过无审批流程的请求

    var approvalId = request.Approval.Id;
    // 获取当前处于待处理状态的审批步骤(多步审批需根据业务逻辑调整筛选规则)
    var approvalSteps = await GraphClient.Approvals[approvalId].Steps.GetAsync();
    var targetStep = approvalSteps.Value.First(s => s.Status == "InProgress");

    // 构造审批更新内容
    var updateStep = new ApprovalStep
    {
        ReviewResult = "Approve", // 拒绝操作设为"Deny"
        Justification = "自动审批:权限申请符合预设策略"
    };

    // 执行审批操作
    await GraphClient.Approvals[approvalId].Steps[targetStep.Id].PatchAsync(updateStep);
}

三、官方文档参考说明

微软Graph Beta版文档中,以下内容可作为参考依据:

  • ApprovalStep 资源的PATCH方法:该方法适用于所有类型的审批流程(包括组PIM请求),明确了更新审批步骤的参数要求与逻辑。
  • Privileged Access Groups 章节:详细说明了组PIM请求与审批资源的关联关系,可了解assignmentScheduleRequest对象中approval属性的作用机制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:36:11