fix(kms): validate configured backend cleanup (#5204)

test(kms): validate configured backend cleanup
This commit is contained in:
cxymds
2026-07-24 23:24:40 +08:00
committed by GitHub
parent 187a060919
commit 866ac5073d
5 changed files with 494 additions and 10 deletions
+12 -1
View File
@@ -29,7 +29,9 @@ use tokio::sync::RwLock;
use vaultrs::{
api::transit::{
KeyType,
requests::{CreateKeyRequestBuilder, DecryptDataRequestBuilder, EncryptDataRequestBuilder},
requests::{
CreateKeyRequestBuilder, DecryptDataRequestBuilder, EncryptDataRequestBuilder, UpdateKeyConfigurationRequestBuilder,
},
},
client::{VaultClient, VaultClientSettingsBuilder},
kv2,
@@ -687,6 +689,15 @@ impl KmsBackend for VaultTransitKmsBackend {
let deletion_date = if request.force_immediate.unwrap_or(false) {
if key_metadata.key_state == KeyState::PendingDeletion {
if !self.client.read_transit_key(&key_id).await?.deletion_allowed {
let mut update_builder = UpdateKeyConfigurationRequestBuilder::default();
update_builder.deletion_allowed(true);
key::update(&self.client.client, &self.client.config.mount_path, &key_id, Some(&mut update_builder))
.await
.map_err(|e| {
KmsError::backend_error(format!("Failed to allow deletion of Vault Transit key {key_id}: {e}"))
})?;
}
key::delete(&self.client.client, &self.client.config.mount_path, &key_id)
.await
.map_err(|e| KmsError::backend_error(format!("Failed to delete Vault Transit key {key_id}: {e}")))?;