用于从 azure key Vault 中删除所有机密的 powershell 脚本

问题描述 投票:0回答:5

寻找一个 Powershell 脚本,该脚本将删除给定 Azure 密钥保管库中存在的所有机密。 我不想删除整个密钥保管库,只想删除其中存在的秘密。

azure azure-keyvault
5个回答
0
投票

使用删除-AzKeyVaultSecret、删除-AzKeyVaultCertificate 和删除-AzKeyVaultKey


0
投票

使用一些 powershell 和 Azure CLI 你可以实现这一点

az keyvault secret list --vault-name ${keyVaultName} | ConvertFrom-Json | ForEach-Object { az keyvault secret delete --vault-name ${keyVaultName} --name $($_ | Select-Object -ExpandProperty Name)  }

它的作用是

  1. 从故障名称中获取所有秘密
  2. 将响应转换为对象
  3. 对于每个项目,从对象中获取名称并运行 az keyvault Secret delete 命令。

0
投票

Danny van der Sluis 的答案尝试用一个命令一次性删除所有秘密,但这似乎不起作用。将其放入 ps1 脚本中对我有用:

$SECRETS = az keyvault secret list --vault-name "mysupersecretvault" | ConvertFrom-Json;  
$SECRETS | Select-Object -Property Name | ForEach-Object { az keyvault secret delete --vault-name "mysupersecretvault" --name $_.Name  }

在此之后,您可能需要清除您的保管库,以防您想使用相同的名称重新制作一些机密。我发现通过 Azure 门户执行此操作很容易,但您也可以使用此命令:

az keyvault key purge --name "mykeyname"

0
投票

Yesman 的版本对我来说效果很好,但是,清除命令应该用于秘密,而不是密钥,所以如果你想删除和清除所有秘密,这有效:

$SECRETS = az keyvault secret list --vault-name "mysupersecretvault" | ConvertFrom-Json;  
$SECRETS | Select-Object -Property Name | ForEach-Object { az keyvault secret delete --vault-name "mysupersecretvault" --name $_.Name  }
$SECRETS | Select-Object -Property Name | ForEach-Object { az keyvault secret purge --vault-name "mysupersecretvault" --name $_.Name  }

0
投票

$tenantId = "" $resourceGroup = "" $keyvaultName = "" az 登录 -t $tenantId $allSecrets = az keyvault 机密列表 --vault-name $keyVaultName | ConvertFrom-Json
foreach($allSecrets 中的$item) { az keyvault 秘密删除 --name $item.name ` --vault-name $keyvaultName

az keyvault secret purge --name $item.name `
                         --vault-name $keyvaultName       

}

© www.soinside.com 2019 - 2024. All rights reserved.