如何使用ARM模板在Azure Service Bus队列级别创建自定义共享访问策略
Azure Service Bus队列级自定义共享访问策略创建方法
你可以在现有ARM模板的队列资源中嵌套子资源实现队列级SAS策略部署,适配你当前使用的迭代创建逻辑,具体操作如下:
步骤1:新增策略配置参数
在模板的parameters节点中添加队列SAS策略的配置参数,示例如下:
"queueSasPolicies": { "type": "array", "defaultValue": [ { "policyName": "仅发送策略", "rights": ["Send"] }, { "policyName": "仅接收策略", "rights": ["Listen"] }, { "policyName": "全权限策略", "rights": ["Send", "Listen", "Manage"] } ], "metadata": { "description": "队列级共享访问策略配置列表" } }
步骤2:修改现有队列资源模板
在你原有队列资源的基础上,新增子资源节点resources用于嵌套SAS策略定义,完整的队列资源示例如下:
{ "apiVersion": "2017-04-01", "name": "[concat(parameters('serviceBusNamespaceName'),'/', parameters('queueNames')[copyIndex()])]", "type": "Microsoft.ServiceBus/namespaces/queues", "copy": { "name": "queuesCopy", "count": "[length(parameters('queueNames'))]" }, "dependsOn": [ "[resourceId('Microsoft.ServiceBus/namespaces/', parameters('serviceBusNamespaceName'))]" ], "properties": { "lockDuration": "PT30S", "maxSizeInMegabytes": 1024, "requiresDuplicateDetection": false, "requiresSession": false, "defaultMessageTimeToLive": "P14D", "deadLetteringOnMessageExpiration": false, "duplicateDetectionHistoryTimeWindow": "PT10M", "maxDeliveryCount": 10, "autoDeleteOnIdle": "P10675199DT2H48M5.4775807S", "enablePartitioning": false, "enableExpress": false }, // 以下为新增的队列级SAS策略子资源 "resources": [ { "type": "authorizationRules", "name": "[parameters('queueSasPolicies')[copyIndex('sasPolicyCopy')].policyName]", "apiVersion": "2017-04-01", "copy": { "name": "sasPolicyCopy", "count": "[length(parameters('queueSasPolicies'))]" }, "dependsOn": [ "[parameters('queueNames')[copyIndex()]]" ], "properties": { "rights": "[parameters('queueSasPolicies')[copyIndex('sasPolicyCopy')].rights]" } } ] }
注意事项
- 权限
rights仅支持三个可选值:Send(发送)、Listen(监听/接收)、Manage(管理),可组合使用,Manage权限默认包含Send和Listen权限 - 队列级SAS策略的权限仅作用于当前队列,不会继承命名空间级策略的权限,也不会对其他队列、主题资源生效
- 部署完成后可在Azure门户对应队列的「共享访问策略」页查看已创建的策略,直接获取连接字符串、主/次密钥
- 若不同队列需要配置不同的策略,可调整参数结构,为每个队列单独配置策略列表即可
内容的提问来源于stack exchange,提问作者Pradeep
相关产品推荐
相关产品推荐

