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

5

我需要为Azure密钥保管库中的所有密钥添加前缀。

目前似乎没有相应的API或cmdlet可用,Azure门户网站也不支持该功能。

我该怎样实现这个需求呢?

2个回答

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

不必列出所有的密钥,你可以使用grep来获取一个子集,或者提供一个密钥列表(以空格分隔),例如:

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

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)`" } }

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

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


8
那是何等的怪物? - 4c74356b41

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接