Google Cloud encrypts every byte of customer data at rest by default with AES-256, and it encrypts data in transit automatically, no configuration required. If you need to own or control the keys yourself, for compliance, contractual, or legal reasons, Cloud KMS gives you three backends: software-protected keys, Cloud HSM for FIPS 140-2 Level 3 hardware assurance, and Cloud EKM for external key managers. Most workloads never need to touch key management. Regulated ones almost always do.
TL;DR:
- Most workloads do not require customer-managed keys because Google's default AES-256 encryption at rest and TLS in transit provide strong security without additional configuration.
- When implementing CMEK, consider the specific compliance requirements; software-based keys via Cloud KMS are sufficient for most cases, while Cloud HSM or Cloud EKM are necessary for strict hardware or jurisdictional sovereignty needs.
- Key rotation policies should be tailored to data sensitivity, with regular audits and key access justifications crucial for maintaining control and auditability.
- Support for CMEK varies across Google Cloud services, so verify each resource's support level and regional constraints before planning a deployment.
- Moving to CMEK involves careful planning, staged rollout, and a recovery strategy, as destroying a key permanently irretrieves all associated data.
Table of Contents
- Google Cloud Encryption Architecture at a Glance
- How Does Encryption at Rest Actually Work?
- What Protects Data in Transit and While It's Running?
- Cloud KMS, CMEK, Cloud HSM, or Cloud EKM: Which One Do You Actually Need?
- Locking Down Key Access: IAM, Rotation, and Audit Visibility
- Which Google Cloud Services Actually Support CMEK?
- Rolling Out CMEK: A Step-by-Step Migration Checklist
- Cryptographic Standards and Compliance Notes
- How Vetros Handles Encryption Behind the Dashboard
- The Real Trade-Off Nobody States Plainly
- Sources
- FAQ
Google Cloud Encryption Architecture at a Glance
Before you touch a single IAM policy or provision a key ring, it helps to see the whole stack. Google Cloud's encryption model works in layers, and each layer solves a different problem: performance, blast radius, and key custody.
At the bottom sits the storage hardware itself. Above that is the storage-system layer, where individual data chunks get encrypted before they ever touch a disk. Above that sits the key hierarchy: a small number of powerful keys that protect a much larger number of data keys. The whole thing is built on what's called envelope encryption, and it's the single most important concept to understand before anything else in this article makes sense.
Here's the layered breakdown:
- Device and storage-system layer: physical and logical storage where encrypted chunks land, isolated from the keys that protect them.
- Data Encryption Keys (DEKs): generated per chunk of data, kept close to that data for fast local decryption.
- Key Encryption Keys (KEKs): a much smaller set of keys that wrap and unwrap DEKs, stored centrally.
- Keystore and Root Keystore: the service that holds KEKs, itself protected by a root keystore master key distributed across a peer-to-peer system.
The logic behind envelope encryption is straightforward once you see it: encrypting every chunk directly with a small number of master keys would create a massive bottleneck and a massive blast radius if any one key leaked. Instead, Google generates a unique DEK for each chunk, wraps that DEK with a KEK, and only the KEK ever needs tight, centralized protection. Decrypting data means unwrapping the local DEK, not reaching across a data center for a master secret every time.
Google implements the actual cryptography using Tink, its open-source cryptographic library, which wraps a FIPS 140-2 validated module called BoringCrypto. That combination shows up throughout the rest of this guide, because it's the same primitive stack behind Cloud KMS, CMEK, and the default encryption every Google Cloud customer already has running whether they've configured anything or not.
How Does Encryption at Rest Actually Work?
Google Cloud encrypts customer data at rest by default using AES-256, with a small number of older legacy disks still running AES-128 under grandfathered configurations. You don't request this. You don't toggle it on. It happens before your write operation even completes.
The mechanics matter more than the headline, though. Every chunk of data gets its own DEK at creation time. That's a deliberate design choice: keeping keys local to the data they protect means decryption is fast (no network round-trip to a central key service for every read) and compromise of one DEK doesn't expose anything beyond that single chunk. The DEK itself never sits on disk unprotected. It gets wrapped by a KEK pulled from Keystore, and Keystore's own master keys live in Root Keystore, distributed across a system designed so no single machine holds the keys to everything.
The operational flow looks like this in practice:
- A write operation triggers generation of a new DEK scoped to that specific chunk.
- The DEK encrypts the data using AES-GCM, the preferred authenticated encryption mode across current Google infrastructure.
- A KEK, retrieved from Keystore, wraps the DEK before anything touches persistent storage.
- On read, the wrapped DEK gets unwrapped by the same KEK, and the DEK decrypts the chunk locally.
- Key rotation issues a new KEK version, but existing wrapped DEKs remain valid; Google re-wraps them opportunistically rather than in one disruptive batch operation.
AES-GCM is the standard now, but you'll still find AES-128 on some legacy persistent disks that predate the current default. If you're migrating old workloads, that's worth checking, since some compliance frameworks specifically require AES-256 and won't accept a legacy exception even if it predates your tenancy.
Rotation deserves a second look, because the failure modes aren't intuitive. Rotating a KEK doesn't touch your DEKs at all. It just means future wrap operations use a new KEK version, while old DEKs stay wrapped under the previous version until Google's background processes re-wrap them. Disabling or destroying a key is a different animal entirely: destroy a CMEK and every DEK it ever wrapped becomes permanently unrecoverable. There's no backdoor, no support ticket that gets your data back. That's the trade-off you're accepting the moment you move from Google-managed defaults to customer control.

Pro Tip: Before you ever schedule a key destruction, run a dry-run inventory of every resource wrapped under that key. Google Cloud's asset inventory tools can list CMEK associations, and skipping this step is the single most common cause of accidental, unrecoverable data loss in CMEK deployments.
What Protects Data in Transit and While It's Running?
Data moving between Google Cloud services, and between your applications and Google's APIs, travels over TLS by default. That covers the obvious case: browser to load balancer, client to API endpoint. It also covers something less obvious that engineers often assume they need to configure manually: service-to-service traffic inside Google's own infrastructure, which is encrypted at the network layer regardless of whether the application layer adds its own TLS session.
Mutual authentication matters here too. Google's internal service-to-service communication uses mutual TLS with certificate-based identity, meaning both ends of a connection verify each other rather than trusting a one-way handshake. If you're running workloads that talk to Google APIs from your own infrastructure, you should be doing the equivalent: verifying server certificates, rotating client credentials, and never assuming that TLS alone substitutes for endpoint identity checks.
Encryption in transit and at rest leaves one gap: the moment data gets decrypted into memory for active processing, it's plaintext, at least in a conventional architecture. Confidential Computing closes that gap for specific workloads.
- Confidential VMs encrypt memory contents during computation, using hardware-based memory encryption so even a compromised hypervisor can't read live application memory.
- Confidential GKE extends the same protection to containerized workloads running on Kubernetes nodes, letting you keep the orchestration model you already use.
- Threat model: this protects against a specific class of attacker (one with hypervisor or physical host access), not against application-level bugs or compromised credentials.
- Limits: Confidential Computing reduces exposure of in-use data, but it's not a substitute for solid key management or attestation. A well-managed key hierarchy still does the heavy lifting.
If you're handling data with strict in-use confidentiality requirements, healthcare research workloads or multi-tenant analytics where tenants can't trust each other's isolation, Confidential VMs are worth the modest performance overhead. For everything else, standard TLS plus at-rest encryption covers the realistic threat model.
Cloud KMS, CMEK, Cloud HSM, or Cloud EKM: Which One Do You Actually Need?
Google-managed default encryption handles the vast majority of workloads correctly, and most engineering teams should stop there unless a specific requirement pushes them further. The decision tree from that point forward comes down to how much key custody you need and how much operational overhead you're willing to accept for it.
Cloud KMS with software-protected keys is the first step-up. You get customer-managed keys, meaning you control creation, rotation schedule, and destruction, without the latency or cost of dedicated hardware. Cloud KMS integrates directly with IAM and Cloud Audit Logs, so every key operation is attributable to an identity and auditable after the fact. For most CMEK deployments, this tier is the right default.
Cloud HSM exists for one reason: FIPS 140-2 Level 3 validated hardware protection. If your compliance framework, PCI DSS assessments and certain government contracts are the common triggers, requires keys that never exist outside a certified hardware boundary, this is the tier that satisfies the auditor. It costs more and adds latency compared to software keys, and for most teams that's a fine trade given what's at stake.
Cloud EKM goes a step further and separates the key material from Google's infrastructure entirely. External key managers, including partners like Thales and Fortanix, hold the actual key while Google calls out to them for every cryptographic operation. This is the option teams reach for when a legal or regulatory requirement specifically demands that a third party outside the cloud provider retain custody, sovereign cloud mandates in some jurisdictions being the clearest example.
Here's the practical comparison:
- Software keys (Cloud KMS): fastest, cheapest, fully managed, sufficient for the large majority of CMEK use cases.
- Cloud HSM: FIPS 140-2 Level 3 hardware assurance, higher cost, added latency, needed for hardware-backed compliance mandates.
- Cloud EKM: key material lives outside Google entirely, highest operational complexity, reserved for sovereignty or contractual separation requirements.
One more decision point sits underneath all three: how you provision keys at scale. Manual provisioning means you create key rings, keys, and IAM bindings resource by resource, which works fine for a handful of projects but becomes unmanageable across dozens of teams. Autokey automates that provisioning while preserving CMEK ownership semantics. You still own the keys; you just stop hand-building the plumbing every time a new project spins up. If you're running platform engineering for an organization with more than a handful of GCP projects, Autokey is worth adopting early rather than retrofitting later.
Locking Down Key Access: IAM, Rotation, and Audit Visibility
Owning a key is only half the job. The other half is proving, continuously, who used it and why. Google Cloud's model for this runs through IAM roles, automated rotation, and audit logging, and skipping any one of the three leaves a real gap.
Access control starts with the CryptoKey Encrypter/Decrypter role, which you grant to the service agent of whichever service is using the key, not to individual human users in most production setups. Google Cloud services that integrate with CMEK typically operate through a dedicated service agent identity, so your IAM policy should reflect that model rather than trying to grant broad access to engineers directly.
- Grant
CryptoKey Encrypter/Decrypterto the specific service agent needing the key, never to a broad group or a wildcard service account. - Set an automated rotation period on the key, commonly every 90 days for most compliance frameworks, though some regulated environments require shorter cycles.
- Review Cloud Audit Logs for every
Encrypt,Decrypt, and key-management API call, watching specifically for requests from unfamiliar service accounts or unexpected regions. - Enable Key Access Justifications on your highest-value keys so that every operation requires a stated justification, whether automated or human-approved.
- Alert on any spike in
Decryptcalls outside normal business patterns, which is often the first visible signal of a compromised service account.
Rotation cadence isn't one-size-fits-all. A key protecting low-sensitivity operational logs doesn't need the same 90-day cycle as one protecting cardholder data. Match the cadence to the data classification, not to a single company-wide policy that either over-rotates trivial keys or under-rotates sensitive ones.
Key Access Justifications deserves particular attention if you're in a regulated industry. It's the control that turns "we have audit logs" into "we have provable, justified access for every single key operation," which is a meaningfully stronger posture during an actual audit or breach investigation.
Pro Tip: Set up a separate log sink filtering exclusively for Cloud KMS API calls, routed to its own alerting pipeline. Mixing key-usage logs into your general audit log noise means anomalous decrypt patterns get buried under routine application logging, exactly when you need them to stand out.
Which Google Cloud Services Actually Support CMEK?
Not every Google Cloud service integrates with customer-managed keys the same way, and the differences matter when you're planning where sensitive data lives. Full CMEK integration means the service transparently uses your key for every encrypt and decrypt operation via its own service agent. Partial or limited support sometimes means only specific sub-resources are covered, or that key rotation behaves differently than you'd expect.
Services with strong, well-documented CMEK integration include:
- Cloud Storage, where CMEK applies at the bucket or object level.
- BigQuery, covering dataset-level encryption for tables and views.
- Compute Engine and Persistent Disk, protecting boot and attached disks.
- Secret Manager, encrypting stored secret versions.
- Cloud SQL and Spanner, for managed database storage.
Before committing a workload to CMEK, check the specific service's documentation for exceptions. Some services only support CMEK for newly created resources, not retroactively for existing ones, and some support Cloud HSM and Cloud EKM as backends while others are limited to software-protected Cloud KMS keys only.
Region and residency add another wrinkle worth planning around early. A key ring lives in a specific location, and for most CMEK-integrated services, that location has to match or be compatible with the resource it protects. If you're running a multi-region deployment for latency reasons but a compliance requirement mandates that keys never leave a specific jurisdiction, you'll need to plan your key ring topology before you provision resources, not after.
Rolling Out CMEK: A Step-by-Step Migration Checklist
Moving from default encryption to customer-managed keys is a controlled, sequential process, not a flag you flip in production on a Friday afternoon.
- Inventory every resource that needs protection and cross-checks each one against its service's current CMEK support level, including any regional restrictions.
- Create key rings and keys in a location matching your resource footprint, choosing software, Cloud HSM, or Cloud EKM based on your actual compliance requirement, not the strongest option by default.
- Set IAM policies granting
CryptoKey Encrypter/Decrypteronly to the specific service agents that need it, and enable Autokey if you're rolling this out across many projects. - Run a staged rollout on non-production resources first: create a test resource under the new key, confirm encrypt and decrypt operations succeed, and confirm Cloud Audit Logs capture the expected entries.
- Simulate a key-disable event in a sandboxed project to confirm your team understands the actual blast radius before it happens in production.
- Document a recovery plan, including backups of key metadata and, if you're using Cloud EKM, a documented workflow with your external key manager partner for what happens if that external connection fails.
- Roll out to production incrementally, monitoring audit logs closely during the first weeks for any unexpected decrypt failures from services you didn't realize touched that resource.
The recovery plan step gets skipped more often than it should. Key metadata backup isn't about the key material itself, Google and your HSM or EKM partner already handle that durability, it's about your own operational documentation: which resources depend on which keys, who owns rotation decisions, and what the escalation path looks like if a key gets disabled unexpectedly by a misconfigured automation script.
Pro Tip: Run your key-disable simulation on a resource that mirrors production traffic patterns, not an empty test bucket. The failure mode you're actually testing for is application behavior under sudden decrypt failures, and that only shows up under realistic load.
Cryptographic Standards and Compliance Notes
The algorithms underneath all of this aren't exotic. AES-256 in GCM mode is the standard primitive across current Google Cloud infrastructure, chosen specifically because it's authenticated encryption, meaning tampering gets detected, not just prevented.
- AES-GCM is preferred; AES-128 shows up only on legacy disks predating the current default and shouldn't be assumed present on new resources.
- Tink, Google's cryptographic library, implements these primitives consistently across services rather than leaving each team to roll its own crypto.
- BoringCrypto, the module inside Tink, carries FIPS 140-2 validation, which is the artifact auditors typically want cited directly.
- NIST publications, particularly SP 800-131A, govern which algorithms and key lengths remain approved for regulated use over time, and they're worth citing by name in any audit documentation rather than paraphrasing.
FIPS 140-2 validation, not just "FIPS-compliant" marketing language, is what auditors in finance and healthcare specifically look for. Cloud HSM's Level 3 validation is a materially stronger claim than a general FIPS reference, and it's worth knowing the difference before a compliance conversation puts you on the spot.
How Vetros Handles Encryption Behind the Dashboard
Vetros runs on Google Cloud and uses its default encryption mechanisms for data at rest and in transit, requiring no configuration on the customer's side. Where a client's compliance posture calls for it, customer-managed key options through Cloud KMS can be applied rather than relying solely on Google-managed defaults.
That encryption layer sits underneath a broader transparency commitment. Vetros maps data lineage for every dashboard it builds, so customers can trace exactly where a number came from, and it exposes the underlying code directly, letting technical stakeholders read and modify the logic instead of trusting a black box. Key rotation and audit logging follow the same patterns described earlier in this article: scoped IAM roles, logged key operations, rotation policies matched to data sensitivity. If your team needs live dashboards without building a data engineering function from scratch, that combination, automated dashboards with an encryption foundation you can actually inspect, is the practical starting point.
The Real Trade-Off Nobody States Plainly
Most encryption content treats key management as a binary: either you trust the cloud provider's defaults or you don't. That framing misses the actual decision engineers face, which is about matching key custody to a specific, named requirement rather than maximizing control for its own sake.
The conventional advice, "just enable CMEK everywhere for better security," is often wrong in practice. CMEK done poorly adds operational risk without adding real security, since a mismanaged key rotation policy or an accidentally destroyed key can take down resources that Google-managed encryption would have protected just fine. The teams that get this right start by asking which specific compliance clause or contract term requires customer-managed keys, then scope CMEK to exactly those resources.
What deserves more attention than it gets: audit logging and Key Access Justifications. Engineers spend hours debating software keys versus Cloud HSM and almost no time setting up the alerting that would actually catch a compromised key in use. Get the visibility layer right first. The backend choice matters less than knowing, in real time, when a key gets used in a way it shouldn't.
— Ąžuolas
Sources
For hands-on configuration work, keep these close: Google's default encryption at rest documentation explains the envelope encryption model in full. The Cloud KMS security deep dive covers IAM and audit log integration. The CMEK reference details service-agent behavior and Autokey. For hardware and external key backends, see the Cloud Key Management product page. For algorithm approval timelines, NIST SP 800-131A remains the standard citation.
FAQ
Is iCloud or Google Cloud Safer for Encryption?
Both encrypt data at rest and in transit by default, but Google Cloud gives engineers granular control through Cloud KMS, CMEK, and Cloud HSM that consumer-focused iCloud doesn't expose, making Google Cloud the stronger fit for regulated business workloads specifically.
Does Google Encrypt All Cloud Data by Default?
Yes. Google Cloud encrypts all customer content at rest using AES-256 by default, with no customer configuration required, and encrypts data in transit using TLS automatically.
Is OneDrive or Google Drive More Secure?
Both platforms encrypt stored files by default, but this article focuses on Google Cloud's infrastructure-level encryption for engineering workloads rather than consumer file-sync products, so a direct security comparison between the two consumer tools sits outside its scope.
What Are the Downsides of Google Cloud Encryption?
Customer-managed keys add real operational overhead: destroying a CMEK permanently destroys every DEK it wrapped with no recovery path, and Cloud HSM or Cloud EKM add latency and cost compared to Google-managed defaults. Teams that adopt CMEK without a recovery plan risk turning a compliance win into an outage.
Do I Need CMEK If I'm Not in a Regulated Industry?
Not necessarily. Google-managed default encryption already provides AES-256 protection for the large majority of workloads, and CMEK is primarily valuable when a specific compliance framework, contract, or legal requirement demands customer key ownership.
