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

如何生成Azure Storage Account专用密钥:允许数据操作禁止容器/表管理

如何生成仅允许数据操作(禁止创建/删除容器/表)的Azure存储访问凭证

核心思路

你需要的是仅开放数据层操作权限(增删改查Blob/表实体/文件),同时限制资源层操作权限(禁止创建/删除容器、表、文件共享)。Access Keys权限全覆盖,所以必须用SAS或RBAC结合SAS的方案。


方案一:账户SAS(快速生成,支持多服务)

账户SAS可以同时覆盖Blob、Table、File服务,适合批量给开发者共享:

  1. 登录Azure门户,进入目标存储账户的「共享访问签名」页面
  2. 服务选择:勾选需要开放的服务(Blob、Table、File)
  3. 资源类型限制:
    • Blob服务:只勾选「对象」(Object),不要选「服务」「容器」
    • Table服务:只勾选「实体」(Entity),不要选「服务」「表」
    • File服务:只勾选「文件/目录」(File/Directory),不要选「服务」「共享」
      这一步是关键,直接限制了权限仅作用于数据对象,而非容器/表这类顶层资源
  4. 权限设置:勾选数据操作所需的权限,比如r(读)、w(写)、d(删除数据),不要勾选c(创建资源)、d(删除资源)这类资源层权限
  5. 配置SAS的有效期、允许的IP范围(可选)、协议(建议选HTTPS)
  6. 生成SAS后,拼接成连接字符串:
    DefaultEndpointsProtocol=https;AccountName=<你的存储账户名>;EndpointSuffix=core.windows.net;SharedAccessSignature=<生成的SAS令牌>
    

方案二:自定义RBAC角色 + 用户委派SAS(长期可控)

如果需要更灵活的权限管理(比如避免频繁更新SAS有效期),可以用Azure AD RBAC:

  1. 创建自定义RBAC角色,包含以下权限(排除资源层操作):
    • Blob数据操作:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/*
    • 表实体操作:Microsoft.Storage/storageAccounts/tableServices/tables/entities/*
    • 文件数据操作:Microsoft.Storage/storageAccounts/fileServices/shares/files/*
      注意要移除Microsoft.Storage/storageAccounts/blobServices/containers/write、Microsoft.Storage/storageAccounts/tableServices/tables/write这类创建/删除资源的权限
  2. 将该角色分配给开发者的Azure AD账户或服务主体
  3. 开发者可通过Azure AD身份验证生成用户委派SAS,或直接使用Azure AD凭据作为连接字符串(主流SDK均支持Azure AD认证)

注意事项

  • 不要混淆资源类型和权限的对应关系:比如Blob的c权限在「容器」层级是创建容器,在「对象」层级是创建Blob,只要限制资源类型为对象,就不会赋予创建容器的权限
  • 定期轮换SAS令牌,避免权限泄露
  • 如果只需要单一服务的权限,也可以用服务SAS,设置逻辑和账户SAS一致,仅针对单个服务配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:46:09