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

如何通过ACL调用Azure存储REST API列出容器指定目录Blob

结合ACL与Azure存储REST API列出特定目录下Blob的实现方案

核心结论

该需求可正常实现,不属于REST API功能限制,此前调用失败是接口选型和参数使用错误导致。

问题根因

  • 此前使用的https://myaccount.blob.core.windows.net/cars?restype=container&comp=list是传统非分层命名空间Blob存储的列容器接口,该接口基于扁平命名空间设计,不识别ADLS Gen2的目录级ACL隔离逻辑:只要调用者持有容器执行权限,就会返回容器根路径下所有Blob前缀(即volvo、tesla这类目录条目),因此会暴露无权限目录的存在。
  • 尝试拼接目录路径、修改restype参数无效的原因是:传统Blob端点(blob.core.windows.net)本身不支持目录类型的资源操作,自然无法识别directory类的restype参数。

正确调用方式

  • 前提确认:存储账户已启用分层命名空间(HNS),当前已成功配置目录ACL说明该前提已满足。
  • 接口替换:放弃传统Blob端点的列容器接口,改用ADLS Gen2专属的DFS端点列路径接口,请求格式如下:
GET https://<你的存储账户名>.dfs.core.windows.net/cars/volvo?recursive=false&resource=filesystem

关键配置说明:

  • 端点从blob.core.windows.net替换为dfs.core.windows.net
  • 直接将目标目录路径(/volvo)拼接在容器名(cars)之后
  • 无需传递restype参数,固定传resource=filesystem标识列文件系统路径操作
  • recursive=false表示仅列当前目录下的直接子项,设为true可递归列出所有嵌套文件
  • 权限适配:此前配置的权限完全符合要求:容器级执行权限是路径遍历的必要权限,volvo目录的Read权限足够支撑目录内容列举,无需额外配置RBAC,也无需授予其他目录的任何权限。

调用效果

使用volvo服务主体的身份完成鉴权调用上述接口时,仅会返回volvo目录下的文件与子目录条目,不会返回同级tesla目录的任何相关信息,完全满足目录级隔离、不暴露其他目录存在的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:14:51