Microsoft Graph - 删除访问包分配
Posted
技术标签:
【中文标题】Microsoft Graph - 删除访问包分配【英文标题】:Microsoft Graph - Delete Access Package Assignment 【发布时间】:2022-01-18 14:32:56 【问题描述】:我正在使用 Microsoft Graph API Beta 版删除访问包。但是,要删除访问包,我需要首先删除其所有分配。 为此,我在官方文档中找到了 accessPackageAssignment 对象 (https://docs.microsoft.com/en-us/graph/api/resources/accesspackageassignment?view=graph-rest-beta)。 当我对作业执行获取请求时:
result = azureAdBeta.get('/identityGovernance/entitlementManagement/accessPackageAssignments/' + accessPackageAssignmentId)
响应成功:
'@odata.context': 'https://graph.microsoft.com/beta/$metadata#identityGovernance/entitlementManagement/accessPackageAssignments/$entity', 'accessPackageId': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 'assignmentPolicyId': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 'assignmentState': '已交付', 'assignmentStatus': '已交付', 'catalogId': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 'expiredDateTime':无, 'id': '2ad2eb61-9baa-45b9-a700-bfef425d7aef', 'isExtended':错误, “计划”:“到期”:“持续时间”:无, 'endDateTime': '2022-01-20T23:00:00Z', '类型':'afterDateTime', “复发”:无, 'startDateTime': '2021-12-15T11:16:04.663Z', 'targetId': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
但是,当我执行删除请求时:
result = azureAdBeta.delete('/identityGovernance/entitlementManagement/accessPackageAssignments/' + accessPackageAssignmentId)
我收到以下错误:
'error': 'code': '', 'innerError': 'client-request-id': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', '日期': '2021-12-15T11:32:37', '请求ID':'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', 'message': '没有找到与请求 URI 匹配的 HTTP 资源' "'https://igaelm-asev3-ecapi-neu.igaelm-asev3-environment-neu.p.azurewebsites.net/api/v1/accessPackageAssignments('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')'。"
我想这个错误是由于在文档中没有为 accessPackageAssignment 对象提及删除方法。
那么如何通过 Microsoft Graph 删除访问包分配?
【问题讨论】:
请参考此文档链接以供参考,因为它恰当地说明了删除访问包的命令:-docs.microsoft.com/en-us/graph/api/… 您好 Kartik,有关删除访问包 API 的文档指出“如果访问包有任何 accessPackageAssignment,您将无法删除它。”那么我可以删除 accessPackageAssignment 吗? 嗨@Alessandro,请参阅此文档链接以供参考,其中明确说明了如何通过Microsoft图形身份治理PowerShell模块删除相关的访问包分配:-docs.microsoft.com/en-us/azure/active-directory/governance/… accessPackageAssignments 的 beta API 仍在开发中,目前不支持 DELETE 方法。 是的,它不支持DELETE方法,但是既然是赋值,那么对于相应的赋值资源,肯定可以通过上述方法删除。 【参考方案1】:• 您可以通过以下方式通过 Microsoft graph powershell 模块删除 Access 包分配:-
首先通过下面的powershell命令查看所有的访问包分配-
‘ Connect-MgGraph -Scopes "EntitlementManagement.Read.All"
Select-MgProfile -Name "beta"
$accesspackage = Get-MgEntitlementManagementAccessPackage -DisplayNameEq "Marketing Campaign"
$assignments = Get-MgEntitlementManagementAccessPackageAssignment -AccessPackageId $accesspackage.Id -ExpandProperty target -All -ErrorAction Stop
$assignments | ft Id,AssignmentState,TargetId,$_.Target.DisplayName ’
上述命令将显示与上述显示名称相对应的访问包的所有分配。一旦显示了所述访问包的所有访问包分配,执行以下命令通过输入正确的访问包ID来删除相关访问包的访问包分配。此外,输入要删除的分配的正确目标 ID(用户/组/资源的对象 ID)。
‘ Connect-MgGraph -Scopes "EntitlementManagement.ReadWrite.All"
Select-MgProfile -Name "beta"
$assignments = Get-MgEntitlementManagementAccessPackageAssignment -Filter
"accessPackageId eq '9f573551-f8e2-48f4-bf48-06efbb37c7b8' and
assignmentState eq 'Delivered'" -All -ErrorAction Stop
$toRemove = $assignments | Where-Object $_.targetId -eq '76fd6e6a-c390-
42f0-879e-93ca093321e7'
$req = New-MgEntitlementManagementAccessPackageAssignmentRequest -
AccessPackageAssignmentId $toRemove.Id -RequestType "AdminRemove" ’
这将删除相关访问包的访问包分配。
注意: - 您必须在 powershell 中安装 Microsoft Graph Identity Governance 模块才能执行上述命令。要安装模块,请在提升的 powershell 中运行此命令 - 'Install-Module -Name Microsoft.Graph.Identity.Governance'
此外,您可以通过 Microsoft Graph 从应用程序 JSON 文件中删除访问包分配。为此,请参考以下链接并将“requestType”的值:“AdminAdd”替换为“requestType”:“AdminRemove”
https://docs.microsoft.com/en-us/graph/api/accesspackageassignmentrequest-post?view=graph-rest-beta&preserve-view=true&tabs=http#request
请参考以下链接:-
https://docs.microsoft.com/en-us/azure/active-directory/governance/entitlement-management-access-package-assignments#remove-an-assignment-programmatically
【讨论】:
以上是关于Microsoft Graph - 删除访问包分配的主要内容,如果未能解决你的问题,请参考以下文章
从Azure获取令牌以访问Microsoft Graph后无法调用函数
为啥大多数 Microsoft Graph 功能仅限于用户访问
Microsoft Graph 和自定义 API 的访问令牌