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

如何通过PowerShell脚本将函数应用默认密钥和服务总线连接串更新到Key Vault Secrets

前置要求
  • 已安装对应工具:Azure CLI 2.37.0及以上版本,或者 Azure Az PowerShell 模块 6.0及以上版本
  • 运行脚本的身份已完成Azure账号登录,且具备以下权限:
    • Function App的密钥读取权限
    • Service Bus的授权规则密钥读取权限
    • Key Vault的Secret写入权限(对应Key Vault Secrets Officer角色,或者访问策略中配置Secret的Set权限)
实现方案

方法1:使用Azure CLI脚本

首先完成Azure账号登录:
az login
如果是自动化非交互场景,可使用服务主体身份登录。

然后执行以下脚本:

# 自定义配置变量
resourceGroup="替换为你的资源组名称"
functionAppName="替换为你的Function App名称"
serviceBusNamespace="替换为你的Service Bus命名空间名称"
serviceBusAuthRule="替换为你的Service Bus授权规则名称,默认通常为RootManageSharedAccessKey"
keyVaultName="替换为你的Key Vault名称"
# 定义Key Vault中存储对应值的Secret名称
funcKeySecretName="FunctionAppDefaultKey"
sbConnStrSecretName="ServiceBusConnectionString"

# 1. 获取Function App默认主机密钥
functionDefaultKey=$(az functionapp keys list --name $functionAppName --resource-group $resourceGroup --query "functionKeys.default" -o tsv)

# 2. 获取Service Bus命名空间连接字符串
serviceBusConnStr=$(az servicebus namespace authorization-rule keys list --resource-group $resourceGroup --namespace-name $serviceBusNamespace --name $serviceBusAuthRule --query "primaryConnectionString" -o tsv)

# 3. 将两个值写入Key Vault对应Secret
az keyvault secret set --vault-name $keyVaultName --name $funcKeySecretName --value $functionDefaultKey
az keyvault secret set --vault-name $keyVaultName --name $sbConnStrSecretName --value $serviceBusConnStr

说明:如果需要获取Service Bus队列/主题的专属连接字符串,只需将第二步的命令替换为对应队列/主题的授权规则密钥查询命令即可。

方法2:使用Azure PowerShell脚本

首先完成Azure账号登录:
Connect-AzAccount

然后执行以下脚本:

# 自定义配置变量
$resourceGroup = "替换为你的资源组名称"
$functionAppName = "替换为你的Function App名称"
$serviceBusNamespace = "替换为你的Service Bus命名空间名称"
$serviceBusAuthRule = "替换为你的Service Bus授权规则名称,默认通常为RootManageSharedAccessKey"
$keyVaultName = "替换为你的Key Vault名称"
$funcKeySecretName = "FunctionAppDefaultKey"
$sbConnStrSecretName = "ServiceBusConnectionString"

# 1. 获取Function App默认主机密钥
$functionKeys = Get-AzFunctionAppKey -ResourceGroupName $resourceGroup -Name $functionAppName
$functionDefaultKey = $functionKeys.FunctionKeys['default']

# 2. 获取Service Bus命名空间连接字符串
$sbAuthKeys = Get-AzServiceBusNamespaceKey -ResourceGroupName $resourceGroup -Namespace $serviceBusNamespace -AuthorizationRuleName $serviceBusAuthRule
$serviceBusConnStr = $sbAuthKeys.PrimaryConnectionString

# 3. 将两个值写入Key Vault对应Secret
Set-AzKeyVaultSecret -VaultName $keyVaultName -Name $funcKeySecretName -SecretValue (ConvertTo-SecureString $functionDefaultKey -AsPlainText -Force)
Set-AzKeyVaultSecret -VaultName $keyVaultName -Name $sbConnStrSecretName -SecretValue (ConvertTo-SecureString $serviceBusConnStr -AsPlainText -Force)

说明:如果在Azure资源内部运行脚本(比如Function、VM),可开启资源的系统分配托管身份,无需手动输入账号密码登录,只需给托管身份分配对应权限即可实现自动化运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:15:01