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

通过Microsoft Graph API修改Azure PIM组的审批和通知设置

通过Microsoft Graph API修改Azure PIM组的审批和通知设置

嘿,刚好我对这块比较熟悉,来给你唠唠怎么用Microsoft Graph API搞定Azure PIM组的审批和通知设置,Python完全可以实现哈!

首先明确:针对Azure AD PIM里组的审批、通知配置,Graph API是有对应支持的,核心是操作privilegedAccess/group下的角色设置资源。下面一步步给你拆解:

一、先搞清楚关键资源ID

要修改设置,你得先拿到两个关键ID:

  • 组的Object ID:就是你要配置的目标组在Azure AD里的唯一ID,这个可以通过Graph API的GET /groups端点查询得到。
  • 角色设置ID:每个组在PIM里的角色(比如成员、所有者)都对应一个独立的设置ID。你可以通过以下端点获取目标组的所有角色设置:
    GET /privilegedAccess/group/resources/{group-object-id}/roleSettings
    
    调用后会返回该组所有PIM角色的配置,找到你要修改的角色(比如对应“成员”权限的那条),记下它的id字段。

二、修改审批设置

拿到角色设置ID后,就可以用PATCH端点来更新审批规则了。核心是修改approvalSettings属性,比如配置单阶段审批、指定审批人、设置超时时间等。

Python示例(用Microsoft Graph SDK)

首先确保你已经安装了Graph SDK:

pip install msgraph-sdk

然后编写代码(注意要先完成身份验证,比如用客户端凭据流):

from msgraph import GraphServiceClient
from msgraph.generated.models.unified_role_setting import UnifiedRoleSetting
from msgraph.generated.models.approval_settings import ApprovalSettings
from msgraph.generated.models.approval_stage import ApprovalStage

# 初始化Graph客户端(这里需要替换成你的身份验证凭据)
graph_client = GraphServiceClient(credentials=your_authentication_credentials)

# 替换成你的目标组ID和角色设置ID
group_id = "your-group-object-id-here"
role_setting_id = "your-role-setting-id-here"

# 构造要更新的审批配置
updated_role_setting = UnifiedRoleSetting(
    approval_settings=ApprovalSettings(
        approval_mode="SingleStage",  # 可选NoApproval(无需审批)、SingleStage(单阶段)
        approval_stages=[
            ApprovalStage(
                approval_stage_time_out_in_days=2,  # 审批超时时间(天)
                is_approval_required=True,
                is_approval_required_for_extension=True,  # 延长权限时是否需要审批
                primary_approvers=[
                    # 指定审批人,支持用户或组
                    {"id": "approver-user-object-id", "type": "User"},
                    {"id": "approver-group-object-id", "type": "Group"}
                ]
            )
        ]
    )
)

# 发送更新请求
await graph_client.privileged_access.group.resources.by_resource_id(group_id).role_settings.by_role_setting_id(role_setting_id).patch(updated_role_setting)

三、修改通知设置

通知设置同样是在UnifiedRoleSetting里,通过notificationSettings属性配置,你可以和审批设置一起在同一个PATCH请求里更新。比如:

from msgraph.generated.models.notification_settings import NotificationSettings

# 在之前的updated_role_setting里添加通知配置
updated_role_setting.notification_settings = NotificationSettings(
    notify_requestor=True,  # 通知请求权限的用户
    notify_approvers=True,  # 通知审批人
    notify_administrators=True,  # 通知管理员
    notification_recipients="AdminAndRequestor",  # 可选Admin、Requestor、AdminAndRequestor
    notify_managers=False
)

四、权限要求

别忘了,你的应用必须具备PrivilegedAccess.ReadWrite.AzureADGroup权限,而且这个权限需要全局管理员或特权角色管理员来授予(需要管理员同意)。如果调用时遇到权限错误,先检查应用注册里的权限配置是否正确,以及是否完成了管理员授权。

备注:内容来源于stack exchange,提问作者mbt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 18:48:05