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

从ADO管道复制Azure Key Vault禁用密钥时出错的技术求助

解决ADO管道复制Azure Key Vault禁用密钥的问题

核心问题

默认情况下,Get-AzKeyVaultSecret在ADO管道使用的服务主体身份下,不会返回已禁用的密钥——这就是你在本地门户登录能正常获取,但在管道中报错的原因,因为命令找不到禁用的密钥条目。

修复步骤

1. 修改脚本,显式获取所有状态的密钥

在调用Get-AzKeyVaultSecret时添加-IncludeDisabled参数,确保能读取到禁用的密钥,同时同步密钥的启用/禁用状态到目标库:

# 获取源库所有密钥(含禁用)的名称
$secretNames = (Get-AzKeyVaultSecret -VaultName $sourceKvName -IncludeDisabled).Name

$secretNames.foreach{
    Write-Host Processing Secret Name $_
    # 获取单个密钥(含禁用)的完整信息
    $sourceSecret = Get-AzKeyVaultSecret -VaultName $sourceKvName -Name $_ -IncludeDisabled
    # 复制密钥并保留原状态
    Set-AzKeyVaultSecret -VaultName $newKvName -Name $_ -SecretValue $sourceSecret.SecretValue -Enabled $sourceSecret.Enabled
}

2. 验证服务主体权限(可选)

虽然你提到ADO项目已有完全访问权限,但可以确认服务主体拥有Key Vault Secrets User或更高权限(如Key Vault Contributor),确保权限覆盖了读取禁用密钥的操作。不过添加-IncludeDisabled是解决问题的关键,因为即使权限足够,默认命令也不会返回禁用密钥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:02:52