什么是 Azure RBAC?

已完成

当涉及到标识和访问时,考虑使用公有云的大多数组织都会关心两个问题:

  1. 确保用户离开组织后无法访问云中的资源。
  2. 在自治和中心治理之间达到恰当的平衡,例如,让项目团队能够在云中创建和管理虚拟机,同时在中心控制这些 VM 用来与其他资源通信的网络。

Microsoft Entra ID 和 Azure 基于角色的访问控制 (Azure RBAC) 协同工作,从而轻松实现这些目标。

Azure 订阅

首先,请记住每个 Azure 订阅都会与一个 Microsoft Entra 目录关联。 该目录中的用户、组和应用程序可以管理 Azure 订阅中的资源。 订阅使用 Microsoft Entra ID 进行单一登录 (SSO) 和访问管理。 使用 Microsoft Entra Connect 可以将本地 Active Directory 扩展到云。 借助此功能,员工可以使用现有工作标识管理其 Azure 订阅。 禁用本地 Active Directory 帐户时,它会自动失去与 Microsoft Entra ID 关联的所有 Azure 订阅的访问权限。

什么是 Azure RBAC?

Azure 基于角色的访问控制 (Azure RBAC) 是在 Azure 资源管理器基础上构建的授权系统,它针对 Azure 中的资源提供精细的访问管理。 使用 Azure RBAC,可以授予用户完成工作所需的确切访问权限。 例如,可以使用 Azure RBAC 让一名员工管理订阅中的虚拟机,而让另一名员工管理同一订阅中的 SQL 数据库。

以下视频详细介绍了 Azure RBAC:

可通过将相应的 Azure 角色分配给特定范围内的用户、组和应用程序授予访问权限。 角色分配的范围可以是管理组、订阅、资源组或单个资源。 分配在父范围内的角色也会将访问权限授予给其中所含的子范围。 例如,对某个资源组具有访问权限的用户可以管理其包含的所有资源,如网站、虚拟机和子网。 分配的 Azure 角色决定了用户、组或应用程序可以在该范围内管理的资源。

下图显示了经典订阅管理员角色、Azure 角色和 Microsoft Entra 角色在较高级别的关联。 在更高的范围(例如整个订阅)分配的角色会由子范围(例如服务实例)继承。

显示经典订阅管理员角色、Azure 角色和 Microsoft Entra 角色在较高级别的关联的关系图。

在上图中,一个订阅只与一个 Microsoft Entra 租户相关联。 另请注意,一个资源组可以有多个资源,但只能与一个订阅相关联。 虽然这在图中并不明显,但是一个资源只能绑定到一个资源组。

Azure RBAC 有什么用途?

利用 Azure RBAC,你可以对你控制的 Azure 资源授予访问权限。 假设需要管理开发、工程和营销团队对 Azure 资源的访问权限。 你已开始接收访问请求,因此需要快速了解如何管理对 Azure 资源的访问权限。

下面是可以通过 Azure RBAC 实现的一些情况:

  • 允许一位用户管理订阅中的虚拟机,并允许另一位用户管理虚拟网络
  • 允许数据库管理员组管理订阅中的 SQL 数据库
  • 允许某位用户管理资源组中的所有资源,例如虚拟机、网站和子网
  • 允许某个应用程序访问资源组中的所有资源

Azure 门户中的 Azure RBAC

在 Azure 门户的多个区域中,都有一个名为“访问控制(IAM)”(也称为标识和访问管理)的窗格。 在该窗格上,可以看到谁访问了该区域以及他们的角色。 使用此窗格,可以授予或删除访问权限。

下面显示了资源组的访问控制 (IAM) 窗格的示例。 在此示例中,已为 Alain 分配了此资源组的“备份操作员”角色。

Azure 门户的屏幕截图,显示“访问控制角色分配”窗格,其中突出显示了“备份操作员”部分。

Azure RBAC 的工作原理是怎样的?

可通过创建控制权限执行方式的角色分配,使用 Azure RBAC 控制对资源的访问。 要创建角色分配,需要 3 个元素:安全主体、角色定义和范围。 可以将这些元素视作“对象”、“内容”和“位置”。

1.安全主体(对象)

安全主体只是要向其授予访问权限的用户、组或应用程序的虚拟名称。

显示安全主体的图,其中包括用户、组和服务主体。

2.角色定义(可执行哪些操作)

角色定义是权限的集合。 它有时简称为“角色”。 角色定义列出了可执行的角色权限,例如读取、写入和删除。 角色可以是笼统的(如所有者),也可以是具体的(如虚拟机参与者)。

列出了不同内置角色和自定义角色的图,其中放大显示了参与者角色的定义。

Azure 包含多个可用的内置角色。 下面列出了 4 个基本的内置角色:

  • 所有者:拥有对所有资源的完全访问权限,包括将访问权限委托给其他用户的权限
  • 参与者:可以创建和管理所有类型的 Azure 资源,但无法将访问权限授予其他用户
  • 读者:可以查看现有的 Azure 资源
  • 用户访问管理员:可管理用户对 Azure 资源的访问

如果内置角色不能满足组织的特定需求,则可自行创建自定义角色。

3.范围(位置)

范围是应用访问权限的位置。 如果想要将某人设为网站参与者,但只针对一个资源组,则此功能很有用。

在 Azure 中,可在多个级别指定范围:管理组、订阅、资源组或资源。 范围采用父子关系结构。 在父范围授予访问权限时,这些权限由子范围继承。 例如,如果将“参与者”角色分配给订阅范围中的组,则该订阅中的所有资源组和资源都会继承此角色。

显示要应用范围的不同 Azure 级别的分层表示形式示意图。层次结构(从最高级别开始)按以下顺序排列:管理组、订阅、资源组和资源。

角色分配

一旦确定对象、内容和位置,即可结合使用这些元素来授予访问权限。 角色分配是出于授予访问权限目的,在特定的范围将角色绑定到安全主体的过程。 要授予访问权限,请创建角色分配。 要撤消访问权限,请删除角色分配。

下面的示例展示了如何在销售资源组范围中为“营销”组分配“参与者”角色。

显示“营销”组的示例角色分配过程示意图,该过程是安全主体、角色定义和范围的组合。“营销”组属于组安全主体,并为资源组范围分配了参与者角色。

Azure RBAC 是一种允许模型

Azure RBAC 是一种允许模型。 也就是说,在你分配到角色时,可通过 Azure RBAC 执行特定操作,例如读取、写入或删除。 因此,如果一个角色分配授予你对某个资源组的读取权限,另一角色分配授予你对同一资源组的写入权限,则你将拥有对该资源组的读取和写入权限。

Azure RBAC 具有 NotActions 权限。 可使用 NotActions 创建一组不允许的权限。 通过从 Actions 操作中减去 NotActions 操作可以计算出角色授予的访问权限,即有效权限。 例如,参与者角色同时具有 ActionsNotActions的权限。 Actions 中的通配符 (*) 指示它可以在控制平面上执行所有操作。 然后,在 NotActions 中减去以下操作以计算有效权限:

  • 删除角色和角色分配
  • 创建角色和角色分配
  • 向调用方授予租户范围的“用户访问管理员”访问权限
  • 创建或更新任何蓝图项目
  • 删除任何蓝图项目