将一个库的内容复制到另一个库

问题描述 投票:0回答:2

我在某处读到我可以将备份从一个保管库复制到另一个保管库。我一直找不到任何引导我走向正确方向的东西。

我的目的是这样做,这样我就可以解决保管库一旦创建就无法重命名的事实。

我已经尝试过各种不同的金库选项,但没有发现任何表明我走在正确道路上的东西。

azure copy move azure-backup-vault
2个回答
1
投票

此答案已复制自 How To Copy All Secrets From One KeyVault To Another In Azure

有两种选择:

  1. 使用 Powershell 脚本复制 Azure KeyVault
  2. 使用 Azure CLI 复制 Azure KeyVault

在这里,我们从名为 myKeyVault2020 的源 keyvault 复制 4 个机密用于演示。

enter image description here

选项 1:使用 Powershell 脚本复制 Azure KeyVault

现在我们要使用 Azure Powershell 复制名为 kv-myapps-2021 的目标密钥库中尚未存在的机密。

enter image description here

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

enter image description here

选项 2:使用 Azure CLI 复制 Azure KeyVault

我们还可以使用以下 Bash 脚本将所有机密复制到名为 kv-myapps-2023 的新目标 keyvault。

enter image description here

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

让我们检查目标密钥保管库。惊人的!所有秘密都被复制。


0
投票

这种方法有泄露秘密的风险吗?

© www.soinside.com 2019 - 2024. All rights reserved.