复制关联证书的Key Vault机密至其他密钥保管库时遇Forbidden错误
解决Key Vault关联证书机密无法复制的问题
错误原因
你遇到的Forbidden错误是因为目标机密是Key Vault证书的关联自动生成机密,这类机密由Key Vault绑定证书进行管理,不允许直接通过Set-AzKeyVaultSecret操作,必须针对对应的证书执行操作。
解决方案
根据你的需求,提供两种实现方式:
方式一:复制证书到目标Vault(自动生成关联机密)
如果需要保持证书与机密的关联关系,可将源Vault的证书导出后导入到目标Vault,目标Vault会自动生成对应的关联机密:
# 变量配置 $sourceVaultName = "source-keyvault-name" $destVaultName = "destination-keyvault-name" $certName = "源Vault中对应的证书名称" # 注意:这里填证书名称,不是机密名称 $pfxPassword = ConvertTo-SecureString "设置PFX导出密码" -AsPlainText -Force # 从源Vault导出证书为PFX格式 $cert = Get-AzKeyVaultCertificate -VaultName $sourceVaultName -Name $certName $pfxBytes = $cert.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $pfxPassword) # 将PFX导入到目标Vault Import-AzKeyVaultCertificate -VaultName $destVaultName -Name $certName -CertificateBytes $pfxBytes -Password $pfxPassword
方式二:仅复制机密内容(创建独立机密)
如果仅需要复制机密的内容,不需要与证书关联,可以提取机密明文后创建一个独立的新机密:
# 变量配置 $sourceVaultName = "source-keyvault-name" $destVaultName = "destination-keyvault-name" $secretName = "my-cert-secret-name" # 获取源机密的明文内容 $secretPlainText = Get-AzKeyVaultSecret -VaultName $sourceVaultName -Name $secretName -AsPlainText # 在目标Vault创建新的独立机密 Set-AzKeyVaultSecret ` -VaultName $destVaultName ` -Name $secretName ` -SecretValue (ConvertTo-SecureString $secretPlainText -AsPlainText -Force) ` -ContentType (Get-AzKeyVaultSecret -VaultName $sourceVaultName -Name $secretName).ContentType ` -Tags (Get-AzKeyVaultSecret -VaultName $sourceVaultName -Name $secretName).Tags
内容的提问来源于stack exchange,提问作者Santa
相关产品推荐
相关产品推荐

