通过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。你可以通过以下端点获取目标组的所有角色设置:
调用后会返回该组所有PIM角色的配置,找到你要修改的角色(比如对应“成员”权限的那条),记下它的GET /privilegedAccess/group/resources/{group-object-id}/roleSettingsid字段。
二、修改审批设置
拿到角色设置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
相关产品推荐
相关产品推荐

