分配 Azure 角色以访问 blob 数据

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

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

若要详细了解如何使用 Microsoft Entra ID 来授予对 blob 数据的访问权限,请参阅使用 Microsoft Entra ID 授予对 Blob 的访问权限

注意

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

分配 Azure 角色

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

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

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

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

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

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

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

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

注意

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

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

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

注意

可以创建自定义 Azure RBAC 角色,以便对 Blob 数据进行精细访问。 有关详细信息,请参阅 Azure 自定义角色

后续步骤