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

Azure PowerShell:将Service Bus队列SAS策略的alias_primary_connection_string存入Key Vault

解决方案:Azure PowerShell批量存储Service Bus队列SAS连接字符串到Key Vault

完整实现代码

# 配置基础参数
$resourceGroupName = "mygroup"
$serviceBusNamespaceName = "mybus"
$keyVaultName = "你的Key Vault名称"
$targetPolicyName = "alias" # 替换为你要获取的SAS策略名称

# 获取目标命名空间下的所有队列
$queues = Get-AzServiceBusNamespace -ResourceGroupName $resourceGroupName -NamespaceName $serviceBusNamespaceName |
          ForEach-Object {
              Get-AzServiceBusQueue -ResourceGroupName $_.ResourceGroup -Namespace $_.Name
          }

# 遍历队列处理SAS连接字符串
foreach ($queue in $queues) {
    $queueName = $queue.Name
    # 获取指定SAS策略的详细信息(包含连接字符串)
    $policy = Get-AzServiceBusQueueAuthorizationRule -ResourceGroupName $resourceGroupName `
                                                     -NamespaceName $serviceBusNamespaceName `
                                                     -QueueName $queueName `
                                                     -Name $targetPolicyName

    if ($policy) {
        $primaryConnString = $policy.PrimaryConnectionString
        $secretName = "${queueName}alias_primary_string" # 按要求生成密钥名称

        # 检查密钥是否已存在,存在则删除
        $existingSecret = Get-AzKeyVaultSecret -VaultName $keyVaultName -Name $secretName -ErrorAction SilentlyContinue
        if ($existingSecret) {
            Remove-AzKeyVaultSecret -VaultName $keyVaultName -Name $secretName -Force
        }

        # 将连接字符串存入Key Vault
        Set-AzKeyVaultSecret -VaultName $keyVaultName -Name $secretName -SecretValue (ConvertTo-SecureString $primaryConnString -AsPlainText -Force)
        Write-Host "已完成队列[$queueName]的SAS策略连接字符串存储,密钥名:$secretName"
    }
    else {
        Write-Warning "队列[$queueName]未找到指定的SAS策略[$targetPolicyName]"
    }
}

关键逻辑说明

  • 获取SAS连接字符串:使用Get-AzServiceBusQueueAuthorizationRule命令,通过指定队列名和策略名,直接拿到包含PrimaryConnectionString的策略对象,这是你之前缺失的核心步骤。
  • Key Vault覆盖逻辑:先通过Get-AzKeyVaultSecret静默检查密钥是否存在,存在则强制删除,再执行存储操作,确保最终Key Vault中的密钥是最新值。
  • 权限要求:运行脚本的账号需要同时拥有Service Bus命名空间的读取权限,以及Key Vault的密钥管理权限(比如Key Vault Secrets Officer角色)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:05:13