当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何使用 Microsoft Graph PowerShell 撤销应用程序 API 权限

作者:精品下载站 日期:2024-12-14 06:51:33 浏览:18 分类:玩电脑

如何使用 Microsoft Graph PowerShell 撤销应用程序 API 权限


Microsoft Entra 中分配给应用程序的权限可能并不总是永久的。它们可能已被临时授予,以方便使用 Microsoft Graph PowerShell 等工具,或将您的租户与第三方系统集成以支持报告或迁移。要求的变化也可能导致需要减少权限。

无论出于何种原因,不再需要的权限都应该被撤销......

在本教程中,我将向您展示如何使用 Microsoft Graph PowerShell 和 Microsoft Enter 管理中心撤销先前授予的对 Microsoft Entra 中的应用程序的 API 权限。

为什么要撤销 Graph API 权限?

随着时间的推移,服务主体的 Microsoft Graph API 权限可能会累积到比实际需要的权限更多的程度。现在,随着 Microsoft Graph PowerShell 等新工具的采用,这种情况变得更加常见,它利用服务主体的功能来发挥作用,与之前的 Azure AD 和 MSOL PowerShell 模块不同。

要将这些权限分配给应用程序,必须获得具有全局管理员或特权用户管理员角色的用户的同意。现在,当涉及内置服务主体(例如 Microsoft Graph 命令行工具应用程序或 Graph Explorer 应用程序)时,设置权限并不总是那么容易提前定义。管理员需要执行的任务每天都会发生变化,包括需要额外的权限来以编程方式管理 Microsoft Entra 资源。

此问题使这些内置服务主体很容易快速变得权限过高,这可能会在具有特权角色的用户可能需要访问管理员门户来运行报告(可以应用条件访问)但不应该访问的情况下出现问题。没有编程访问权限。

不幸的是,不可能通过条件访问来定位这些内置服务主体,这就提出了一个问题:如果特权用户受到威胁(以任何方式)并且在批准的位置之外进行访问,会发生什么情况。如果没有采取其他安全措施,攻击者的编程访问很容易被滥用。

考虑到这一点,最好确保内置服务主体被授予关键权限的时间不会超过所需的时间。

使用 Microsoft Entra 门户撤销 API 权限

Microsoft Entra 门户是一个简单方便的工具,可快速从应用程序中删除单个或多个权限。要从 Microsoft Entra 中的服务主体撤销 Graph API 权限,请按照以下步骤操作:

1.登录微软Entra

2. 选择应用程序 > 企业应用程序

3. 从列表中选择应用程序

4. 在左侧的“安全”下,选择权限

5. 将鼠标悬停在您要撤销的权限右侧,然后点击撤销权限

[玩转系统] 如何使用 Microsoft Graph PowerShell 撤销应用程序 API 权限

使用 Microsoft Graph PowerShell 撤销 API 权限

Microsoft Graph PowerShell 提供了一种更方便的方法来撤销先前在 Microsoft Entra 中同意的服务主体。这意味着您可以一次撤销多个权限,并且更频繁、更方便地撤销权限。

要撤消服务主体的 API 权限,您需要先同意 DeleatedPermissionGrant.ReadWrite.All 权限。

Connect-MgGraph -scopes DelegatedPermissionGrant.ReadWrite.All

要获取并存储当前 PowerShell 会话中连接到的应用程序已同意的所有权限,请运行以下命令。这将使用 Get-MgContext cmdlet 查找您当前连接到的服务主体的 ID。

$Context = Get-MgContext
$ObjectId = (Get-MgServicePrincipal -All -Filter "AppId eq '$($context.clientid)'").Id
$PermissionsGrants = Get-MgServicePrincipalOauth2PermissionGrant -ServicePrincipalId $ObjectId -All

现在使用 Remove-MgOauthPermissionGrant cmdlet 撤销权限:

$PermissionsGrants | ForEach-Object {
    Remove-MgOauth2PermissionGrant -OAuth2PermissionGrantId $_.Id
}

从不同的应用程序中删除/撤销 API 权限

您可能希望自动化一个流程,在该流程中自动撤销高使用率服务主体的权限,例如内置的 Microsoft Graph 命令行工具服务主体或许多用户可能连接和/或经常同意权限的其他自定义应用程序。

对于您来说,这可以遵循与上面相同的概念,但是您需要首先识别所需 ServicePrincipal 的 ObjectId。这可以通过使用 Get-MgServicePrincipal cmdlet 和针对应用程序的友好名称的过滤器来实现:

$id = (Get-MgServicePrincipal -Filter "DisplayName eq 'Graph Application - IT'").id

以下是从不同应用程序删除 API 权限的完整示例:

Connect-MgGraph -scopes application.read.all DelegatedPermissionGrant.ReadWrite.All

$id = (Get-MgServicePrincipal -Filter "DisplayName eq 'Graph Application - IT'").id

$PermGrants = Get-MgServicePrincipalOauth2PermissionGrant -ServicePrincipalId $id -All

$PermGrants | ForEach-Object {
    Remove-MgOauth2PermissionGrant -OAuth2PermissionGrantId $_.Id
}

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯