Azure跨存储账户类型创建单个Blob专属SAS令牌的方法问询
针对单个Blob生成SAS令牌的解决方案
当然可以生成仅对单个Blob有访问权限的SAS令牌,而且不管Azure存储账户的类型是什么(标准或高级存储账户都支持这种Blob级别的SAS),下面给你详细说明:
1. PowerShell实现方式
你提到的New-AzStorageBlobSASToken命令正是用来生成单个Blob专属SAS的正确工具——之前你用的New-AzStorageAccountSASToken是针对整个存储账户服务级别的SAS,所以才会获得全Blob服务的访问权限。
这里给你调整后的PowerShell脚本,专门生成指定Blob的SAS令牌:
# 选择目标存储账户 $SA = Get-AzStorageAccount | Select-Object StorageAccountName,ResourceGroupName,Location,SkuName,CreationTime | Out-GridView -PassThru # 获取存储账户密钥 $key = Get-AzStorageAccountKey -ResourceGroupName $SA.ResourceGroupName -Name $SA.StorageAccountName # 创建存储上下文 $context = New-AzStorageContext -StorageAccountName $SA.StorageAccountName -StorageAccountKey $key.value[0] # 填写目标Blob所在的容器名称和Blob文件名 $containerName = "your-container-name" $blobName = "your-target-blob-name" # 生成仅针对该Blob的SAS令牌,可按需调整权限和有效期 $blobSas = New-AzStorageBlobSASToken -Container $containerName -Blob $blobName ` -Permission "r" # 这里仅设置读取权限,可根据需求调整为racwdlup等权限组合 -ExpiryTime (Get-Date).AddHours(24) # 设置SAS有效期为24小时,可自行修改时长 -Context $context Write-Output $blobSas
2. Azure门户实现方式
其实门户是可以创建单个Blob的SAS的,步骤很简单:
- 登录Azure门户,找到目标存储账户
- 进入存储账户的「容器」页面,打开目标容器
- 找到需要生成SAS的Blob,点击右侧的「...」菜单,选择「生成SAS」
- 在弹出的面板里设置权限、有效期等参数,点击「生成SAS和连接字符串」就能得到仅该Blob可用的SAS令牌
额外注意事项
- 权限最小化:一定要严格控制权限,比如只给
r(读取)权限,避免赋予不必要的写入、删除等高风险权限 - 有效期设置:建议设置合理的过期时间,降低令牌泄露后的安全风险
- 兼容性:不管是标准的General Purpose v2存储账户,还是高级的Blob存储账户,都完全支持这种Blob级别的服务SAS
内容的提问来源于stack exchange,提问作者Benyamin Famili
相关产品推荐
相关产品推荐

