Sve*_*tøl 5 powershell azure azure-keyvault
我需要为 Azure Key Vault 中的所有机密添加前缀。
似乎没有用于此目的的 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
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下面的 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安装
| 归档时间: |
|
| 查看次数: |
8201 次 |
| 最近记录: |