如何用PowerShell为Azure Data Lake目录生成指定SAS令牌
自动重建绑定存储访问策略的ADLS目录SAS令牌(PowerShell脚本)
前提条件
- Azure自动化账户已获得目标存储账户的存储账户密钥读取权限
- 存储账户已提前创建好无权限/过期时间的存储访问策略
external1 - 目标容器
axexternal及目录/external1/central已存在
完整PowerShell脚本
# 配置核心参数 $storageAccountName = "你的存储账户名称" $resourceGroupName = "你的资源组名称" $containerName = "axexternal" $directoryPath = "/external1/central" $sasPolicyName = "external1" # 自定义权限:示例为读取(r)+列出(l),可按需组合(如rwl、r等) $sasPermissions = "rl" # 自定义过期时间:示例为当前时间后7天,也可设为固定时间如"2024-12-31 23:59:59" $sasExpiryTime = (Get-Date).AddDays(7) # 1. 获取存储账户密钥 $storageKey = (Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName).Value[0] # 2. 创建基于账户密钥的存储上下文(满足密钥签名要求) $storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageKey # 3. 生成绑定策略的目录SAS令牌 $directorySasToken = New-AzStorageContainerSASToken -Context $storageContext ` -Name $containerName ` -Policy $sasPolicyName ` -Permissions $sasPermissions ` -ExpiryTime $sasExpiryTime ` -ResourceType "object" ` -Path $directoryPath # 输出结果(可按需写入自动化变量或其他存储) Write-Output "生成的目录SAS令牌:$directorySasToken"
关键参数说明
- -Context:存储上下文对象,承载存储账户的密钥验证信息,是后续生成SAS的核心身份凭证
- -Policy:指定预先创建的
external1策略,实现SAS与策略绑定,后续可通过吊销策略直接失效所有关联SAS - -Permissions:自定义SAS权限,支持r(读)、w(写)、l(列)、d(删)等多种权限组合,按需调整即可
- -ExpiryTime:自定义SAS过期时间,既可以设为相对时长(如示例的AddDays),也可以设为固定UTC时间
- -ResourceType "object":明确资源类型为目录(ADLS Gen2中目录属于object类型),确保SAS仅作用于目标目录而非整个容器
- -Path:指定容器内的目标目录路径,精准锁定SAS的作用范围
内容的提问来源于stack exchange,提问作者Andreas
相关产品推荐
相关产品推荐

