Skip to content

Commit 22a6286

Browse files
committed
refactor(vmm): allow swtpm for all Dstack VMs
1 parent ef07f67 commit 22a6286

3 files changed

Lines changed: 2 additions & 5 deletions

File tree

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ To exercise persistent TPM-backed app keys as well, install `swtpm` on the VMM
6666
host and select `key_provider=tpm` in the VMM console (or pass `--key-provider
6767
tpm` in tooling that exposes the compose option). The VMM keeps the software
6868
TPM state in the VM work directory so that seal/unseal survives guest restarts.
69-
This development provider is available only to no-TEE development images.
69+
The software TPM is host-controlled and does not provide hardware isolation.
7070

7171
The simulator package is installed only in development images. This mode
7272
provides no hardware isolation and must never be used with production

docs/security/cvm-boundaries.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ This is the main configuration file for the application in JSON format:
4444
| init_script | 0.5.5 | string | Bash script that executed prior to dockerd startup |
4545
| storage_fs | 0.5.5 | string | Filesystem type for the data disk of the CVM. Supported values: "zfs", "ext4". default to "zfs". **ZFS:** Ensures filesystem integrity with built-in data protection features. **ext4:** Provides better performance for database applications with lower overhead and faster I/O operations, but no strong integrity protection. |
4646
| swap_size | 0.5.5 | string/integer | The linux swap size. default to 0. Can be in byte or human-readable format (e.g., "1G", "256M"). |
47-
| key_provider | 0.5.6 | string | Key provider type. Supported values: "none", "kms", "local", "tpm". GCP vTPM and AWS EC2 NitroTPM are part of their platform trust models. The Dstack development platform can use VMM-managed swtpm to exercise seal/unseal and restart persistence, but it offers no protection against the host and is intentionally not accepted by remote verifiers. |
47+
| key_provider | 0.5.6 | string | Key provider type. Supported values: "none", "kms", "local", "tpm". GCP vTPM and AWS EC2 NitroTPM are part of their platform trust models. The Dstack platform can use VMM-managed swtpm for seal/unseal and restart persistence, but it offers no protection against the host and is intentionally not accepted by remote verifiers. |
4848

4949

5050
The hash of this file content is extended as the dstack `compose-hash` launch event. On TDX-family platforms the launch event is measured into RTMR3. On AWS NitroTPM it is measured into non-resettable SHA384 PCR14 before the `system-ready` launch boundary. Remote verifiers extract and replay this event during attestation.

dstack/vmm/src/app/qemu.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -224,9 +224,6 @@ impl PreparedQemuLaunch {
224224
};
225225
let (swtpm_socket, swtpm_path) =
226226
if matches!(app_compose.key_provider(), KeyProviderKind::Tpm) {
227-
if !vm.manifest.no_tee || !vm.image.info.is_dev {
228-
bail!("swtpm key provider is only available to no-TEE development VMs");
229-
}
230227
let swtpm_path = which::which("swtpm")
231228
.context("tpm key provider requested but swtpm is not installed")?;
232229
let state_dir = workdir.swtpm_state_dir();

0 commit comments

Comments
 (0)