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

[玩转系统] 如何保护对 Microsoft Graph PowerShell 的访问

作者:精品下载站 日期:2024-12-14 06:49:34 浏览:15 分类:玩电脑

如何保护对 Microsoft Graph PowerShell 的访问


Microsoft Graph PowerShell 允许您通过命令行对 Microsoft 365 和 Azure AD 执行管理任务。如果您以前没有使用过它,那么当您使用它时,您可能会注意到运行 connect cmdlet 并使用管理员凭据登录背后的初始概念与您习惯的类似。然而,问题是它并不相同……该模块旨在连接到 Azure AD 中的应用程序,该应用程序通过委派权限或应用程序权限明确同意 Microsoft Graph 的特定权限。这对 Azure AD 应用程序以及通过 PowerShell 连接到 Microsoft Graph 的方式提出了一些安全注意事项。

在本教程中,我将详细介绍这些安全注意事项以及由此产生的问题,并向您展示如何安全地使用 Microsoft Graph PowerShell。

Microsoft Graph PowerShell 的安全注意事项

默认应用程序名称始终相同

安装 Microsoft Graph PowerShell 模块并使用委托权限连接到 Microsoft Graph 后(这在开始时最常见),一个常见的企业应用程序将在您的租户中注册,名为“Microsoft Graph 命令行工具”。应用程序 ID 设置为“14d82eec-204b-4c2f-b7e8-296a70dab67e”,这在所有租户中以及在同一租户中重新创建时都是一致的。这意味着应用程序很容易被好的和支持者识别。除此之外,您甚至不需要指定默认的应用程序名称,只需 Connect-MgGraph 本身即可。

要同意委派权限,您必须是全局管理员

使用委托权限连接到 Microsoft Graph 非常简单,并且该过程“几乎”正是您在使用 MSOnline 和 AzureAD 模块等旧模块时所熟悉的过程。但是,当您第一次连接时,或者您过去没有指定特定权限时,您需要成为租户中的全局管理员才能同意 Azure AD 中的 Microsoft Graph 命令行工具的权限。然后,这些权限将永久分配给应用程序,而不仅仅是在您的会话期间。

每个人的权限只需获得一位管理员的同意一次

首次连接到 Microsoft Graph 后,您不再需要再次指定权限,并且您将拥有与以前相同的访问级别,如果权限可能会更高随着时间的推移已经建立起来。您可以使用 Get-MgContext cmdlet 或查看 Azure AD 中的应用程序权限来查看这一点。这里的问题是(尤其是第三方托管 IT 提供商)对默认应用程序构建的权限,这可能会导致未来的会话权限严重过高。

任何人都可以在其用户上下文中默认使用同意的权限

Azure AD 中 Microsoft Graph 命令行应用程序的默认用户分配设置是不需要用户分配。这意味着您环境中的任何用户都可以在 PowerShell 会话中使用 Connect-MgGraph cmdlet(允许条件访问)连接到 Microsoft Graph,并以编程方式访问其用户上下文中的数据。这意味着管理员用户可以使用 Microsoft Graph 进行特权更改,然后其他特权用户也可以通过编程方式访问相同的数据。尽管这看起来似乎不是一个问题,但您正在帮助攻击者在发生泄露时非常快速地窃取数据。

加班将变得过于特权

没有简单的方法可以“取消同意”或删除 Azure AD 中应用程序的同意权限。您的选择是通过旧版 Azure AD PowerShell 模块删除权限委派的权限,或手动删除 Azure AD 中的应用程序(某种程度上是首选)。但是,如果您删除并重新创建应用程序,则需要记住将“需要分配”属性更新为“是”。

条件访问类型的作品...

您可以使用条件访问来限制对用于连接到 Microsoft Graph PowerShell 的应用程序(包括内置应用程序)的访问,但它不起作用。如果您要通过条件访问来访问 Microsoft Graph,则必须选择“所有云应用程序”。

如何保护 Microsoft Graph PowerShell 访问

以下某些设置可能并不完全适用于您或您的组织。然而,它们都应该被理解,以一种或另一种方式,实施它们将为您的租户提供额外的安全优势。不分先后,请针对每项建议执行以下步骤。

阻止或限制用户应用程序同意

默认情况下,组织中的用户可以授予应用程序查看其帐户详细信息的权限。我建议将其锁定,这样只能同意最少量的信息。这允许关键应用程序在必要时使用用户帐户登录,但会减少应用程序可以查看的信息量。请按照以下步骤仅确保可以同意的最少量信息,该信息被归类为“低风险”。

1. 在此登录 Microsoft Entra:https://entra.microsoft.com/

2. 展开应用程序并选择企业应用程序

3. 选择同意和权限

4. 然后在用户同意设置选项卡上,选择针对选定的权限,允许用户同意来自已验证发布商的应用(推荐)

5. 在同一页面上,单击选择要分类为低影响的权限

6. 在选项卡上,单击添加权限并添加以下权限:

  • 个人资料 > 查看用户的基本个人资料
  • Openid > 让用户登录
  • 电子邮件 > 查看用户的电子邮件地址

将默认的 Microsoft Graph 命令行工具应用设置为“需要分配”

在 Azure AD 中为应用程序打开“需要分配”功能,确保默认情况下并不是每个人都可以连接到您的应用程序。这将允许您确保只有手动定义的用户/组才会被授予连接到您的应用程序的权限,从而访问已同意访问的数据。请按照以下步骤操作,确保只有特定用户才能访问默认应用程序或具有图形权限的任何自定义应用程序。

1. 在 Microsoft Entra 中,选择应用程序 > 企业应用程序

2. 打开Microsoft Graph命令行工具应用程序

3. 单击属性,然后将需要分配更改为

最大限度地减少全局管理员的数量

查看您的全局管理员。您是否拥有建议数量的全局管理员并且您是否正在监控管理任务?您还可以使用 PIM 来控制和监视特权角色。请按照以下步骤查看全局管理员角色的任何有效且合格的分配。

1. 在 Microsoft Entra 中,选择角色和管理员

2. 在所有角色选项卡上,从角色列表中选择全局管理员

3. 查看合格活动分配选项卡,然后验证每个用户是否仍需要全局管理员访问权限,删除那些不需要全局管理员权限的帐户

使用 Azure AD 中的自定义应用程序和预先分配的 Microsoft Graph 权限

通过阻止对内置 Microsoft Graph 命令行工具应用程序的访问,并创建具有完成任务所需权限的特定 Microsoft Graph 应用程序,您可以确保不会出现过度 -租户中的特权应用程序,并且只有必要的人员才能连接到该应用程序。

按照此处的详细指南操作:“使用客户端密钥连接到 Microsoft Graph PowerShell”,并按照在 Azure AD 中创建应用程序并分配相关权限的步骤进行操作。

要使用 Connect-MgGraph cmdlet 连接到您的特定应用程序,您可以使用 -ClientId 和 TenantId 参数。

Connect-Mggraph -ClientId <ClientId> -TenantId <TenantId>

使用独特的身份通过更强的条件访问来定位访问

如果还没有,您应该为管理任务配置新的身份(用户帐户),并且这些帐户应该通过条件访问被严格锁定。 Microsoft Graph PowerShell 的问题是该应用程序无法直接作为条件访问的目标,您必须选择“所有云应用程序”才能为访问该应用程序应用额外的安全性。因此,您应该设计您的访问权限,例如只有特定身份才能在 Azure AD 应用程序级别进行访问,然后这些身份应该以针对所有云应用程序的强大条件访问策略为目标。

为您的 IT 员工提供管理培训

最后,您的 IT 员工必须熟悉有关使用 PowerShell 管理 Microsoft 365 和 Azure AD 的变化,这一点很重要。虽然某些任务可能已成为第二天性,但变化正在迅速而巨大地发生,因此为团队投入工作时间的培训时间非常重要。

概括

总之,在使用 Microsoft Graph PowerShell 应用程序时,有一些被忽视的默认配置。由于糟糕的用户权限管理以及将特权角色分配给日常用户帐户,您可能会拥有一颗您甚至不知道的定时炸弹。本文详细介绍的步骤将有助于最大限度地减少租户中可能被 Microsoft Graph PowerShell 利用的攻击和权限升级路径。

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

取消回复欢迎 发表评论:

关灯