azure 将一个Vault的内容复制到另一个Vault

aydmsdu9  于 2023-03-31  发布在  其他
关注(0)|答案(1)|浏览(125)

在某个地方我读到我可以把备份从一个保险库复制到另一个保险库。我一直找不到任何东西把我引向正确的方向。
我的意图是这样做,这样我就可以解决一个事实,即一个不能重命名Vault,一旦他们已经创建。
我已经在所有不同的跳马选项,但没有遇到任何建议,我是在正确的道路上。

hxzsmxv2

hxzsmxv21#

此答案已从How To Copy All Secrets From One KeyVault To Another In Azure复制
有两种方法可以实现:
1.使用PowerShell脚本复制Azure KeyVault
1.使用Azure CLI复制Azure KeyVault
这里,我们从名为myKeyVault 2020的源密钥库中复制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
}

我们可以看到所有的secret都已经成功复制到kv-myapps-2021

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

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

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

我们去检查目的地的密钥库。太棒了!所有的秘密都被复制了。

相关问题