如何为Azure Blob容器生成包含't'权限的SAS令牌
结论先行
Azure门户当前不支持直接勾选t(标签操作)权限生成SAS,你可以通过PowerShell基于账户密钥生成SAS时手动指定权限参数,即可添加t权限。
Azure门户限制说明
当前Azure门户的SAS生成图形界面的可选权限列表未包含t权限选项,无法通过门户直接生成带t权限的SAS令牌,仅能通过命令行工具实现。
PowerShell 操作步骤(基于账户密钥生成)
- 步骤1:安装Az.Storage模块(已安装可跳过)
执行安装命令:Install-Module -Name Az.Storage -Scope CurrentUser -Force
导入模块:Import-Module Az.Storage - 步骤2:登录Azure账户
执行命令完成身份验证:Connect-AzAccount
若有多个租户,可指定租户ID:Connect-AzAccount -Tenant <你的租户ID> - 步骤3:定义配置参数
按需替换下方参数值:# 资源组名称 $resourceGroupName = "your-resource-group-name" # 存储账户名称 $storageAccountName = "your-storage-account-name" # 要授权的容器名称(容器级SAS需要,Blob级也需要填写所属容器) $containerName = "your-container-name" # 权限组合,按需添加,t为标签操作权限,必须小写 # 示例:r=读,w=写,t=标签操作,三个权限组合写为rwt $sasPermissions = "rwt" # SAS有效期,示例为7天后过期,可按需调整 $sasExpiryTime = (Get-Date).AddDays(7) - 步骤4:获取存储账户上下文(基于账户密钥)
$storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -Name $storageAccountName $ctx = $storageAccount.Context - 步骤5:生成SAS令牌
根据你的授权范围二选一执行:- 生成容器级SAS(对容器下所有Blob生效)
$sasToken = New-AzStorageContainerSASToken -Name $containerName -Permission $sasPermissions -ExpiryTime $sasExpiryTime -Context $ctx - 生成Blob级SAS(仅对指定单个Blob生效)
$sasToken = New-AzStorageBlobSASToken -Container $containerName -Blob "your-blob-name" -Permission $sasPermissions -ExpiryTime $sasExpiryTime -Context $ctx
- 生成容器级SAS(对容器下所有Blob生效)
- 步骤6:获取SAS令牌
执行Write-Output $sasToken即可输出生成的带t权限的SAS令牌,拼接至资源URL后即可使用。
注意事项
- 权限参数中的
t为大小写敏感,必须使用小写才能生效 - 该方案基于账户密钥生成SAS,只要你有存储账户的密钥读取权限即可使用,不需要额外的RBAC高权限
- 建议按需设置最小权限和最短有效期,降低SAS泄露后的安全风险
内容的提问来源于stack exchange,提问作者statler
相关产品推荐
相关产品推荐

