授权最佳做法

在你了解如何使用零信任原则进行开发时,本文将继续介绍获取访问资源的授权制定委托权限策略以及制定应用程序权限策略。 它可以帮助开发人员为应用程序实现最佳授权、权限和同意模型。

可以在需要访问控制的应用程序或解决方案中实现授权逻辑。 当授权方法依赖经过身份验证的实体的相关信息时,应用程序可以评估在身份验证期间交换的信息(例如,在安全令牌中提供的信息)。 当安全令牌不包含信息时,应用程序可以调用外部资源。

无需在应用程序中完整地嵌入授权逻辑。 可以使用专用授权服务集中实现和管理授权。

权限的最佳做法

Microsoft Entra ID 中采用最广泛的应用程序遵循同意和授权最佳做法。 查看使用 Microsoft Graph 的最佳做法Microsoft Graph 权限参考,了解如何对权限请求进行深思熟虑。

  • 应用最低特权 仅请求必要的权限。 使用增量同意实时请求精细权限。 使用实时和恰好足够的访问权限 (JIT/JEA)、基于风险的自适应策略和数据保护,来限制用户访问。

  • 根据场景使用正确的权限类型。 避免在同一应用中同时使用应用程序和委托的权限。 如果你要生成的是有登录用户交互式应用程序,则你的应用程序应使用委托的权限。 但是,如果你的应用程序在没有登录用户的情况下运行(如后台服务或守护程序),该应用程序应使用应用程序权限

  • 提供服务条款和隐私声明 用户同意体验向用户显示服务条款和隐私声明,帮助他们获知他们可以信任你的应用。 对于面向用户的多租户应用,这些模型尤其重要。

何时请求权限

某些权限需要管理员在在租户中授予同意。 他们还可以使用管理员同意终结点向整个租户授予权限。 可以采用三种模型来请求权限或范围。

  • 在登录或首次访问令牌请求时实现动态用户同意。 动态用户同意不需要应用注册中的任何内容。 你可以在特定条件下定义所需的范围(例如,首次登录用户时)。 请求该权限并收到同意后,不需要请求权限。 但是,如果在登录或首次访问时未收到动态用户同意,则会经历权限体验。

  • 根据需要请求增量用户同意。 通过增量同意与动态用户同意相结合,无需一次请求所有权限。 你可以请求一些权限,然后,当用户移动到应用程序中的不同功能时,可以请求更多同意。 此方法可以增加用户的舒适级别,因为他们以增量方式向应用程序授予权限。 例如,如果你的应用程序请求访问 OneDrive,而你还请求访问日历,那么可能会引起怀疑。 相反,稍后应请用户针对其 OneDrive 添加日历提醒。

  • 使用 /.default 范围。 /.default 范围有效地模拟了旧默认体验,这些体验查看应用程序注册中的内容,并找出了所需的同意,然后请求尚未授予的所有同意。 它不需要在代码中包含所需的权限,因为它们位于应用注册中。

成为经验证的发布者

Microsoft 客户有时会声称在决定何时允许应用程序通过登录用户或调用 API 来访问 Microsoft 标识平台时遇到困难。 采用零信任原则时,他们希望:

  • 提高可见性和控制力。
  • 更主动、更轻松的反应式决策。
  • 确保数据安全并减轻决策负担的系统。
  • 为值得信任的开发人员加速应用采用。
  • 限制向发布者已验证的低风险权限应用授予同意。

虽然访问 Microsoft Graph 等 API 中的数据可以生成丰富的应用程序,但你的组织或客户会评估应用请求的权限以及应用的可信度。

成为 Microsoft 验证发布者有助于让客户更轻松地接受应用程序请求。 当应用程序来自经过验证的发布者时,用户、IT 专业人员和客户知道它来自与 Microsoft 有业务关系的人。 发布者名称旁边会显示一个蓝色选取标记(下例中“权限请求的许可提示”中的组件 #5;请参阅 Microsoft Entra 应用程序同意体验中的组件表)。 用户可以从许可提示中选择已验证的发布者以查看详细信息。

请求的权限对话框的屏幕截图显示了链接的 Microsoft Entra 应用程序同意体验文章中所述的组件构建基块。

当你是经过验证的发布者时,用户和 IT 专业人员会获得对应用程序的信任,因为你是已验证的实体。 发布者验证为应用程序改进了品牌打造,并为客户提供高透明度、低风险且更流畅的企业采用。

后续步骤

  • 制定委托权限策略可帮助你实施有关在应用程序中管理权限的最佳方法,并使用零信任原则进行开发。
  • 制定应用程序权限策略可帮助你确定应用程序权限凭据管理方法。
  • 在应用程序开发生命周期中使用零信任身份和访问管理开发最佳做法来创建安全应用程序。
  • 应用程序属性的安全最佳做法介绍了重定向 URI、访问令牌、证书和机密、应用程序 ID URI 和应用程序所有权。
  • 自定义令牌介绍了可以在 Microsoft Entra 令牌中接收的信息。 它说明了如何自定义令牌以提高灵活性和控制度,同时提高最低特权下的应用程序零信任安全性。
  • 在令牌中配置组声明和应用角色介绍了如何使用应用角色定义来配置应用,以及如何将安全组分配给应用角色。 这些方法有助于提高灵活性和控制度,同时提高最低特权下的应用程序零信任安全性。
  • API 保护描述了通过注册保护 API、定义权限和同意,以及强制实施访问权限,以实现零信任目标的最佳做法。
  • 获取访问资源的授权有助于了解在获取应用程序的资源访问权限时如何最好地确保零信任。