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

如何使用PowerShell生成Azure Service Bus命名空间级SAS令牌?

问题

我通过以下PowerShell代码获取Azure Service Bus命名空间级授权规则ID:

$auth_Ids = (Get-AzServiceBusAuthorizationRule -ResourceGroupName $ResourceGroupName -NamespaceName $NamespaceName).Id
$auth_Id = ($auth_Ids[1] | Out-String)

得到的命名空间级SAS策略授权ID为:
/subscriptions/XXX/resourcegroups/YYY/providers/Microsoft.ServiceBus/namespaces/YYY-asb/authorizationrules/SASPolicy

获取队列级授权规则ID的代码:

$qauth_Id = (Get-AzServiceBusAuthorizationRule -ResourceGroupName $ResourceGroupName -NamespaceName $NamespaceName -QueueName $QueueName).Id

得到的队列级SAS策略授权ID为:
/subscriptions/XXX/resourcegroups/YYY/providers/Microsoft.ServiceBus/namespaces/YYY-asb/queues/qname/authorizationrules/Policy

两者路径仅差queues/qname/。调用New-AzServiceBusAuthorizationRuleSASToken生成SAS令牌时,使用队列授权ID可以成功执行:

$sastoken = (New-AzServiceBusAuthorizationRuleSASToken -AuthorizationRuleId $qauth_Id -KeyType $PolicyName -ExpiryTime $endtime).SharedAccessSignature 

但使用命名空间授权ID时失败,报错:

Unexpected character encountered while parsing value: <. Path '', line | 0, position 0.

我想知道:

  1. 如何正确生成Azure Service Bus命名空间级的SAS令牌?
  2. 是否必须为每个队列/主题单独创建SAS策略,还是命名空间级策略即可满足需求?

解决方案

1. 修正命名空间级SAS令牌生成代码

报错的核心原因是你在获取命名空间授权ID时使用了Out-String,该命令会将对象转换为带换行符的字符串,导致New-AzServiceBusAuthorizationRuleSASToken解析授权ID时出错(返回的HTML错误响应里的<字符引发了解析异常)。

修改获取命名空间授权ID的代码,去掉Out-String:

# 获取命名空间所有授权规则ID
$auth_Ids = (Get-AzServiceBusAuthorizationRule -ResourceGroupName $ResourceGroupName -NamespaceName $NamespaceName).Id
# 直接取目标规则的ID(这里假设索引1是你需要的策略)
$auth_Id = $auth_Ids[1]

# 生成命名空间级SAS令牌
$sastoken = (New-AzServiceBusAuthorizationRuleSASToken -AuthorizationRuleId $auth_Id -KeyType $PolicyName -ExpiryTime $endtime).SharedAccessSignature

2. 命名空间级策略的作用范围

不需要为每个队列/主题单独创建SAS策略。命名空间级的SAS策略拥有对**整个命名空间内所有资源(队列、主题、订阅等)**的访问权限,权限范围由策略配置的权限(Manage/Send/Listen)决定:

  • 配置了Send权限的命名空间策略,可以向该命名空间下任意队列、主题发送消息;
  • 配置了Listen权限的命名空间策略,可以接收该命名空间下任意队列、订阅的消息;
  • 配置了Manage权限的命名空间策略,拥有对所有资源的管理权限(比如创建、删除队列)。

只有当你需要细粒度控制单个资源(比如某个特定队列)的访问权限时,才需要单独创建队列/主题级的SAS策略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 12:17:52