You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure Blueprint创建管理组级Deny Assignment阻止角色读取Blob Storage内容

Azure Terraform State 存储权限隔离方案解答

可行性确认

可以实现你的需求,Azure Blueprint 完全支持在管理组层级创建 Deny Assignment 完成权限拦截,也可以搭配其他 Azure 原生能力实现更灵活的配置。

你的场景本质是拆分存储账户的管理平面权限和数据平面权限,属于 Azure RBAC 原生支持的权限隔离逻辑,不需要额外的第三方工具。

具体实现方案

方案一:使用 Azure Blueprint 实现全局管控

  • 在管理组层级的蓝图 artifacts 中添加 Deny Assignment 规则,作用范围覆盖你需要管控的所有订阅/资源组
  • 拦截的操作指定为 Blob 数据平面的读写操作:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read、Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
  • 拦截对象指定为 Owner、Contributor 角色对应的所有安全主体
  • 配置排除项,将你用于 Terraform 流水线的服务主体加入排除列表,仅允许该主体拥有 Blob 数据的读写权限
  • 配置完成后,Owner、Contributor 角色的用户仅能对存储账户做管理操作(比如修改配置、调整容量、删除账户等),无法直接访问 Blob 内存储的 Terraform State 内容,也无法自行生成 SAS Token 绕过权限限制。

方案二:不用 Blueprint 的轻量化替代方案

如果不需要全局管控所有存储账户,也可以用以下配置实现同等效果:

  • 存储账户关闭公共访问、禁用本地访问密钥,强制所有 Blob 访问走 Azure AD 身份验证
  • 给 Owner、Contributor 角色仅分配Storage Account Contributor权限,该权限仅包含存储账户管理平面操作权限,没有任何 Blob 数据的访问权限
  • 单独给 Terraform 服务主体分配存储账户对应容器的Storage Blob Data Contributor权限
  • 可以额外搭配 Azure Policy 规则,禁止所有非指定的安全主体被分配 Blob 数据相关权限,避免用户自行放开权限。

注意事项

  • Deny Assignment 的优先级高于所有 Allow 类型的 RBAC 权限,配置前务必确认要排除的服务主体清单,避免 Terraform 流水线无法读写 State 文件导致部署失败。
  • 可以额外给存储账户开启 Blob 版本控制、软删除、资源锁,防止 State 文件被误操作损坏或丢失。

内容的提问来源于stack exchange,提问作者dschniepp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:27:05