分配 Azure 角色以访问队列数据
Microsoft Entra ID 通过 Azure 基于角色的访问控制 (Azure RBAC)授权访问受保护的资源。 Azure 存储定义了一组 Azure 内置角色,它们包含用于访问队列数据的通用权限集。
将 Azure 角色分配到 Microsoft Entra 安全主体后,Azure 会向该安全主体授予对这些资源的访问权限。 Microsoft Entra 安全主体可以是用户、组、应用程序服务主体,也可以是 Azure 资源的托管标识。
若要详细了解如何使用 Microsoft Entra ID 来授予对队列数据的访问权限,请参阅使用 Microsoft Entra ID 授予对队列的访问权限。
注意
本文演示如何分配 Azure 角色以访问存储帐户中的队列数据。 若要了解如何为 Azure 存储中的管理操作分配角色,请参阅使用 Azure 存储资源提供程序访问管理资源。
分配 Azure 角色
可以使用 Azure 门户、PowerShell、Azure CLI 或 Azure 资源管理器模板为数据访问分配角色。
若要使用 Microsoft Entra 凭据访问 Azure 门户中的队列数据,用户必须具有以下角色分配:
- 数据访问角色,如“存储队列数据参与者”
- Azure 资源管理器“读者”角色
要了解如何将这些角色分配给用户,请按照 使用 Azure 门户分配 Azure 角色中提供的说明进行操作。
“读取者”角色是一个 Azure 资源管理器角色,可让用户查看存储帐户资源,但不允许修改这些资源。 该角色不提供对 Azure 存储中的数据的读取权限,而只提供对帐户管理资源的读取权限。 “读者”角色是必需的,以便用户导航到 Azure 门户中的队列和消息。
例如,如果在名为 sample-queue 的队列级别将“存储队列数据参与者”角色分配给用户 Mary,则会向 Mary 授予对该队列的读取、写入和删除访问权限 。 但是,如果 Mary 想要查看 Azure 门户中的队列,则“存储队列数据参与者”角色本身不会提供通过门户导航到队列并进行查看的足够权限。 必须拥有其他权限,才能在门户中导航和查看门户中显示的其他资源。
必须向用户分配“读者”角色,才能结合使用 Azure 门户与 Microsoft Entra 凭据。 但是,如果已为用户分配具有 Microsoft.Storage/storageAccounts/listKeys/action 权限的角色,则用户可以通过共享密钥授权,将该门户与存储帐户密钥结合使用。 要使用存储帐户密钥,必须允许存储帐户访问共享密钥。 有关允许或禁止共享密钥访问的详细信息,请参阅阻止对 Azure 存储帐户进行共享密钥授权。
还可以分配 Azure 资源管理器角色,提供比“读者”角色更多的权限。 建议将分配尽可能少的权限作为一种安全最佳做法。 有关详细信息,请参阅 Azure RBAC 的最佳做法。
注意
在为自己分配数据访问角色之前,可以通过 Azure 门户访问存储帐户中的数据,因为 Azure 门户还可以使用帐户密钥进行数据访问。 有关详细信息,请参阅选择如何在 Azure 门户中授予对队列数据的访问权限。
请记住以下有关 Azure 存储中 Azure 角色分配的要点:
- 创建 Azure 存储帐户时,系统不会自动向你分配通过 Microsoft Entra ID 访问数据的权限。 你必须为自己显式分配一个用于 Azure 存储的 Azure 角色。 可以在订阅、资源组、存储帐户或队列级别分配它。
- 分配角色或删除角色分配时,更改最多可能需要 10 分钟才能生效。
- 可以在管理组范围内分配具有数据操作的内置角色。 但是,在极少数情况下,数据操作权限对某些资源类型有效之前,可能会有很长的延迟(长达 12 小时)。 最终将应用权限。 对于具有数据操作的内置角色,在需要及时激活或吊销权限的情况下,不建议在管理组范围内添加或删除角色分配,例如 Microsoft Entra Privileged Identity Management (PIM))。
- 如果存储帐户被 Azure 资源管理器只读锁锁定,那么该锁将阻止将范围限定为存储帐户或队列的 Azure 角色分配。