如何重命名Azure Key保管库中的所有机密

时间:2019-11-29 03:42:25

标签: azure powershell azure-keyvault

我需要为Azure Key Vault中的所有秘密添加前缀。

似乎没有用于此的API或cmdlet,在Azure门户中也不可能。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

下面的PowerShell脚本使用添加的前缀创建新密钥。

(az keyvault secret list --vault-name <AZURE_KEY_VAULT_NAME> | ConvertFrom-Json) | %{ az keyvault secret show --id $_.id | ConvertFrom-Json | %{ az keyvault secret set --vault-name ([uri]$_.id).Host.Split('.')[0] -n "<PREFIX>-$(([uri]$_.id).Segments[2].TrimEnd('/'))" --value `"$($_.value)`" } }

在运行脚本之前,请确保替换<AZURE_KEY_VAULT_NAME><PREFIX>

az PowerShell模块可以从https://docs.microsoft.com/en-us/powershell/azure/安装

答案 1 :(得分:1)

这里有一个例子是 Bash。

AZURE_KEY_VAULT_NAME=<Your KeyVault name>
PREFIX="-old"

for secret_name in $(az keyvault secret list --vault-name $AZURE_KEY_VAULT_NAME --query '[].[name]' -o tsv); do
  echo "Rename ${secret_name} into ${secret_name}${PREFIX}"
  secret=$(az keyvault secret show --vault-name $AZURE_KEY_VAULT_NAME --name ${secret_name} --query value -o tsv)
  az keyvault secret set --vault-name $AZURE_KEY_VAULT_NAME --name ${secret_name}${PREFIX} --value $secret
  # Delete original key if needed
  # az keyvault secret delete --vault-name $AZURE_KEY_VAULT_NAME --name ${secret_name}
  # Perminantly
  # az keyvault secret purge  --vault-name $AZURE_KEY_VAULT_NAME --name ${secret_name}
done

您可以使用 grep 来获取一个子集,而不是列出所有密钥,或者只提供一个秘密列表(空格分隔),例如

  • $(az keyvault secret list --vault-name $AZURE_KEY_VAULT_NAME --query '[].[name]' -o tsv | grep example)
  • secret1 secret2 secret3