我需要为Azure密钥保管库中的所有密钥添加前缀。
目前似乎没有相应的API或cmdlet可用,Azure门户网站也不支持该功能。
我该怎样实现这个需求呢?
我需要为Azure密钥保管库中的所有密钥添加前缀。
目前似乎没有相应的API或cmdlet可用,Azure门户网站也不支持该功能。
我该怎样实现这个需求呢?
这里是关于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
(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模块。