本文列出了用于控制 Azure 队列存储资源访问权限的角色分配条件的一些示例。
Important
Azure 基于属性的访问控制 (Azure ABAC) 已正式发布 (GA),用于使用标准和高级存储帐户性能层中的 request、resource、environment 和 principal 属性控制对 Azure Blob 存储、Azure Data Lake Storage Gen2 和 Azure 队列的访问。 目前,分层命名空间的“列出 Blob 操作的所含内容”请求属性和“快照”请求属性处于预览状态。 有关 Azure 存储 ABAC 的完整功能状态信息,请参阅 Azure 存储中条件功能的状态。
有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Azure 预览版的补充使用条款。
Prerequisites
有关添加或编辑角色分配条件的先决条件的信息,请参阅有关条件的先决条件。
本文中的示例摘要
使用下表快速找到适合 ABAC 方案的示例。 该表包含方案的简要说明,并按源(环境、主体、请求和资源)列出了示例中使用的属性。
| Example | Environment | Principal | Request | Resource |
|---|---|---|---|---|
| 速览或清除命名队列中的消息 | queue name | |||
| 允许在特定日期和时间之后速览邮件 | UtcNow | queue name | ||
| 允许从特定子网访问特定队列中的消息 | Subnet | queue name | ||
| 主体属性示例 | ID |
Queue names
本部分包含演示如何基于队列名称限制消息访问的示例。
示例:速览或清除命名队列中的消息
此条件允许用户速览或清除名为 sample-queue 的队列中的消息。 该条件适用于与订阅中的其他用户共享特定队列数据。
Important
为了使此条件对安全主体有效,必须将它添加到包含以下操作的所有角色分配:Microsoft.Storage/storageAccounts/queueServices/queues/messages/read 和 Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete。
显示对命名队列的速览和清除访问的条件示意图。
可以使用 Azure 门户或 Azure PowerShell 将条件添加到角色分配。 该门户有两个用于生成 ABAC 条件的工具 - 可视化编辑器和代码编辑器。 在 Azure 门户中,可以在这两个编辑器之间切换,以在不同的视图中查看条件。 在本文中的“可视化编辑器”选项卡和“代码编辑器”选项卡之间切换,以查看首选门户编辑器的示例。
Add action
选择“添加操作”,然后选择“速览消息”和“清除消息”:
Azure 门户中显示选择速览和清除操作的条件编辑器的屏幕截图。
Build expression
使用下表中的值生成条件的表达式部分:
| Setting | Value |
|---|---|
| Attribute source | Resource |
| Attribute | Queue name |
| Operator | StringEquals |
| Value | {queueName} |
下图显示了将设置输入到 Azure 门户后的情况。 必须对表达式进行分组以确保计算正确。
Environment attributes
本部分包含一些示例,它们演示了如何根据网络环境或当前日期和时间来限制对队列消息的访问。
示例:允许在特定日期和时间之后速览邮件
此条件仅允许在协调世界时 (UTC) 2023 年 5 月 1 日下午 1:00 之后对队列 sample-queue 进行速览访问。
Important
为了使此条件对具有多个角色分配的主体有效,必须将该条件添加到包含以下操作的所有角色分配:Microsoft.Storage/storageAccounts/queueServices/queues/messages/read。
可以使用 Azure 门户或 Azure PowerShell 将条件添加到角色分配。 该门户有两个用于生成 ABAC 条件的工具 - 可视化编辑器和代码编辑器。 在 Azure 门户中,可以在这两个编辑器之间切换,以在不同的视图中查看条件。 在下面的“可视化编辑器”选项卡和“代码编辑器”选项卡之间切换,以查看首选门户编辑器的示例。
Add action
选择“添加操作”,然后选择“速览消息”:
Azure 门户中显示选择仅速览操作的条件编辑器的屏幕截图。
Build expression
使用下表中的值生成条件的表达式部分:
| Setting | Value |
|---|---|
| Attribute source | Resource |
| Attribute | Queue name |
| Operator | StringEquals |
| Value | {queue-name} |
| Logical operator | 'AND' |
| Attribute source | Environment |
| Attribute | UtcNow |
| Operator | DateTimeGreaterThan |
| Value | 2023-05-01T13:00:00.000Z |
下图显示了将设置输入到 Azure 门户后的情况。 必须对表达式进行分组以确保计算正确。
示例:允许从特定子网访问特定队列中的消息
此条件仅允许从虚拟网络 sample-vnet 上的子网 default 放置和更新 sample-queue 中的消息。
Important
为了使此条件对具有多个角色分配的主体有效,必须将该条件添加到包含以下任何操作的所有角色分配:Microsoft.Storage/storageAccounts/queueServices/queues/messages/write。
可以使用 Azure 门户或 Azure PowerShell 将条件添加到角色分配。 该门户有两个用于生成 ABAC 条件的工具 - 可视化编辑器和代码编辑器。 在 Azure 门户中,可以在这两个编辑器之间切换,以在不同的视图中查看条件。 在下面的“可视化编辑器”选项卡和“代码编辑器”选项卡之间切换,以查看首选门户编辑器的示例。
选择“添加操作”,然后选择“放置或更新消息”:
Azure 门户中显示选择放置或更新操作的条件编辑器的屏幕截图。
Build expression
使用下表中的值生成条件的表达式部分:
| Setting | Value |
|---|---|
| Attribute source | Resource |
| Attribute | Queue name |
| Operator | StringEquals |
| Value | container1 |
| Logical operator | 'AND' |
| Attribute source | Environment |
| Attribute | Subnet |
| Operator | StringEqualsIgnoreCase |
| Value | /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Network/virtualNetworks/sample-vnet/subnets/default |
下图显示了将设置输入到 Azure 门户后的情况。 必须对表达式进行分组以确保计算正确。
Principal attributes
若需查看有关如何使用主体属性允许 Blob 数据访问的完整示例,请参阅允许基于标记和自定义安全属性读取 Blob。
Azure 门户中条件编辑器的屏幕截图,其中显示了对命名队列中的消息的速览或清除访问。
Azure 门户中条件编辑器的屏幕截图,其中显示了特定日期和时间后允许的速览访问。
Azure 门户中条件编辑器的屏幕截图,其中显示了允许从特定子网对特定队列进行读取访问。