分配 Azure 角色以访问 blob 数据

Azure Active Directory (AAD) 通过 Azure 基于角色的访问控制 (Azure RBAC) 授权访问受保护的资源。 Azure 存储定义了一组 Azure 内置角色,其中包含用于访问 blob 数据的常用权限集。

将 Azure 角色分配到 Azure AD 安全主体后,Azure 会向该安全主体授予对这些资源的访问权限。 Azure AD 安全主体可以是用户、组、应用程序服务主体,也可以是 Azure 资源的托管标识

若要详细了解如何使用 Azure AD 来授予对 blob 数据的访问权限,请参阅使用 Azure Active Directory 授予对 blob 的访问权限

注意

本文演示如何分配 Azure 角色以访问存储帐户中的 blob 数据。 若要了解如何为 Azure 存储中的管理操作分配角色,请参阅使用 Azure 存储资源提供程序访问管理资源

分配 Azure 角色

可以使用 Azure 门户、PowerShell、Azure CLI 或 Azure 资源管理器模板为数据访问分配角色。

要使用 Azure AD 凭据访问 Azure 门户中的 blob 数据,用户必须具有以下角色分配:

  • 数据访问角色,例如“存储 Blob 数据读取者”或“存储 Blob 数据参与者”
  • 至少分配 Azure 资源管理器“读取者”角色

要了解如何将这些角色分配给用户,请按照 使用 Azure 门户分配 Azure 角色中提供的说明进行操作。

“读取者”角色是一个 Azure 资源管理器角色,可让用户查看存储帐户资源,但不允许修改这些资源。 该角色不提供对 Azure 存储中的数据的读取权限,而只提供对帐户管理资源的读取权限。 “读者”角色是必需的,以便用户可以导航到 Azure 门户中的 blob 容器。

例如,如果在名为 sample-container 的容器级别向用户 Mary 分配“存储 Blob 数据参与者”角色,则会向 Mary 授予对该容器中所有 Blob 的读取、写入和删除访问权限。 但是,如果 Mary 希望在 Azure 门户中查看某个 Blob,“存储 Blob 数据参与者”角色本身无法提供足够的权限用于在门户中导航,因此 Mary 无法查看该 Blob。 必须拥有其他权限,才能在门户中导航和查看门户中显示的其他资源。

必须为用户分配“读者”角色,才能将 Azure 门户与 Azure AD 凭据结合使用。 但是,如果已为用户分配具有 Microsoft.Storage/storageAccounts/listKeys/action 权限的角色,则用户可以通过共享密钥授权,将该门户与存储帐户密钥结合使用。 要使用存储帐户密钥,必须允许存储帐户访问共享密钥。 有关允许或禁止共享密钥访问的详细信息,请参阅阻止对 Azure 存储帐户进行共享密钥授权

还可以分配 Azure 资源管理器角色,提供比“读者”角色更多的权限。 建议将分配尽可能少的权限作为一种安全最佳做法。 有关详细信息,请参阅 Azure RBAC 的最佳做法

注意

在为自己分配数据访问角色之前,可以通过 Azure 门户访问存储帐户中的数据,因为 Azure 门户还可以使用帐户密钥进行数据访问。 有关详细信息,请参阅选择如何在 Azure 门户中授予对 blob 数据的访问权限

请记住以下有关 Azure 存储中 Azure 角色分配的要点:

  • 创建 Azure 存储帐户时,系统不会自动向你分配通过 Azure AD 访问数据的权限。 你必须为自己显式分配一个用于 Azure 存储的 Azure 角色。 可以在订阅、资源组、存储帐户、容器级别分配该角色。
  • 如果使用 Azure 资源管理器只读锁锁定存储帐户,则该锁会阻止将范围限定为存储帐户或容器的 Azure 角色分配。
  • 如果设置了适当的权限以允许通过 Azure AD 访问数据,却无法访问数据,你会收到“AuthorizationPermissionMismatch”错误。 请务必留出足够的时间来复制在 Azure AD 中所做的权限更改,并确保没有任何阻止访问的拒绝分配,请参阅了解 Azure 拒绝分配

后续步骤