[玩转系统] 如何确定您需要哪些 Microsoft Graph 权限
作者:精品下载站 日期:2024-12-14 04:05:47 浏览:14 分类:玩电脑
如何确定您需要哪些 Microsoft Graph 权限
使用 Microsoft Graph PowerShell SDK 时
现在,您应该知道 Microsoft 计划在 2022 年底或不久后停用 Azure AD 和 MSOL PowerShell 模块。已停用模块中的 cmdlet 之后将继续运行,但不会获得任何支持。 Microsoft 建议您升级脚本以使用 Microsoft Graph PowerShell SDK 中的 cmdlet。实际的转换通常是在 Microsoft 的 cmdlet 映射中找到匹配的 cmdlet 并切换到它。但是,在 cmdlet 顺利运行之前,还会遇到其他复杂问题。确定用于访问数据的正确 Microsoft Graph API 权限只是这些复杂性之一。
最小权限模型
Azure AD PowerShell 模块和 Microsoft Graph PowerShell SDK 之间的权限处理存在显着差异。使用 Connect-AzureAD cmdlet 登录时,您可以使用登录帐户拥有的所有管理权限。但是,Graph SDK 在最低权限模型上运行,这意味着即使在连接具有高权限的帐户时,您也必须请求权限才能执行操作。
将脚本从 Azure AD cmdlet 更新到 SDK cmdlet 的第一步是考虑脚本执行处理所需的权限。无论您如何使用 SDK cmdlet,此规则都适用 - 以交互方式、通过使用基于证书的身份验证的后台作业或在 Azure 自动化 Runbook 中。与从登录帐户继承的权限不同,SDK 使用的权限被授予用于运行 SDK cmdlet 的服务主体。对于交互式会话,服务主体是 Microsoft Graph
接下来的问题是如何找到执行操作所需的 Microsoft Graph API 权限。您可以通过四种方式实现目标:
猜测和过度许可
第一种方法是猜测和希望方法。换句话说,授予脚本可能使用的所有权限,或者继续添加权限直到代码运行。这里的危险在于,您最终会得到一个拥有大量权限的服务主体,而这将成为攻击者的有吸引力的目标。如果您使用交互式会话来运行 SDK cmdlet,则 Microsoft Graph PowerShell 服务主体很可能会随着时间的推移获得许多权限,并最终处于权限过多的状态(图 1)。我们稍后会回到这个问题。
使用图形浏览器突出显示图形权限
接下来,如果您在 Graph Explorer 中运行查询,浏览器会在“修改权限”选项卡中显示运行查询所需的权限(图 2)。显示的权限集包括您可以使用的每个有效权限,因此您需要选择最合适的权限。在本例中,查询是获取租户中的用户帐户集(用户帐户操作的基本集之一),因此 User.Read.All 权限是一个不错的选择。
Active Directory 的网络安全风险管理
了解如何通过这些网络安全风险管理解决方案预防 AD 攻击并从中恢复。
阅读图表文档
所有 SDK cmdlet 均源自图形查询。 Microsoft 使用名为 AutoRest 的进程来处理可用的图形查询并创建 SDK cmdlet。此过程每月进行一次,以创建新版本的 SDK。该过程还创建自动化文档,但机器生成的文本通常很晦涩且难以理解,这就是为什么我经常恢复到底层图形文档的原因。以列出用户帐户为例。快速搜索将我们带到“列表用户”页面,其中列出了委派(用于以登录用户身份访问数据)和应用程序(用于后台进程)所需的权限。在这种情况下,页面确认User.Read.All是一个不错的选择。
使用 SDK 帮助识别图形权限
该 SDK 包含两个 cmdlet,可帮助开发人员确定执行操作所需的权限。
- Find-MgGraphPermission:列出不同操作的委派权限和应用程序权限。
- Find-MgGraphCommand:列出可用于与不同类型的对象交互的 cmdlet,包括所需的权限。该 cmdlet 通过获取对象的 URI 来查找可用命令。
例如,假设我想要与存储在 Azure AD 中的组织信息进行交互。我可以首先运行 Find-MgGraphPermission cmdlet:
Find-MgGraphPermission organization | ? {$_.PermissionType -eq "Application"} | Format-List Name, Description
Name : Organization.Read.All
Description : Allows the app to read the organization and related resources, on behalf of the signed-in user. Related resources include things like subscribed skus and tenant branding information.
Name : Organization.ReadWrite.All
Description : Allows the app to read and write the organization and related resources, on behalf of the signed-in user. Related resources include things like subscribed skus and tenant branding information.
该命令通过管道将其输出过滤并显示应用程序权限(可以使用相同的委派权限)。从输出中可以明显看出,我们应该使用Organization.Read.All权限来读取组织信息(例如租户名称和标识符),并且Organization.ReadWrite.All我们是否需要更新可写设置。
为了简洁起见,我在上面仅显示了权限名称和描述。以下是更新 Azure AD 组(包括 Microsoft 365 组)属性所需的 Group.ReadWrite.All 权限的完整输出。
Id : 62a82d76-70ea-41e2-9197-370581804d09
PermissionType : Application
Consent : Admin
Name : Group.ReadWrite.All
Description : Allows the app to create groups, read all group properties and memberships, update group properties and memberships, and delete groups. Also allows the app to read and write group calendar and conversations. All of these operations can be performed by the app without a signed-in user.
您可以尝试命令的修改版本,以查看与用户、组、Azure AD(目录)、应用程序(应用程序)等交互所需的权限。
Find-MgGraphCommand cmdlet 传递图形 URL 的一部分,以查看哪些 SDK cmdlet 可用于该 URL。 URL 类似于用户或组,用于列出可用于处理对象集的 cmdlet。如果添加 {id},则意味着您希望查看可用于处理各个对象的 cmdlet。
例如,让我们看看哪些 cmdlet 可用于处理各个组。该命令及其输出如下所示:
Find-MgGraphCommand -uri "/groups/{id}" | ? {$_.APIVersion -eq "v1.0"} | Fl Command, Method, Permissions
Command : Get-MgGroup
Method : GET
Permissions : {Directory.AccessAsUser.All, Directory.Read.All, Directory.ReadWrite.All, Group.Read.All...}
Command : Remove-MgGroup
Method : DELETE
Permissions : {Directory.AccessAsUser.All, Group.ReadWrite.All}
Command : Update-MgGroup
Method : PATCH
Permissions : {Directory.AccessAsUser.All, Directory.ReadWrite.All, Group.ReadWrite.All}
该图有两个端点:V1.0 和 beta。 V1.0 端点是生产版本,而 beta 端点正在开发中。在许多情况下,您将结合使用 cmdlet 和 beta 端点,因为它们提供了附加功能。例如,如果您针对 V1.0 端点运行 Get-MgUser cmdlet,它不会返回帐户的任何许可证信息,但在针对 beta 端点运行时会返回任何许可证信息。
在本例中,我已过滤输出以仅显示 V1.0 端点中可用的命令,我们可以看到三个 cmdlet 可用于列出组、删除组和更新组的属性。我们还可以看到,Group.Read.All 权限足以读取组信息,但我们需要 Group.ReadWriteAll 来删除或更新组。
范围界定
一旦找到脚本执行其负责的任何操作所需的 Microsoft Graph API 权限,您就可以在 Connect-MgGraph cmdlet 的 Scopes 参数中指定连接到 Graph 时所需的权限集。例如:
$RequiredScopes = ("Organization.ReadWrite.All”, "Directory.Read.All")
Connect-MgGraph -Scope $RequiredScopes
对于交互式会话,如果 Microsoft Graph PowerShell 服务主体不同意使用所请求的权限,系统将提示您同意(图 3)。
如果您允许应用程序使用该权限,则会话可以在会话期间使用委派的权限。本质上,委托权限意味着用户可以访问自己拥有的数据,但不能访问属于其他用户的数据。但是,也可以通过分配给帐户的管理角色来获得对数据的访问权限。正如 Microsoft 在其文档中所解释的那样,“您的应用的有效权限是应用已(经同意)授予的委派权限与当前登录用户的权限的最低特权交集 ”。换句话说,如果您的帐户拥有管理员角色,那么您将能够访问比您的帐户没有管理员角色更多的数据。
如果您代表组织授予同意,Entra ID 会将权限添加到服务主体,并且此后该权限可用于所有会话。授予服务主体的同意是针对应用程序权限的,这意味着用户可以访问整个组织的数据。
连接后,您可以通过运行以下命令来检查哪些权限处于活动状态:
(Get-MgContext).Scopes
累计图表权限
Microsoft Graph PowerShell 服务主体不断积累的权限是值得警惕的。如果要删除服务主体的所有权限,可以通过 Azure AD 管理中心执行此操作(如图 1 所示),也可以删除服务主体。发生这种情况时,SDK 会在下次有人尝试登录时检测到服务主体丢失并重新创建它(服务主体的 AppId 始终为 14d82eec-204b-4c2f-b7e8-296a70dab67e) 。
要创建服务主体,请使用 Application.ReadWrite.All 权限连接到图表并运行以下命令:
Remove-MgServicePrincipal cmdlet 不会提示确认。幸运的是,很快 Azure AD 将证明能够恢复软删除的服务主体对象,以防万一您犯了错误。
$SDKServicePrincipalId = (Get-MgServicePrincipal -all | ? {$_.DisplayName -eq "Microsoft Graph PowerShell"}).Id
Remove-MgServicePrincipal -ServicePrincipalId $SDKServicePrincipalID
更复杂,更多控制
与 PowerShell 模块的标准(到目前为止)相比,使用 Microsoft Graph PowerShell SDK 需要更多地关注权限。您必须请求权限并仅使用所需的权限集,而不是假定管理权限。它需要一些时间来适应,并且是基于 Azure AD 和 MSOL 模块的脚本转换清单的一部分。就像生活中的大多数其他事情一样,我们会及时习惯连接的权限管理。
猜你还喜欢
- 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