Skip to content

Commit 87abbcc

Browse files
authored
Merge pull request #1016 from Dstack-TEE/fix/guest-local-provider-inventory-master
fix(guest): isolate local key providers from KMS inventory
2 parents be6ed43 + 845af54 commit 87abbcc

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

dstack/dstack-util/src/system_setup.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2040,6 +2040,13 @@ struct Stage1<'a> {
20402040
keys: AppKeys,
20412041
}
20422042

2043+
fn validate_key_provider_inputs(kind: KeyProviderKind, kms_urls: &[String]) -> Result<()> {
2044+
if kind.is_kms() && kms_urls.is_empty() {
2045+
bail!("No KMS URLs are set");
2046+
}
2047+
Ok(())
2048+
}
2049+
20432050
impl<'a> Stage0<'a> {
20442051
fn host_api(&self) -> HostApi {
20452052
HostApi::new(
@@ -2264,6 +2271,7 @@ impl<'a> Stage0<'a> {
22642271

22652272
async fn request_app_keys(&self) -> Result<AppKeys> {
22662273
let key_provider = self.shared.app_compose.key_provider();
2274+
validate_key_provider_inputs(key_provider, &self.shared.sys_config.kms_urls)?;
22672275
match key_provider {
22682276
KeyProviderKind::Kms => self.request_app_keys_from_kms().await,
22692277
KeyProviderKind::Local => self.get_keys_from_local_key_provider().await,
@@ -3572,3 +3580,19 @@ fn test_unquote_os_release_value_handles_quoting_styles() {
35723580
assert_eq!(unquote_os_release_value("\""), "\"");
35733581
assert_eq!(unquote_os_release_value("\"a"), "\"a");
35743582
}
3583+
3584+
#[cfg(test)]
3585+
mod kms_provider_inventory_tests {
3586+
use super::validate_key_provider_inputs;
3587+
use dstack_types::KeyProviderKind;
3588+
3589+
#[test]
3590+
fn local_key_providers_do_not_require_kms_inventory() {
3591+
let no_urls = Vec::new();
3592+
assert!(validate_key_provider_inputs(KeyProviderKind::Local, &no_urls).is_ok());
3593+
assert!(validate_key_provider_inputs(KeyProviderKind::Tpm, &no_urls).is_ok());
3594+
assert!(validate_key_provider_inputs(KeyProviderKind::None, &no_urls).is_ok());
3595+
let error = validate_key_provider_inputs(KeyProviderKind::Kms, &no_urls).unwrap_err();
3596+
assert!(error.to_string().contains("No KMS URLs are set"));
3597+
}
3598+
}

0 commit comments

Comments
 (0)