如何通过AZ-CLI/资源图KQL/PowerShell获取启用SAS认证的Azure存储账户列表
如何获取所有Azure订阅中启用SAS认证的存储账户列表
以下是三种跨订阅场景下的实现方案:
AZ-CLI 方案
通过遍历所有订阅,逐个查询存储账户并筛选允许SAS认证的实例(SAS依赖共享密钥,因此以allowSharedKeyAccess为判断依据):
# 遍历所有订阅并输出符合条件的存储账户 az account list --query "[].id" --output tsv | while read sub; do echo "=== 订阅ID: $sub ===" az storage account list --subscription $sub --query "[?allowSharedKeyAccess == true].{存储账户名:name, 资源组:resourceGroup, 区域:location, 允许SAS认证:allowSharedKeyAccess}" --output table done
Azure资源图KQL 查询
使用资源图可高效跨订阅查询,无需逐个切换订阅:
Resources | where type == 'microsoft.storage/storageaccounts' | project 存储账户名 = name, 资源组 = resourceGroup, 订阅ID = subscriptionId, 允许SAS认证 = properties.allowSharedKeyAccess | where 允许SAS认证 == true
使用方式:在Azure门户的资源图资源管理器中执行上述查询,或通过az graph query -q "<上述KQL语句>"命令行执行。
PowerShell 脚本
# 获取所有订阅并遍历查询 $subscriptions = Get-AzSubscription foreach ($sub in $subscriptions) { Select-AzSubscription -SubscriptionId $sub.Id | Out-Null Write-Host "=== 订阅ID: $($sub.Id) ===" Get-AzStorageAccount | Where-Object { $_.AllowSharedKeyAccess -eq $true } | Select-Object @{Name='存储账户名';Expression={$_.StorageAccountName}}, 资源组名=ResourceGroupName, 区域=Location, 允许SAS认证=AllowSharedKeyAccess }
说明
存储账户的allowSharedKeyAccess属性直接控制是否允许使用共享密钥(包括SAS令牌)进行身份验证,当该值为true时,即表示该存储账户启用了SAS认证能力。
内容的提问来源于stack exchange,提问作者Maheswaran Ramu
相关产品推荐
相关产品推荐

