我需要为Azure Key Vault中的所有秘密添加前缀。
似乎没有用于此的API或cmdlet,在Azure门户中也不可能。
我该怎么做?
答案 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