[玩转系统] 如何从 Microsoft Entra 中的应用程序删除权限
作者:精品下载站 日期:2024-12-14 06:30:57 浏览:16 分类:玩电脑
如何从 Microsoft Entra 中的应用程序删除权限
因此,您在 Microsoft Entra 中拥有所有这些应用程序(企业应用程序和应用程序注册)。但您想撤销应用程序的权限。可以从 Microsoft Entra 管理中心的应用程序中删除管理员同意权限,但不能删除用户同意权限。在本文中,您将了解如何从 Microsoft Entra 应用程序中删除管理员和用户同意权限。
在 Microsoft Entra 中查找应用程序权限
让我们看看 Microsoft Entra 中应用程序的管理员同意和用户同意权限:
登录 Microsoft Entra 管理中心
展开身份 > 应用程序
选择企业应用程序(或应用程序注册)
-
点击所有应用程序
选择应用程序
点击权限
选择管理员同意
选择撤消权限
单击用户同意选项卡
没有撤销权限的选项
因此,当通过管理员同意授予应用程序权限时,我们可以撤销应用程序的权限。不幸的是,当通过 Microsoft Entra 管理中心的用户同意授予权限时,无法撤销权限。
在下一步中,我们将完成这些步骤并展示如何使用 PowerShell 从应用程序中删除管理员和用户同意权限。
安装 Microsoft Graph PowerShell 模块
以管理员身份启动 Windows PowerShell 并安装 Microsoft Graph PowerShell。
Install-Module Microsoft.Graph -Force
Install-Module Microsoft.Graph.Beta -AllowClobber -Force
重要提示:始终安装 Microsoft Graph PowerShell 和 Microsoft Graph Beta PowerShell 模块。这是因为某些 cmdlet 在最终版本中尚不可用,并且无法运行。在运行 cmdlet 或脚本之前将两个模块更新到最新版本,以防止出现错误和不正确的结果。
从应用程序中删除用户和管理员同意权限
您可以使用下面的脚本从应用程序中删除用户和管理员同意权限。
在“概述”选项卡中找到应用程序对象 ID。接下来,将其粘贴到第 4 行。
Connect-MgGraph -Scopes "User.ReadWrite.All", "Application.ReadWrite.All", "DelegatedPermissionGrant.ReadWrite.All"
# Get Service Principal using objectId
$sp = Get-MgServicePrincipal -ServicePrincipalId 453d37f9-20e5-4325-bc00-67d1581a0232
# Get all delegated permissions for the service principal
$spOAuth2PermissionsGrants = Get-MgServicePrincipalOauth2PermissionGrant -ServicePrincipalId $sp.Id -All
# Remove all delegated permissions
$spOAuth2PermissionsGrants | ForEach-Object {
Remove-MgOauth2PermissionGrant -OAuth2PermissionGrantId $_.Id
}
从应用程序中删除管理员同意权限
仅从应用程序中删除管理员同意权限。
在“概述”选项卡中找到应用程序对象 ID。接下来,将其粘贴到第 4 行。
Connect-MgGraph -Scopes "User.ReadWrite.All", "Application.ReadWrite.All", "DelegatedPermissionGrant.ReadWrite.All"
# Get Service Principal using objectId
$sp = Get-MgServicePrincipal -ServicePrincipalId 453d37f9-20e5-4325-bc00-67d1581a0232
# Get all delegated permissions for the service principal
$spOAuth2PermissionsGrants = Get-MgServicePrincipalOauth2PermissionGrant -ServicePrincipalId $sp.Id -All
# Remove only delegated permissions granted with admin consent
$spOAuth2PermissionsGrants | Where-Object { $_.ConsentType -eq "AllPrincipals" } | ForEach-Object {
Remove-MgOauth2PermissionGrant -OAuth2PermissionGrantId $_.Id
}
从应用程序中删除用户同意权限
仅从应用程序中删除用户同意权限。
在“概述”选项卡中找到应用程序对象 ID。接下来,将其粘贴到第 4 行。
Connect-MgGraph -Scopes "User.ReadWrite.All", "Application.ReadWrite.All", "DelegatedPermissionGrant.ReadWrite.All"
# Get Service Principal using objectId
$sp = Get-MgServicePrincipal -ServicePrincipalId 453d37f9-20e5-4325-bc00-67d1581a0232
# Get all delegated permissions for the service principal
$spOAuth2PermissionsGrants = Get-MgServicePrincipalOauth2PermissionGrant -ServicePrincipalId $sp.Id -All
# Remove only delegated permissions granted with user consent
$spOAuth2PermissionsGrants | Where-Object { $_.ConsentType -ne "AllPrincipals" } | ForEach-Object {
Remove-MgOauth2PermissionGrant -OAuth2PermissionGrantId $_.Id
}
让我们看看使用 PowerShell 脚本删除 Microsoft Entra 应用程序权限的更好方法。
使用 Powershell 脚本删除 Entra ID 应用程序权限
删除用户和管理员同意权限的一个好方法是使用 PowerShell 脚本。
准备Remove-AppPermissions PowerShell脚本
下载Remove-AppPermissions.ps1 PowerShell 脚本并将其放置在C:\scripts 文件夹中。
确保文件未被阻止,以防止运行脚本时出现错误。请阅读文章运行 PowerShell 脚本时出现未数字签名错误来了解更多信息。
另一种选择是将以下代码复制并粘贴到记事本中。将其命名为 Remove-AppPermissions.ps1 并将其放置在 C:\scripts 文件夹中。
# Variables
$systemMessageColor = "cyan"
$processMessageColor = "green"
$errorMessageColor = "red"
$warningMessageColor = "yellow"
Write-Host -ForegroundColor $systemMessageColor "Script started`n"
Write-Host "--- Script to delete app permissions from an Entra ID application in a tenant ---"
Write-Host -ForegroundColor $processMessageColor "`nChecking for Microsoft Graph PowerShell module"
if (Get-Module -ListAvailable -Name Microsoft.Graph.Authentication) {
Write-Host -ForegroundColor $processMessageColor "Microsoft Graph PowerShell module found"
}
else {
Write-Host -ForegroundColor $warningMessageColor -BackgroundColor $errorMessageColor "Microsoft Graph PowerShell Module not installed. Please install and re-run the script`n"
Write-Host "You can install the Microsoft Graph PowerShell module by:`n"
Write-Host " 1. Launching an elevated PowerShell console then,"
Write-Host " 2. Running the command, 'Install-Module -Name Microsoft.Graph'.`n"
Pause ## Pause to view error on screen
exit 0 ## Terminate script
}
Connect-MgGraph -Scopes "User.ReadWrite.All", "Application.ReadWrite.All", "DelegatedPermissionGrant.ReadWrite.All"
$results = Get-MgServicePrincipal -All | Select-Object Id, AppId, DisplayName | Sort-Object DisplayName | Out-GridView -PassThru -Title "Select Application (Multiple selections permitted)"
foreach ($result in $results) {
# Loop through all selected options
Write-Host -ForegroundColor $processMessageColor "Commencing", $result.DisplayName
# Get Service Principal using objectId
$sp = Get-MgServicePrincipal -All | Where-Object { $_.Id -eq $result.Id }
# Menu selection for User or Admin consent types
$consentType = @()
$consentType += [PSCustomObject]@{ Name = "Admin consent"; Type = "allprincipals" }
$consentType += [PSCustomObject]@{ Name = "User consent"; Type = "principal" }
$consentSelects = $consentType | Out-GridView -PassThru -Title "Select Consent type (Multiple selections permitted)"
foreach ($consentSelect in $consentSelects) {
# Loop through all selected options
Write-Host -ForegroundColor $processMessageColor "Commencing for", $consentSelect.Name
# Get all delegated permissions for the service principal
$spOAuth2PermissionsGrants = Get-MgOauth2PermissionGrant -All | Where-Object { $_.clientId -eq $sp.Id }
$info = $spOAuth2PermissionsGrants | Where-Object { $_.consentType -eq $consentSelect.Type }
if ($info) {
# If there are permissions set
if ($consentSelect.Type -eq "principal") {
# User consent
$usernames = @()
foreach ($item in $info) {
$usernames += Get-MgUser -UserId $item.PrincipalId
}
$selectUsers = $usernames | Select-Object Displayname, UserPrincipalName, Id | Sort-Object Displayname | Out-GridView -PassThru -Title "Select Consent type (Multiple selections permitted)"
foreach ($selectUser in $selectUsers) {
# Loop through all selected options
$infoScopes = $info | Where-Object { $_.principalId -eq $selectUser.Id }
Write-Host -ForegroundColor $processMessageColor "`n"$consentSelect.Name, "permissions for user", $selectUser.Displayname
foreach ($infoScope in $infoScopes) {
Write-Host "`nResource ID =", $infoScope.ResourceId
$assignments = $infoScope.Scope -split " "
foreach ($assignment in $assignments) {
Write-Host "-", $assignment
}
}
Write-Host -ForegroundColor $processMessageColor "`nSelect items to remove`n"
$removes = $infoScopes | Select-Object Scope, ResourceId, Id | Out-GridView -PassThru -Title "Select permissions to delete (Multiple selections permitted)"
foreach ($remove in $removes) {
Remove-MgOauth2PermissionGrant -OAuth2PermissionGrantId $remove.Id
Write-Host -ForegroundColor $warningMessageColor "Removed consent for", $remove.Scope
}
}
}
elseif ($consentSelect.Type -eq "allprincipals") {
# Admin consent
$infoScopes = $info | Where-Object { $_.principalId -eq $null }
Write-Host -ForegroundColor $processMessageColor $consentSelect.Name, "permissions"
foreach ($infoScope in $infoScopes) {
Write-Host "`nResource ID =", $infoScope.ResourceId
$assignments = $infoScope.Scope -split " "
foreach ($assignment in $assignments) {
Write-Host "-", $assignment
}
}
Write-Host -ForegroundColor $processMessageColor "`nSelect items to remove`n"
$removes = $infoScopes | Select-Object Scope, ResourceId, Id | Out-GridView -PassThru -Title "Select permissions to delete (Multiple selections permitted)"
foreach ($remove in $removes) {
Remove-MgOauth2PermissionGrant -OAuth2PermissionGrantId $remove.Id
Write-Host -ForegroundColor $warningMessageColor "Removed consent for", $remove.Scope
}
}
}
else {
Write-Host -ForegroundColor $warningMessageColor "`nNo", $consentSelect.Name, "permissions found for" , $results.DisplayName, "`n"
}
}
}
Write-Host -ForegroundColor $systemMessageColor "`nScript Finished"
运行Remove-AppPermissions PowerShell 脚本
以管理员身份运行 PowerShell 并运行以下命令来启动 Remove-AppPermissions.ps1 PS 脚本。
C:\Scripts\.\Remove-AppPermissions.ps1
网格视图窗口将在交互式表格中显示输出。这些是 Microsoft Entra 租户中的所有应用程序。
选择应用程序,然后单击确定。
在我们的示例中,我们将选择 Microsoft Graph 命令行工具应用。
选择同意类型。允许多项选择。
在我们的示例中,我们将选择管理员同意和用户同意类型。
选择要从应用程序中删除权限的用户,然后单击“确定”。
在我们的示例中,我们将选择这两个用户。
注意:如果用户拥有管理员同意和用户同意权限,则下一步会提示您两次。因此,您可以决定是否只想删除用户同意、管理员同意或同时删除用户的权限。
它将通过您选择的管理员同意的用户。选择要删除的权限。单击“确定”。
它将遍历您选择的用户同意的用户。选择要删除的权限。单击“确定”。
在我们的示例中,我们只有 1 个用户并选择该用户。
PowerShell 脚本完成,您将在输出中看到结果。
这就是它的样子。
Script started
--- Script to delete app permissions from an Entra ID application in a tenant ---
Checking for Microsoft Graph PowerShell module
Microsoft Graph PowerShell module found
Welcome to Microsoft Graph!
Connected via delegated access using 12d82ffa-202b-4c2f-a7e8-296a70dab67e
Readme: https://aka.ms/graph/sdk/powershell
SDK Docs: https://aka.ms/graph/sdk/powershell/docs
API Docs: https://aka.ms/graph/docs
NOTE: You can use the -NoWelcome parameter to suppress this message.
Commencing Microsoft Graph Command Line Tools
Commencing for User consent
User consent permissions for user Admin 2
Resource ID = 73d0154b-e490-44fe-9447-fa47ec7fdd7f
-
- User.Read.All
- Group.ReadWrite.All
- Application.ReadWrite.All
- DelegatedPermissionGrant.ReadWrite.All
- openid
- profile
- offline_access
Select items to remove
Removed consent for User.Read.All Group.ReadWrite.All Application.ReadWrite.All DelegatedPermissionGrant.ReadWrite.All openid profile offline_access
User consent permissions for user Admin Tajran
Resource ID = 73d0154b-e490-44fe-9447-fa47ec7fdd7f
-
- User.Read.All
- Group.ReadWrite.All
- Application.ReadWrite.All
- DelegatedPermissionGrant.ReadWrite.All
- openid
- profile
- offline_access
Select items to remove
Removed consent for User.Read.All Group.ReadWrite.All Application.ReadWrite.All DelegatedPermissionGrant.ReadWrite.All openid profile offline_access
Commencing for Admin consent
Admin consent permissions
Resource ID = 73d0154b-e490-44fe-9447-fa47ec7fdd7f
- User.Read
Select items to remove
Removed consent for User.Read
Script Finished
验证 Entra 应用程序中的权限
转到应用程序权限并确认管理员同意权限和用户同意权限已被撤销。
这是查找管理员同意权限的方式:
这是查找用户同意权限的方式:
就是这样!
了解更多:使用 PowerShell 从 CSV 创建 Microsoft Entra ID 用户 »
结论
您了解了如何从 Microsoft Entra 中的应用程序删除权限。您只能从 Microsoft Entra 管理中心删除管理员同意权限。要撤销管理员和用户同意权限,最好使用Remove-AppPermissions PowerShell 脚本。
您喜欢这篇文章吗?您可能还喜欢从 Microsoft 365 中永久删除用户。不要忘记关注我们并分享这篇文章。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag