CSPACE-META-01: Confidential VM metadata is not broadly mutable¶
| Property | Value |
|---|---|
| Severity | high |
| Platform | GCP Confidential Space (AMD SEV-SNP) |
| Lifecycle stage | deploy |
| Mode | Passive: read-only cloud API calls. |
What it checks¶
It passes when:
- No broad/impersonatable principal can rewrite the VM's tee-* metadata.
Example failures:
- … principal(s) can rewrite the VM's metadata (tee-image-reference/tee-cmd/tee-env): …. They can run their own code as the attested workload.
- The workload SA can rewrite the VM's tee-image-reference/tee-cmd metadata — it can run its own code as the attested workload.
How to fix¶
- Restrict compute.instances.setMetadata on this instance to a tight human-admin set; never grant metadata-mutating roles to the workload SA or to broad/public principals. Prefer immutable, digest-pinned deployments recreated by CI rather than in-place metadata edits.
After the fix, scan again: the check should report PASS.
When it is not assessed¶
SKIP:
- Need --gcp-instance, --gcp-zone, and --gcp-project; skipping check.
ERROR:
- Could not read instance IAM policy: …
Scan inputs¶
The untrust scan options this check reads:
| Option | Description |
|---|---|
--gcp-instance |
Confidential VM instance name. |
--gcp-project |
GCP project ID. |
--gcp-zone |
Zone of the Confidential VM. |
Permissions¶
The cloud API calls this check makes, read from the scanner's source:
| Cloud | API call | Permission | Access |
|---|---|---|---|
| Google Cloud | compute.instances.get |
compute.instances.get |
read |
| Google Cloud | compute.instances.getIamPolicy |
compute.instances.getIamPolicy |
read |
See Required permissions for every check on this platform.
Related¶
- Runtime detection
DET-C3(GCP Confidential Space): Workload image or environment changed on the Confidential VM
Generated from untrust 1.3.0 (commit 7ef462d9a0c3).