如何使用脚本批量创建和更新 Azure Key Vault 机密?

How to bulk create and update Azure Key Vault secrets using scripts?

我有一个场景,我需要从“A”Azure Key Vault 中获取秘密列表,然后在“B[=26=”中创建它们]'天蓝色的密钥库。但是在“B”azure keyvault 中创建机密时,这些值必须 changes/updated。由于我有很多秘密,所以我尝试通过脚本来执行它。

我尝试仅从“A”azure keyvault 中提取机密名称,并使用以下 AZ CLI 将其存储到 CSV 文件中命令:

az keyvault secret list --vault-name <<vault-name>> -o table > src.csv

现在我想使用相同的 CSV 文件,我可以在其中更新获取的秘密的新值并将其用于 create/update 'B 中的秘密' azure keyvault 使用任何 Powershell/AZ CLI/Bash 脚本.

有人遇到过类似的情况吗?能行吗?如果是,请指导我。

在这里,您有两个步骤可以从一个 Key Vault 读取秘密名称并写入另一个 Key Vault。只需要添加通过文件更新新值的逻辑即可。

读取秘密名称:

$secrets = az keyvault secret list --vault-name kv-stack | ConvertFrom-Json | Select-Object @{Label='Name'; Expression={$_.Id.split("/")[-1]}}

写入另一个密钥库:

 $secrets | ForEach-Object {az keyvault secret set --vault-name kv-stack-2 --name $_.Name --value something}

当然,你可以做到。我假设您会使用 bash 脚本来实现它,下面是示例脚本:

az keyvault secret list --vault-name keyvault_A --query [].name -o tsv > /mnt/d/ubuntu/temp.csv
input="/mnt/d/ubuntu/temp.csv"
while IFS= read -r secret
do
    # echo $secret
    echo "Create secret name : $secret"
    az keyvault secret set --vault-name keyvault_B --name $secret --value $secret
done < $input
az keyvault secret list --vault-name keyvault_B -o table

正如我所见,您会 update/change 秘密的价值,所以我只能得到秘密的名称,列表也无法为您获得价值。如果需要根据已有值update/changesecrets的值,可以通过命令az keyvault secret show.

while循环中获取值