論理的な削除が有効になっている Azure Key Vault からシークレットを削除する PowerShell 5.1 スクリプトを作成しました。このような Key Vault からシークレットを正常に消去するには、次のことを行う必要があることを学びました。
- シークレットを削除します。
- 今度は -InRemovedState パラメーターを指定して、シークレットを再度削除します。
私のスクリプトは次のとおりです。
[CmdletBinding()]
Param(
[Parameter(Mandatory = $True)]
[string]$keyvaultName
)
#Remove assorted security items from Key Vault
# Shut up blather about deprecated features
Set-Item -Path Env:\SuppressAzurePowerShellBreakingChangeWarnings -Value 'true'
Write-Output "Starting Removal"
### Remove Secrets
$secrets = Get-AzKeyVaultSecret -VaultName $keyvaultName
### Delete the secrets
foreach ($secret in $secrets) {
Write-Output "Removing $($secret.Name)"
Remove-AzKeyVaultSecret -VaultName $keyvaultName -Name $secret.Name -Force | Wait-Process
if($?) {
Write-Host "Removal of $($secret.Name) succeeded."
}
else {
Write-Host "Removal of $($secret.Name) $vaultName failed."
}
}
### Go back around and purge the secrets
foreach ($secret in $secrets) {
Write-Output "Purging $($secret.Name)"
Remove-AzKeyVaultSecret -VaultName $keyvaultName -Name $secret.Name -InRemovedState -Force | Wait-Process
if($?) {
Write-Host "Purge of $($secret.Name) succeeded."
}
else {
Write-Host "Purge of $($secret.Name) $vaultName failed."
}
}
Write-Output "Remove Complete"
ただし、スクリプトを実行すると、「競合」エラーが発生することがあります。表示されるエラーの数はさまざまです。また、どこからともなくプロセスに証明書が表示されます。これは、Key Vault の何らかの破損が原因であると思われます。test-run.ps1
スクリプトが上記のパージ スクリプト コードを呼び出す出力は次のとおりです。
> .\test-run
Starting Removal
Removing QA-testing-certificate
Remove-AzKeyVaultSecret : Operation returned an invalid status code 'Forbidden'
At C:\Users\SESA280186\Desktop\OData\DevOps\Security\Key-Vault-material\keyvault-prototyping\remove-items2.ps1:25
char:4
+ Remove-AzKeyVaultSecret -VaultName $keyvaultName -Name $secret.Nam ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Remove-AzKeyVaultSecret], KeyVaultErrorException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.KeyVault.RemoveAzureKeyVaultSecret
Removal of QA-testing-certificate failed.
Removing QA-testing-secret
Removal of QA-testing-secret succeeded.
Removing QA-testing-secrets2
Removal of QA-testing-secrets2 succeeded.
Removing QA-testing-secrets3
Removal of QA-testing-secrets3 succeeded.
Purging QA-testing-certificate
Remove-AzKeyVaultSecret : Operation returned an invalid status code 'Forbidden'
At C:\Users\SESA280186\Desktop\OData\DevOps\Security\Key-Vault-material\keyvault-prototyping\remove-items2.ps1:39
char:4
+ Remove-AzKeyVaultSecret -VaultName $keyvaultName -Name $secret.Nam ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Remove-AzKeyVaultSecret], KeyVaultErrorException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.KeyVault.RemoveAzureKeyVaultSecret
Purge of QA-testing-certificate failed.
Purging QA-testing-secret
Remove-AzKeyVaultSecret : Operation returned an invalid status code 'Conflict'
At C:\Users\SESA280186\Desktop\OData\DevOps\Security\Key-Vault-material\keyvault-prototyping\remove-items2.ps1:39
char:4
+ Remove-AzKeyVaultSecret -VaultName $keyvaultName -Name $secret.Nam ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Remove-AzKeyVaultSecret], KeyVaultErrorException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.KeyVault.RemoveAzureKeyVaultSecret
Purge of QA-testing-secret failed.
Purging QA-testing-secrets2
Remove-AzKeyVaultSecret : Operation returned an invalid status code 'Conflict'
At C:\Users\SESA280186\Desktop\OData\DevOps\Security\Key-Vault-material\keyvault-prototyping\remove-items2.ps1:39
char:4
+ Remove-AzKeyVaultSecret -VaultName $keyvaultName -Name $secret.Nam ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [Remove-AzKeyVaultSecret], KeyVaultErrorException
+ FullyQualifiedErrorId : Microsoft.Azure.Commands.KeyVault.RemoveAzureKeyVaultSecret
Purge of QA-testing-secrets2 failed.
Purging QA-testing-secrets3
Purge of QA-testing-secrets3 succeeded.
Remove Complete
何が起こっているのかについて誰かアドバイスをいただけますか?私は何を見落としましたか?