使用最小特权原则增强安全性

根据信息安全性最小特权原则,应仅向用户和应用程序授予对执行其作业所需的数据和操作的访问权限。 按照此处的指导来帮助减少应用程序的攻击面,以及应在集成了 Microsoft 标识平台的应用程序中出现的安全漏洞的影响(冲击范围)。

建议概览

  • 通过撤消未使用的权限和可缩小的权限来阻止特权超过需要的应用程序。
  • 使用标识平台的同意框架,要求有人同意应用程序访问受保护数据的请求。
  • 在开发的所有阶段中,生成应用程序时始终应牢记最小特权原则。
  • 定期审核已部署的应用程序,以识别特权过高的应用程序。

特权过高的应用程序

授予了未使用或可降低的权限的任何应用程序都被视为特权过高。 未使用和可降低的权限可能会提供对应用程序或其用户执行作业不需要的数据或操作的未经授权或意外访问。 通过仅授予适当的权限来避免未使用和可降低的权限带来的安全风险。 适当的权限是应用程序或用户执行其必要任务所需的最低访问权限。

未使用的权限

未使用的权限是已向应用程序授予,但在按预期使用时该权限公开的 API 或操作不会被应用程序调用的权限。

  • 示例:应用程序通过调用 Microsoft Graph API 并使用 Files.Read 权限来显示存储在已登录用户的 OneDrive 中的文件列表。 但是,该应用程序还被授予了 Calendars.Read 权限,它不提供日历功能,并且不调用日历 API。

  • 安全风险:未使用的权限带来了水平特权提升安全风险。 在应用程序中利用安全漏洞的实体可以使用未使用的权限来访问应用程序在按预期使用时通常不支持或不允许的 API 或操作。

  • 缓解措施:删除应用程序所执行的 API 调用中不使用的任何权限。

可缩小的权限

可缩小的权限是具有较小特权的对应项的权限,该权限仍会为应用程序及其用户提供执行必要任务所需的访问权限。

  • 示例:应用程序通过调用 Microsoft Graph API 来显示已登录用户的配置文件信息,但不支持编辑配置文件。 但是,为应用程序授予了 User.ReadWrite.All 权限。 User.ReadWrite.All 权限在此处被视为可缩小的权限,因为权限较低的 User.Read.All 权限授予对用户配置文件数据足够的只读访问权限。

  • 安全风险:可缩小的权限带来了垂直特权提升安全风险。 在应用程序中利用安全漏洞的实体可以使用可降低的权限来对数据进行未经授权的访问或执行该实体的角色通常不允许的操作。

  • 缓解措施:将应用程序中的每个可降低权限替换为其权限最低的对应项,同时仍启用应用程序的所需功能。

大多数应用程序都需要访问受保护的数据,并且该数据的所有者需要同意该访问权限。 同意可以通过多种方式授予,其中包括通过可同意 Microsoft Entra 租户中的所有用户的租户管理员或可授予访问权限的应用程序用户。

每当设备中运行的应用程序请求访问受保护数据时,该应用程序都应征求用户的同意,然后再授予对受保护数据的访问权限。 在应用程序可以继续执行操作之前,用户需要同意(或拒绝)所请求的权限。

应用程序开发期间的最低特权

应用程序及其访问的用户数据的安全性由开发人员负责。

在应用程序开发过程中遵守这些准则,以帮助避免应用程序特权过高:

  • 充分了解应用程序需执行的 API 调用所需的权限。
  • 了解应用程序使用 Graph 浏览器进行每个 API 调用时所需的最低特权。
  • 查找最低到最高的相应权限
  • 在应用程序执行的 API 调用具有重叠权限的情况下,删除任何重复的权限集。
  • 通过在权限列表中选择最低特权,仅将最低特权集应用到应用程序。

已部署应用程序的最低特权

组织通常不愿修改正在运行的应用程序来避免影响正常的业务运营。 但是,组织应考虑缓解使用过高特权导致可能产生的或更严重的安全事件的风险,这值得进行计划应用程序更新。

在组织中实施这些标准实践,以确保部署的应用程序不会特权过高,并且不会随着时间的推移而特权过高:

  • 评估从应用程序发出的 API 调用。
  • 通过 Graph 浏览器Microsoft Graph 文档了解所需权限和最小特权权限。
  • 审核向用户或应用程序授予的权限。
  • 使用最低特权集更新应用程序。
  • 定期进行权限评审以确保授予的所有权限仍然相关。

后续步骤