对应用程序使用基于角色的访问控制

基于角色的访问控制 (RBAC) 是一种常用的机制,用于在应用程序中强制进行授权。 当组织使用 RBAC 时,应用程序开发人员为应用程序定义角色。 然后,管理员再将角色分配给不同的用户和组,从而控制谁有权访问应用程序中的内容和功能。

应用程序通常以安全令牌中的声明的形式接收用户角色信息。 开发人员可以灵活地提供他们自己的实现,用于指定如何将角色声明解释为应用程序权限。 这种权限解释可能涉及到使用中间件,或者应用程序平台或相关库提供的其他选项。

应用角色

Microsoft Entra 外部 ID 支持为应用程序定义应用程序角色并将这些角色分配给用户和组。 分配给用户或组的角色定义其对应用程序中资源和操作的访问级别。

当 Microsoft Entra 外部 ID 为通过身份验证的用户颁发安全令牌时,它会包括在安全令牌的角色声明中分配给用户或组的角色的名称。 然后,在请求中接收该安全令牌的应用程序可以根据角色声明中的值做出授权决策。

提示

立即试用

若要试用此功能,请转到 Woodgrove Groceries 演示并启用“基于角色的访问控制”用例。

开发人员还可使用安全组在应用程序中实现 RBAC,其中特定组中用户的成员身份被解释为他们的角色成员身份。 当组织使用安全组时,组声明将包含在令牌中。 组声明指定在当前外部租户中分配给用户的所有组的标识符。

提示

立即试用

若要试用此功能,请转到 Woodgrove Groceries 演示并启用“基于组的访问控制”用例。

应用角色和组

尽管可以使用应用角色或组进行授权,但它们之间的关键差异可能会影响你将哪一种用于你的场景的决定。

应用角色
它们特定于应用程序,并在应用注册中定义。 它们不特定于应用,而是特定于外部租户。
无法跨应用程序共享。 可在多个应用程序中使用。
删除应用注册时,应用角色会被删除。 即使删除了应用,组也会保持不变。
roles 声明中提供。 groups 声明中提供。

创建安全组

安全组可管理用户和计算机对共享资源的访问权限。 可以创建安全组,以便所有组成员具有一组相同的安全权限。

要创建安全组,请执行以下步骤:

  1. 以条件访问管理员、安全管理员或全局管理员的身份登录到 Microsoft Entra 管理中心
  2. 如果你有权访问多个租户,请使用顶部菜单中的“设置”图标 ,通过“目录 + 订阅”菜单切换到你的外部租户
  3. 浏览到“标识”>“”>“所有组”。
  4. 选择新建组
  5. 在“组类型”下拉列表中选择“安全性”。
  6. 为安全组输入组名称,例如 Contoso_App_Administrators
  7. 输入安全组的组说明,例如 Contoso 应用安全管理员
  8. 选择“创建”。

新安全组将显示在“所有组”列表中。 如果没有立即看到它,请刷新页面。

Microsoft Entra 外部 ID 可以在令牌中包含用户的组成员身份信息(可在应用程序内使用)。 你将在将用户和组分配到角色部分中了解如何将组声明添加到令牌。

为应用程序声明角色

  1. 以条件访问管理员、安全管理员或全局管理员的身份登录到 Microsoft Entra 管理中心

  2. 如果你有权访问多个租户,请使用顶部菜单中的“设置”图标 ,通过“目录 + 订阅”菜单切换到你的外部租户

  3. 浏览到“标识”>“应用程序”>“应用注册”。

  4. 选择一个应用程序,以便在其中定义应用角色。

  5. 选择“应用角色”,然后选择“创建应用角色”。

  6. 在“创建应用角色”窗格中,输入角色的设置。 下表对每个设置及其参数进行了说明。

    字段 说明 示例
    显示名称 应用分配体验中显示的应用角色显示名称。 此值可以包含空格。 Orders manager
    允许的成员类型 指定是否可以将此应用角色分配给用户和/或应用程序。 Users/Groups
    指定应用程序在令牌中所需的角色声明的值。 该值应与应用程序代码中引用的字符串完全匹配。 该值不能包含空格。 Orders.Manager
    说明 在管理应用分配体验期间显示的应用角色的更详细说明。 Manage online orders.
    要启用此应用角色吗? 指定是否启用应用角色。 若要删除应用角色,请取消选中此复选框,并在尝试删除操作之前应用更改。 已选中
  7. 选择“应用”以创建应用程序角色。

将用户和组分配到角色

在应用程序中添加应用角色以后,管理员可将此角色分配给用户和组。 可以通过管理中心为用户或组分配角色,也可以使用 Microsoft Graph 以编程方式进行分配。 当分配到各种应用角色的用户登录到应用程序时,其令牌会在 roles 声明中具有其分配的角色。

若要使用 Azure 门户将用户和组分配给应用程序角色,请执行以下操作:

  1. 以条件访问管理员、安全管理员或全局管理员的身份登录到 Microsoft Entra 管理中心
  2. 如果你有权访问多个租户,请使用顶部菜单中的“设置”图标 ,通过“目录 + 订阅”菜单切换到你的外部租户
  3. 浏览到“标识”>“应用程序”>“企业应用程序”。
  4. 选择“所有应用程序”,查看所有应用程序的列表。 如果应用程序未显示在列表中,请使用“所有应用程序”列表顶部的筛选器来限制此列表,或者在列表中向下滚动寻找你的应用程序。
  5. 选择一个应用程序,以便在其中为角色分配用户或安全组。
  6. 在“管理”下,选择“用户和组”。
  7. 选择“添加用户”,打开“添加分配”窗格 。
  8. 在“添加分配”窗格中,选择“用户和组”。 随即显示用户和安全组的列表。 可以选择列表中的多个用户和组。
  9. 选择用户和组后,选择“选择”。
  10. 在“添加分配”窗格中,选择“选择角色”。 随即显示为应用程序定义的所有角色。
  11. 选择一个角色,然后选择“选择”。
  12. 选择“分配”可完成将用户和组分配到应用的操作。
  13. 确认已添加的用户和组显示在“用户和组”列表中。

若要测试应用程序,请退出登录并使用已分配角色的用户再次登录。 检查安全令牌,确保其包含用户的角色。

向安全令牌添加组声明

若要在安全令牌中发出组成员身份声明,请执行以下步骤:

  1. 以条件访问管理员、安全管理员或全局管理员的身份登录到 Microsoft Entra 管理中心
  2. 如果你有权访问多个租户,请使用顶部菜单中的“设置”图标 ,通过“目录 + 订阅”菜单切换到你的外部租户
  3. 浏览到“标识”>“应用程序”>“应用注册”。
  4. 选择要在其中添加组声明的应用程序。
  5. 在“管理”下,选择“令牌配置” 。
  6. 选择“添加组声明”。
  7. 选择要包含在安全令牌中的组类型。
  8. 对于“按类型自定义令牌属性”,选择“组 ID”。
  9. 选择“添加”以添加组声明。

将成员添加到组

在应用程序中添加了应用组声明后,请将用户添加到安全组。 如果没有安全组,请创建一个安全组

  1. 以条件访问管理员、安全管理员或全局管理员的身份登录到 Microsoft Entra 管理中心
  2. 如果你有权访问多个租户,请使用顶部菜单中的“设置”图标 ,通过“目录 + 订阅”菜单切换到你的外部租户
  3. 浏览到“标识”>“”>“所有组”。
  4. 选择要管理的组。
  5. 选择“成员”。
  6. 选择“+ 添加成员”。
  7. 滚动浏览列表或在搜索框中输入名字。 可以选择多个名称。 准备就绪后,选择“选择”。
  8. “组概述”页面将更新,以显示当前添加到组的成员数。

若要测试应用程序,请退出登录,然后使用已添加到安全组的用户再次登录。 检查安全令牌,确保其包含用户的组成员身份。

组和应用程序角色支持

外部租户遵循 Microsoft Entra 用户和组管理模型以及应用程序分配。 许多核心 Microsoft Entra 功能正在分阶段引入到外部租户中。

下表显示了当前有哪些功能可用。

功能 当前是否可用?
创建对资源的应用程序角色 是,通过修改应用程序清单
向用户分配应用程序角色
向组分配应用程序角色 是,只能通过 Microsoft Graph 进行
将应用程序角色分配给应用程序 是,通过应用程序权限
将用户分配到应用程序角色
将应用程序分配到应用程序角色(应用程序权限)
将组添加到应用程序/服务主体(组声明) 是,只能通过 Microsoft Graph 进行
通过 Microsoft Entra 管理中心创建/更新/删除客户(本地用户)
通过 Microsoft Entra 管理中心为客户(本地用户)重置密码
通过 Microsoft Graph 创建/更新/删除客户(本地用户)
通过 Microsoft Graph 为客户(本地用户)重置密码 是,仅当服务主体添加到全局管理员角色时
通过 Microsoft Entra 管理中心创建/更新/删除安全组
通过 Microsoft Graph API 创建/更新/删除安全组
使用 Microsoft Entra 管理中心更改安全组成员
使用 Microsoft Graph API 更改安全组成员
纵向扩展到 50,000 个用户和 50,000 个组 当前不可用
将 50,000 个用户添加到至少两个组 当前不可用

后续步骤