如何重命名 Azure Key Vault 中的所有机密

Sve*_*tøl 5 powershell azure azure-keyvault

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

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

我怎样才能做到这一点?

Dir*_*irc 6

这里有一个例子是 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
Run Code Online (Sandbox Code Playgroud)

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

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


Sve*_*tøl 5

下面的 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)`" } }
Run Code Online (Sandbox Code Playgroud)

确保在运行脚本之前替换<AZURE_KEY_VAULT_NAME>和。<PREFIX>

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

  • 那是什么怪物? (8认同)