Add automatic recovery of soft-deleted KeyVault secrets and keys #4450
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
When KeyVault secrets or keys are destroyed and then recreated with the same name, Pulumi fails with a conflict error because Azure keeps soft-deleted resources for 7-90 days. This common workflow breaks:
Users must manually purge secrets via Azure Portal or CLI before redeploying, which is error-prone and time-consuming. Also not a viable option when dealing with the industry standard of purge protections for secrets.
Solution
This PR adds custom
CreateandCanCreatefunctions for KeyVault secrets and keys that:GetDeletedSecret/GetDeletedKeyAPIsRecoverDeletedSecret/RecoverDeletedKeyThe implementation covers both:
azcoreSDK (primary implementation)autorestSDK (for backward compatibility)Changes
Modified Files
provider/pkg/resources/customresources/custom_keyvault.go(+104 lines)CanCreateandCreatefunctions for secrets and keysprovider/pkg/resources/customresources/custom_keyvault_autorest.go(+87 lines)Key Features
Testing
Tested with a KeyVault containing 4 secrets / 4Keys:
pulumi destroy && pulumi upfailed with conflict errorspulumi destroy && pulumi upsucceeds automaticallyRelated Issues
Fixes #1174
Fixes #1211
Related to #2374, #3357