我在某处读到我可以将备份从一个保管库复制到另一个保管库。我一直找不到任何引导我走向正确方向的东西。
我的目的是这样做,这样我就可以解决保管库一旦创建就无法重命名的事实。
我已经尝试过各种不同的金库选项,但没有发现任何表明我走在正确道路上的东西。
此答案已复制自 How To Copy All Secrets From One KeyVault To Another In Azure
有两种选择:
在这里,我们从名为 myKeyVault2020 的源 keyvault 复制 4 个机密用于演示。
选项 1:使用 Powershell 脚本复制 Azure KeyVault
现在我们要使用 Azure Powershell 复制名为 kv-myapps-2021 的目标密钥库中尚未存在的机密。
Param(
[Parameter(Mandatory)]
[string]$sourceKvName,
[Parameter(Mandatory)]
[string]$destKvName
)
Connect-AzAccount
$secretNames = (Get-AzKeyVaultSecret -VaultName $sourceKvName).Name
$secretNames.foreach{
Set-AzKeyVaultSecret -VaultName $destKvName -Name $_ `
-SecretValue (Get-AzKeyVaultSecret -VaultName $sourceKvName -Name $_).SecretValue
}
我们可以看到所有的秘密都已成功复制到kv-myapps-2021。
选项 2:使用 Azure CLI 复制 Azure KeyVault
我们还可以使用以下 Bash 脚本将所有机密复制到名为 kv-myapps-2023 的新目标 keyvault。
Source_Kv_Name="myKeyVault2020"
Dest_Kv_Name="kv-myapps-2023"
SECRETS+=($(az keyvault secret list --vault-name $Source_Kv_Name --query "[].id" -o tsv))
for SECRET in "${SECRETS[@]}"; do
SECRETNAME=$(echo "$SECRET" | sed 's|.*/||')
SECRET_CHECK=$(az keyvault secret list --vault-name $Dest_Kv_Name --query "[?name=='$SECRETNAME']" -o tsv)
if [ -n "$SECRET_CHECK" ]
then
echo "$SECRETNAME already exists in $Dest_Kv_Name"
else
echo "Copying $SECRETNAME from Source KeyVault: $Source_Kv_Name to Destination KeyVault: $Dest_Kv_Name"
SECRET=$(az keyvault secret show --vault-name $Source_Kv_Name -n $SECRETNAME --query "value" -o tsv)
az keyvault secret set --vault-name $Dest_Kv_Name -n $SECRETNAME --value "$SECRET" >/dev/null
fi
done
让我们检查目标密钥保管库。惊人的!所有秘密都被复制。
这种方法有泄露秘密的风险吗?