使用 Azure 角色分配条件授予对 Azure Blob 存储的访问权限
基于属性的访问控制 (ABAC) 是一个授权策略,根据与安全主体、资源、环境以及请求本身关联的属性定义访问级别。 使用 ABAC,可以基于使用这些属性表达为谓词的条件向安全主体授予对资源的访问权限。
Azure ABAC 构建在 Azure 基于角色的访问控制 (Azure RBAC) 基础之上,添加了 Azure 角色分配的条件。 它使你能够基于主体、资源、请求和环境属性创建角色分配条件。
重要
Azure 基于属性的访问控制 (Azure ABAC) 已正式发布 (GA),用于使用标准和高级存储帐户性能层中的 request
、resource
、environment
和 principal
属性控制对 Azure Blob 存储、Azure Data Lake Storage Gen2 和 Azure 队列的访问。 目前,“容器元数据”资源属性和“列出 Blob 操作的所含内容”请求属性处于预览状态。 有关 Azure 存储 ABAC 的完整功能状态信息,请参阅 Azure 存储中条件功能的状态。
有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Azure 预览版的补充使用条款。
Azure 存储中的条件概述
可以使用 Microsoft Entra ID (Microsoft Entra ID) 通过 Azure RBAC 来授权对 Azure 存储资源的请求。 Azure RBAC 可帮助你通过使用角色定义和角色分配定义谁有权访问资源以及他们可对这些资源执行哪些操作,来管理对资源的访问。 Azure 存储定义了一组 Azure 内置角色,它们包含用于访问 Azure 存储数据的通用权限集。 还可以定义具有选定权限集的自定义角色。 Azure 存储支持存储帐户和 Blob 容器的角色分配。
Azure ABAC 构建在 Azure RBAC 基础之上,它在特定操作上下文中添加了角色分配条件。 角色分配条件是在为针对存储资源的操作授权时评估的附加检查。 此条件表达为谓词,该谓词使用与下列其中任何一项关联的属性:
- 请求授权的安全主体
- 请求访问的资源
- 请求参数
- 发出请求的环境
使用角色分配条件的好处如下:
- 实现对资源的更精细访问 - 例如,如果你希望仅当你存储帐户中的 Blob 标记为 Project=Sierra 时,才向用户授予对这些 Blob 的读取访问权限,则可以使用标记作为属性,针对读取操作使用条件。
- 减少必须创建和管理的角色分配数量 - 为此,可对某个安全组使用通用角色分配,然后使用一个条件来限制该组中各个成员的访问权限,该条件会对主体的属性与所要访问的特定资源(例如 Blob 或容器)的属性进行匹配。
- 使用具有业务含义的属性来表达访问控制规则 - 例如,可以使用代表项目名称、业务应用程序、组织职能或分类级别的属性来表达条件。
使用条件的弊端是在整个组织中使用属性时需要结构化且一致的分类。 必须保护属性以防止访问权限被恶意利用。 此外,必须认真设计并评审条件的影响。
Azure Blob 存储支持 Azure 存储中的角色分配条件。 还可以将条件用于在 Data Lake Storage 上启用了分层命名空间 (HNS) 功能的帐户。
支持的属性和操作
可以针对 DataActions 配置角色分配条件以实现这些目标。 可以将条件用于自定义角色,或选择内置角色。 请注意,不支持通过存储资源提供程序为管理操作使用条件。
可以向内置角色或自定义角色添加条件。 可对其使用角色分配条件的内置角色包括:
可将条件用于自定义角色,但前提是该角色包含支持条件的操作。
如果使用基于 Blob 索引标记的条件,则应使用“存储 Blob 数据所有者”,因为此角色包括标记操作的权限。
注意
使用分层命名空间的 Data Lake Storage 存储帐户不支持 Blob 索引标记。 不应在启用了 HNS 的存储帐户上使用索引标记创建角色分配条件。
Azure 角色分配条件格式允许在条件中使用 @Principal
、@Resource
、@Request
或 @Environment
属性。 @Principal
属性是主体(例如用户、企业应用程序(服务主体)或托管标识)上的自定义安全属性。 @Resource
属性是指正在访问的存储资源(例如存储帐户、容器或 Blob)的现有属性。 @Request
属性是指存储操作请求中包含的属性或参数。 属性 @Environment
是指网络环境或请求的日期和时间。
Azure RBAC 对每个订阅支持的角色分配数量有限。 如果需要创建数千个 Azure 角色分配,可能会遇到此限制。 管理数百甚至数千个角色分配可能很有难度。 在某些情况下,可以使用条件来减少存储帐户上的角色分配数量,使其更易于管理。 可以使用主体的条件和 Microsoft Entra 自定义安全属性来调整角色分配的管理。
Azure 存储中的条件功能的状态
Azure 基于属性的访问控制 (Azure ABAC) 已正式发布 (GA),用于使用标准和高级存储帐户性能层中的 request
、resource
、environment
和 principal
属性控制对 Azure Blob 存储、Azure Data Lake Storage 和 Azure 队列的访问。 目前,“容器元数据”资源属性和“列出 blob 操作的所含内容”请求属性处于预览状态。
下表按存储资源类型和属性类型显示 ABAC 的当前状态。 还会显示特定属性的异常。
资源类型 | 特性类型 | 属性 | 可用性 |
---|---|---|---|
Blob Data Lake Storage 队列 |
请求 资源 环境 主体 |
除此表中注明的属性外的所有属性 | GA |
Data Lake Storage | 资源 | 快照 | 预览 |
Blob Data Lake Storage |
资源 | 容器元数据 | 预览 |
Blob | 请求 | 列出 blob include | 预览 |
有关 beta 版本、预览版或尚未正式发布的版本的 Azure 功能所适用的法律条款,请参阅 Azure 预览版的补充使用条款。
注意
Data Lake Storage 存储帐户不支持某些存储功能,这些帐户使用分层命名空间 (HNS)。 若要了解详细信息,请参阅 Blob 存储功能支持。
为存储帐户启用分层命名空间时,不支持以下 ABAC 属性:
后续步骤
- Azure 角色分配条件的先决条件
- 教程:使用 Azure 门户添加角色分配条件来限制对 Blob 的访问
- Azure 存储中 Azure 角色分配条件的操作和属性
- 示例 Azure 角色分配条件
- 排查 Azure 角色分配条件的问题