什么是基于角色的访问控制 (RBAC)?

对于任何使用云的组织而言,云资源的访问权限管理都是一项重要功能。 基于角色的访问控制 (RBAC) 可帮助你管理谁有权访问 Azure 资源、他们可以对这些资源执行哪些操作以及他们有权访问哪些区域。

RBAC 是在 Azure 资源管理器基础上构建的授权系统,针对 Azure 中的资源提供精细的访问权限管理。

RBAC 的作用是什么?

下面是 RBAC 的作用的一些示例:

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

使用 RBAC 的最佳做法

使用 RBAC,可以在团队中对职责进行分配,仅向用户授予执行作业所需的访问权限。 请勿向每个人授予 Azure 订阅或资源的无限制权限,只能允许他们在特定的范围执行某些操作。

规划访问控制策略时,最佳做法是授予用户完成工作所需的最低权限。 下图显示了与 RBAC 使用有关的建议模式。

RBAC 和最小特权

RBAC 的工作原理

使用 RBAC 控制资源访问权限的方式是创建角色分配。 这是一个需要理解的重要概念 - 它涉及到如何强制实施权限。 角色分配包含三个要素:安全主体、角色订阅和范围。

安全主体

安全主体是一个对象,表示请求访问 Azure 资源的用户、组或服务主体。

角色分配的安全主体

  • 用户 - 在 Azure Active Directory 中具有配置文件的人员。
  • 组 - 在 Azure Active Directory 中创建的一组用户。 将某个角色分配到某个组时,该组中的所有用户都拥有该角色。
  • 服务主体 - 应用程序或服务用来访问特定 Azure 资源的安全标识。 可将服务主体视为应用程序的用户标识(用户名和密码或证书)。

角色定义

角色定义是权限的集合。 它有时简称为“角色”。 角色定义列出可以执行的操作,例如读取、写入和删除。 角色可以是高级别的(例如所有者),也可以是特定的(例如虚拟机读取者)。

角色分配的角色定义

Azure 包含多个可用的内置角色。 下面列出了四个基本的内置角色。 前三个角色适用于所有资源类型。

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

剩余的内置角色允许管理特定的 Azure 资源。 例如,虚拟机参与者角色允许用户创建和管理虚拟机。 如果内置角色不能满足组织的特定需求,则你可以创建自己的自定义角色

Azure 引入了数据操作(目前以预览版提供),用于授予对对象中数据的访问权限。 例如,如果某个用户对某个存储帐户拥有读取数据的访问权限,则该用户可以读取该存储帐户中的 Blob 或消息。 有关详细信息,请参阅了解角色定义

范围

范围是访问权限适用的边界。 分配角色时,可以通过定义范围来进一步限制允许的操作。 若要将某人分配为网站参与者,但只针对一个资源组执行此分配,则可使用范围。

在 Azure 中,可在下述多个级别指定范围:订阅、资源组或资源。 范围采用父子关系结构。

角色分配的范围

在父范围授予访问权限时,这些权限会继承到子范围。 例如:

  • 如果在订阅范围向某个组分配了读取者角色,则该组的成员可以查看订阅中的每个资源组和资源。
  • 如果在资源组范围向某个应用程序分配了参与者角色,则该应用程序可以管理该资源组中所有类型的资源,但不能管理订阅中其他资源组的资源。

角色分配

角色分配是出于授予访问权限的目的,在特定的范围将角色定义绑定到用户、组或服务主体的过程。 通过创建角色分配来授予访问权限,通过删除角色分配来撤销访问权限。

下图显示了角色分配的示例。 在此示例中,为“营销”组分配了医药销售资源组的参与者角色。 这意味着,“营销”组中的用户可以在医药销售资源组中创建或管理任何 Azure 资源。 “营销”用户无权访问医药销售资源组外部的资源,除非他们属于另一个角色分配。

用于控制访问权限的角色分配

可以使用 Azure 门户、Azure CLI、Azure PowerShell、Azure SDK 或 REST API 创建角色分配。 每个订阅中最多可以包含 2000 个角色分配。 若要创建和删除角色分配,必须拥有 Microsoft.Authorization/roleAssignments/* 权限。 此权限是通过所有者用户访问管理员角色授予的。

后续步骤