Chapter 36
Confidential Computing
Scope. This chapter owns the isolation model, attestation, and the decision of when the trade is worth taking. §8.16 owns Shielded VM, §8.17 owns Confidential VM configuration, and §8.18 owns Secure Boot; none of them is re-explained. The chapter's spine is the trade-off §16.9 established: memory encryption removes the hypervisor from the trust boundary, and the hypervisor is exactly where Google's agentless threat detection sits. Prerequisites. §8.16–§8.18, §16.9 (VM Threat Detection), Chapter 14 (Cloud KMS), §4.3 (Workload Identity Federation). Verified against. Google Cloud console and API surface as of 2026-09, Cloud SDK 583.0.0; every flag and enum resolved with
--help; see sources at end.
Confidential computing encrypts memory with a key held by the CPU, so the contents of a running workload are opaque to the hypervisor, to the machine's operator, and to other tenants. It closes the last of the three states — data at rest and in transit were already covered — and it does so by removing Google from the trust boundary for that specific property.
Which is the trade. Removing the platform from the trust boundary also removes it as a place from which to help you. §16.9 is explicit: VM Threat Detection scans "from the hypervisor into the memory of a running guest VM", and Confidential VMs are among the configurations it does not cover. That is the decision this chapter exists to inform, and it is a threat-model question: confidential computing defends against the operator, VM Threat Detection against an intruder in your guest, and most workloads face the second more than the first.
A note on what is verifiable here. Performance figures and exhaustive feature-restriction lists could not be confirmed against a current Google source this session. Where that is so, this chapter says it rather than repeating a plausible number.
36.1 Threat Model §
Confidential computing answers one question — who can read this memory — and it is worth being precise about who that removes and who it does not.
What it removes from the trust boundary:
| Adversary | Removed |
|---|---|
| The hypervisor and host software | Yes — memory keys are held in hardware, inaccessible to it |
| A co-tenant on the same physical machine | Yes |
| Physical access to memory (cold boot, bus probing) | Yes |
| A Google employee with host-level access | Yes, for guest memory |
What it does not remove is a longer list: your own code, which is exactly as exploitable inside an encrypted VM; your dependencies, which Chapter 37 owns; the guest operating system, since an attacker with root there is inside the boundary; Google's control plane, which still governs who can stop the instance or snapshot its disk; and data at rest and in transit, which are separate controls (§8.17).
And the cost, which §16.9 owns: VM Threat Detection cannot scan a Confidential VM — its memory scanning works from the hypervisor, and the memory is encrypted against exactly that. Google's agentless rootkit and cryptomining detection is unavailable on these instances, and nothing announces the loss.
The decision rule: use confidential computing where the operator is genuinely in your threat model — sovereignty requirements, multi-party computation, key material handled in the clear. Use the platform's detection everywhere else.
Pitfall. Enabling confidential computing across a fleet "because it is more secure" trades a detection capability you were using for a threat you do not face. Where an instance loses VM Threat Detection, a guest-based detection capability has to replace it, and that has to be planned rather than discovered.
36.2 Confidential VMs §
§8.17 owns turning it on. This section owns which technology to choose and what each one costs.
The SDK's --confidential-compute-type accepts five values, and only three appear in the documentation this book could verify:
| Value | Technology | Documented |
|---|---|---|
SEV | AMD Secure Encrypted Virtualization | Yes |
SEV_SNP | AMD SEV with Secure Nested Paging | Yes |
TDX | Intel Trust Domain Extensions | Yes |
CCA | Arm Confidential Compute Architecture | SDK only |
BMSAI | Bare Metal Secure AI | SDK only |
CCA and BMSAI appear in no documentation page fetched this session. They are accepted by the CLI and this book does not describe their behavior, because it could not verify it.
Live migration is the operational difference and it decides availability design. Google supports live migration for AMD SEV on N2D and C3D machine types only; SEV-SNP and Intel TDX do not support it, so a host maintenance event terminates and restarts those instances. §8.17 carries the flag consequence.
They are not interchangeable. SEV encrypts memory. SEV-SNP adds memory integrity — protection against a hypervisor modifying or replaying memory rather than merely reading it — plus attestation. TDX is Intel's equivalent providing both.
Choose SEV-SNP or TDX against an actively malicious operator, and SEV where the concern is a curious one and availability matters more.
Pitfall. Machine type support is per generation and it changes. A design that fixes a machine family and then adds a confidential requirement usually finds them incompatible, and resizing a fleet is a bigger change than choosing correctly at the start (§8.17).
36.3 Confidential GKE Nodes §
Confidential nodes apply the same hardware protection to GKE, and the configuration surface is smaller than the VM one.
Two flags, at cluster or node pool scope:
gcloud container clusters create rc-saas-prod-gke-02 \
--region=us-central1 \
--confidential-node-type=sev_snp \
--workload-pool=rc-saas-prod-app-01.svc.id.goog
--confidential-node-type takes lowercase values — sev, sev_snp, tdx — where the Compute Engine equivalent takes uppercase. The casing differs between the two commands and it is a real source of failed automation.
--enable-confidential-nodes is the older boolean form; --enable-confidential-storage separately covers the node's local storage rather than its memory.
Per node pool is usually the right scope. A confidential node pool alongside a standard one, with scheduling constraints directing pods, limits both the cost and the detection loss to the workloads that need it.
The GKE consequence of §36.1 is that the node is a Confidential VM, so VM Threat Detection does not scan it. Container Threat Detection instruments the guest kernel rather than reading memory from below, so it is unaffected — the loss is partial rather than total, and that is the compensating control.
Pitfall. Enabling confidential nodes at the cluster changes every node pool, including system pools running Google-managed components. Setting it per node pool keeps the blast radius of both the cost and the compatibility question inside the workloads that asked for it.
36.4 Hardware-Based Isolation §
The isolation is enforced by the CPU rather than by software, which is the source of both its strength and its limits.
The mechanism. Memory is encrypted with a key generated inside the processor package and never exposed outside the protected context — managed by a dedicated security processor on AMD and by the TDX module on Intel. Software outside the boundary, the hypervisor included, sees ciphertext.
Encryption is not integrity, and that distinction is the SEV-versus-SEV-SNP line. Plain memory encryption prevents reading. It does not by itself prevent a malicious hypervisor from remapping, replaying, or corrupting pages. SEV-SNP's Secure Nested Paging adds the integrity guarantee, which is why it is the stronger choice against an active adversary rather than a passive one.
The trust root moves into the hardware vendor. With confidential computing you are trusting AMD's or Intel's implementation instead of Google's hypervisor — a smaller and more scrutinized surface, but not an absence of trust. Vulnerabilities in these technologies have been found and will be again, and mitigating one is a firmware update on Google's schedule, not yours.
Data is decrypted inside the CPU to be processed: the protection is against observation from outside the boundary, not computation on encrypted data.
Pitfall. "Encryption in use" is regularly read as homomorphic encryption — computation on data that is never decrypted. It is not that. The plaintext exists inside the processor, and anything that gets code execution inside the boundary sees it.
36.5 Encryption in Use §
The three states of data have three different controls, and confidential computing supplies the one that was missing.
| State | Control | Owned by |
|---|---|---|
| At rest | CMEK, CSEK, default encryption | Chapter 14 |
| In transit | TLS, private connectivity | §5.17, §31.9 |
| In use | Confidential computing | This chapter |
The gap it closes is specific. Without it, sensitive data sits in plaintext in host memory, where the operator could in principle read it. Most organizations accept that implicitly; regulated sectors, sovereignty requirements, and workloads processing other parties' data cannot.
The three are not equivalent in coverage. Encryption at rest protects everything stored; encryption in use protects only what is in memory on a confidential instance. Data written to disk, sent over the network, or logged leaves the boundary immediately — §8.17's pitfall, and the most common way the benefit is lost.
A complete design encrypts all three states with keys you control, and the weakest link decides the outcome. A Confidential VM writing plaintext to an unencrypted disk has moved the exposure rather than removed it.
Performance cost exists and this book does not quantify it. No current Google source with a specific figure was confirmed this session, and the cost varies substantially by workload and technology. Measure it for your workload rather than accepting any published number, including one that appears authoritative.
Pitfall. Encryption in use protects memory from outside the guest. It does nothing about the application logging a secret, writing a debug dump, or sending sensitive fields to a monitoring service — all of which carry the data out of the boundary through channels the design intended.
36.6 Attestation §
Attestation is what turns "I configured a confidential VM" into "this workload proved it is running the code I expect, on genuine confidential hardware, before I gave it a secret."
Two distinct attestation mechanisms exist and are frequently conflated:
| Mechanism | Trust root | What it proves |
|---|---|---|
| Shielded VM integrity monitoring (§8.16) | vTPM | The boot chain matched a known-good baseline |
| Confidential Space attestation | The confidential hardware | The workload's identity and image, to a relying party |
The second is the one that composes with IAM, and it is the genuinely GCP-specific capability in this chapter. Confidential Space runs a workload in a hardened confidential environment and produces an attestation token: a signed assertion carrying claims about what is running.
Those claims are then used in a Workload Identity Pool provider's attribute condition, exactly as a GitHub Actions token's claims are in §4.7. The claim that matters most is the container image digest, so access can be bound to a specific image rather than to a service account anyone in the project could use.
The consequence is a secret released only to specific running code. A Cloud KMS key granted to a principalSet derived from attestation claims is available only to a workload whose image digest matches — and not to an operator reading the project's IAM policy.
That is the multi-party computation pattern: several parties each grant a key to one attested workload, none trusting the others or the operator, all trusting the attestation.
Pitfall. An attestation is only as strong as the condition written against it. A provider that accepts any attestation from the project, without pinning the image digest, proves the workload ran in Confidential Space and nothing about what ran — which is the same failure as an unpinned federation condition (§26.4), with more machinery in front of it.
36.7 Sensitive Workloads §
The decision framework, stated as the question to ask rather than as a list of use cases.
Ask whether the platform operator is in your threat model. If the honest answer is no — and for most workloads it is no, because you have already accepted Google as a trusted operator for everything else — then confidential computing is buying protection against an adversary you are not defending against, at the cost of a detector you are using.
Where the answer is yes:
| Situation | Why |
|---|---|
| Multi-party computation | The parties do not trust each other, and none trusts the operator |
| Sovereignty requirements | A regulation names operator access specifically |
| Key material handled in plaintext | The material's whole value is that nobody else sees it |
| Processing another party's regulated data | Your contract may assert operator opacity |
Distinguish this from Assured Workloads (§30.5), which constrains who at Google may support the environment and where data may live. Confidential computing makes the question moot for memory specifically. They compose.
Plan the detection replacement explicitly. A confidential workload has lost VM Threat Detection (§16.9). On GKE, Container Threat Detection still applies (§36.3); on a VM it means a guest agent, which an in-guest attacker can disable — the exact property §16.9 praises the agentless scanner for not having.
Pitfall. Confidential computing is easy to mandate and hard to unwind. A policy requiring it estate-wide will meet machine-type incompatibility, live-migration constraints on SEV-SNP and TDX, and the silent loss of a detector across the fleet. Scope it to the workloads whose threat model justifies it, and record why each one qualifies.
Chapter Summary §
- Confidential computing removes the hypervisor, the operator, and co-tenants from the trust boundary for guest memory — and removes the platform as a place from which to help you.
- §16.9's trade-off is the chapter's spine: VM Threat Detection scans memory from the hypervisor, and a Confidential VM's memory is encrypted against exactly that. You cannot have both on one instance.
- It does not protect against your own code, your dependencies, a compromised guest OS, or Google's control plane.
--confidential-compute-typeacceptsSEV,SEV_SNP,TDX,CCA, andBMSAI; only the first three could be verified against documentation, and this book describes only those.- Live migration is supported for AMD SEV on N2D and C3D only; SEV-SNP and TDX instances terminate and restart on host maintenance.
- SEV encrypts memory; SEV-SNP and TDX add memory integrity. Encryption prevents reading, not modification, and the trust root moves to the hardware vendor rather than disappearing.
- GKE's
--confidential-node-typetakes lowercasesev,sev_snp,tdxwhere Compute Engine takes uppercase — a real source of failed automation. - Container Threat Detection instruments the guest kernel and is unaffected by memory encryption, making it the compensating control on a confidential node pool — which is a reason to scope confidential nodes per pool rather than per cluster.
- "Encryption in use" is not homomorphic encryption: plaintext exists inside the CPU, and code execution inside the boundary sees it.
- Data written to disk, sent over the network, or logged leaves the boundary immediately. No performance figure here could be verified; measure it for your workload.
- Confidential Space produces an attestation token whose claims — notably the container image digest — can be used in a Workload Identity Pool attribute condition.
- That allows a Cloud KMS key to be released only to a workload running a specific image, which is the multi-party computation pattern.
- An attestation condition that does not pin the image digest proves the workload ran in Confidential Space and nothing about what ran.
- Ask whether the platform operator is genuinely in your threat model. For most workloads the answer is no. Assured Workloads addresses a related problem differently and composes with this; neither replaces the other.
Security Checklist §
| Control | Why it matters | How to verify (CLI + Console) |
|---|---|---|
| Confidential instances documented with a threat-model justification | It trades a detector for protection against a specific adversary | The exception register, per workload |
| Detection replacement planned for every confidential instance | VM Threat Detection is silently unavailable (§16.9) | Guest agent inventory; Container Threat Detection status |
| Technology chosen against the adversary model | SEV encrypts; SEV-SNP and TDX add integrity | gcloud compute instances describe NAME --zone=ZONE --format='value(confidentialInstanceConfig)' |
| Live-migration behavior accounted for in availability design | SEV-SNP and TDX terminate on host maintenance | Instance scheduling.onHostMaintenance and machine type |
| Confidential nodes scoped per node pool | Cluster scope changes system pools too | gcloud container node-pools describe POOL --cluster=CLUSTER --region=REGION |
| GKE flag values lowercase, Compute Engine uppercase | The casing differs between the two commands | The automation that sets them |
| Attestation conditions pin the image digest | Otherwise the attestation proves only the environment | Workload identity pool provider attribute condition |
| KMS key release bound to attestation claims | This is what makes the key unavailable to an operator | Key IAM policy principalSet members |
Sources §
- https://cloud.google.com/confidential-computing/confidential-vm/docs/supported-configurations — machine series, technology support, and which configurations permit live migration (last validated 2026-09-04)
- https://cloud.google.com/confidential-computing/confidential-vm/docs/confidential-vm-overview — the Confidential VM isolation model and what it protects (last validated 2026-09-04)
- https://cloud.google.com/confidential-computing/docs/confidential-computing-overview — the three states of data and the boundary confidential computing draws (last validated 2026-09-04)
- https://cloud.google.com/confidential-computing/confidential-space/docs/confidential-space-overview — Confidential Space, its attestation token, and the multi-party pattern (last validated 2026-09-04)
- https://cloud.google.com/kubernetes-engine/docs/how-to/confidential-gke-nodes — confidential node configuration and its scope (last validated 2026-09-04)
- https://cloud.google.com/confidential-computing/confidential-vm/docs/attestation-overview — the Confidential VM attestation model and its trust root (last validated 2026-09-04)
- https://cloud.google.com/confidential-computing/confidential-space/docs/reference/token-claims — the attestation token claims an attribute condition can pin (last validated 2026-09-04)
- https://cloud.google.com/assured-workloads/docs/overview — how Assured Workloads addresses operator access differently (last validated 2026-09-04)