Encrypting block and file storage: the basics
Why disks and file systems each have their own version of the same finding
EBS volumes, EFS file systems and WorkSpaces desktop disks are the storage layers your compute reads and writes directly. Encryption at rest scrambles the bytes on those disks with an AWS KMS key, so a stolen volume, a leaked snapshot or a mis-shared backup reveals ciphertext instead of data. Security Hub turns each storage type into its own control: EC2.3 covers attached EBS volumes, EC2.7 covers the account-level EBS default-encryption toggle, EFS.1 and EFS.8 cover EFS file systems, and WorkSpaces.1 and WorkSpaces.2 cover the user and root volumes of virtual desktops. Different resources, identical risk: storage readable on disk.
They look like separate problems on the report, but they are one capability: prove that every block and file volume in the estate, and every snapshot or backup derived from it, is encrypted under a key you can govern. The bytes are protected with AES-256 and the encryption is hardware-accelerated, so there is no measurable performance cost; the value is the KMS key boundary, which lets you authorise, log and revoke access to the data without touching the workload.
The trait that makes this capability sharp is that EFS and WorkSpaces bind encryption to creation: an EFS file system's Encrypted flag and a WorkSpace's RootVolumeEncryptionEnabled flag are read-only after the resource is built, so the only fix is a migration to a new, encrypted resource. EBS is the reverse: existing volumes still cannot be encrypted in place, but the account-level default (EC2.7) is a single per-region toggle that makes every new volume encrypted from creation. The work is to find the unencrypted storage, migrate what is immutable, and flip the EBS default everywhere so the gap cannot grow.
In this lesson you will learn how AWS expresses encryption at rest across block and file storage, why EFS and WorkSpaces make encryption immutable at creation while the EBS default is a free per-region toggle, how to migrate the immutable resources without an outage, and how to stop new unencrypted storage from ever appearing. The Controls this lesson covers section lists every Security Hub control in this capability, each linking to a deep page with the exact check and a copy-and-paste fix.
The default AWS shipped but never turned on
EBS encryption launched in 2014, but for years the account-level default was off in every account in every region. AWS finally shipped the per-region toggle in 2019, and made EFS console encryption default-on the same year, but it never auto-enabled them: silently changing a default would have broken every cross-account snapshot copy in existence. The result is a long tail. In 2026 there are still large accounts where EC2.7 fails in three regions because someone flipped it on in us-east-1 and called it done, and EFS file systems created from a 2017 CloudFormation template that never set Encrypted=true. The defaults exist, but every resource created before them still has to be checked and, for the immutable ones, migrated.
Finding unencrypted storage across an estate
Marco is closing out a SOC 2 readiness sprint. Security Hub shows storage encryption failures across EBS, EFS and WorkSpaces in three accounts: the EBS default was flipped on in the home region years ago but never in the two newer regions, and a handful of file systems and desktops pre-date the encryption standard.
Rather than work the findings resource by resource, he starts by confirming the cheapest, highest-leverage gap first: whether the per-region EBS default is actually on everywhere, because that single toggle stops new unencrypted volumes before he touches the migrations.
Check the EBS default-encryption state per region. A false here is what causes EC2.7 to fail and lets new volumes be created unencrypted.
Flip the per-region default first: it is free, instant, and stops the gap growing while you migrate the immutable storage.
How AWS encrypts block and file storagedeep dive
All three storage types use AES-256 envelope encryption keyed by KMS, applied inside the storage layer so the guest OS sees ordinary disks. EBS encrypts each volume with a data key wrapped by a KMS key (the AWS-managed aws/ebs key or a customer-managed one); WorkSpaces is built directly on EBS encryption, so its root and user volumes follow the same model with a VolumeEncryptionKey chosen at creation; EFS encrypts each 4 KiB block with a per-file-system data key wrapped by KMS, and is hardware-accelerated so IOPS, throughput and latency are unchanged versus an unencrypted file system. In every case, revoking access to the KMS key makes the data unreadable, which is the access-management property the controls are really about.
The EBS default (EC2.7) is stored in the regional EC2 service configuration, separate from any individual resource. When a volume is created (directly, from an AMI, or from a snapshot restore) EC2 checks the regional default before allocating storage and encrypts the new volume if it is on. The setting is per region, which is the single most common reason an org thinks it has done the encryption thing while Security Hub keeps firing: it was flipped in the home region and never in the others, and new regions start with it off. AMI launches honour the default even when the source snapshot was unencrypted.
EFS and WorkSpaces are immutable because, like an existing EBS volume, the storage was provisioned around a specific encryption decision and cannot be flipped in place. EFS exposes Encrypted as a create-only input and has no modify path, so remediation is create-a-new-encrypted-file-system and migrate the data (AWS DataSync runs incremental EFS-to-EFS passes so the cutover window is minutes). WorkSpaces exposes RootVolumeEncryptionEnabled and UserVolumeEncryptionEnabled as create-only, with no UpdateWorkspaceEncryption API, so remediation is to back up the user volume, recreate the WorkSpace encrypted, migrate the data and terminate the old one. Snapshots and AWS Backup recovery points inherit the source's unencrypted state, so a single unencrypted volume seeds many unencrypted artefacts over time.
What is the impact of leaving storage unencrypted?
The direct impact is data exposure. An unencrypted volume or file system stores its contents as plaintext on disk and in every snapshot and backup derived from it. The root volume of a virtual desktop is not the throwaway disk people assume: it holds the pagefile and swap (which can contain anything that was in memory, including decrypted secrets), browser caches, temporary download folders and registry hives that cache credential material. If any of that storage leaks, through a misconfigured backup, a leaked image or insider access to the storage layer, it is readable. Encryption turns those scenarios into ciphertext.
The compliance impact is mechanical. SOC 2, ISO 27001, HIPAA, PCI DSS and FedRAMP all expect encryption of data at rest as a baseline control (NIST SC-13 and SC-28). EC2.7 failing in any production region, or an EFS holding regulated data unencrypted, becomes audit evidence that the control is not enforced: even if 95 percent of your volumes happen to be encrypted, the auditor's question is what stops the next one from being unencrypted, and the answer needs to be the regional default, not vigilance.
The structural impact is the immutability constraint on EFS and WorkSpaces. Because they cannot be toggled later, every unencrypted file system or desktop is a deferred migration project whose cost scales with data volume and the number of dependent mounts or users. A 380 GB file system is a sprint; a multi-terabyte one feeding a dozen services is a multi-week project. There is a second-order tell, too: an unencrypted root volume next to an encrypted user volume usually means provisioning was not governed, so a cluster of these findings is a prompt to review the whole provisioning path, not just patch the symptoms.
How do you encrypt the storage estate safely?
Work the capability as one loop rather than chasing individual resource findings. The order matters: flip the free EBS default everywhere first, inventory and prioritise the immutable storage by data sensitivity, migrate it, then enforce the defaults with a guardrail so the gap cannot reopen.
1. Flip the EBS default in every enabled region
Use aws ec2 describe-regions to enumerate every region the account has opted into, then enable-ebs-encryption-by-default in each. The call is idempotent, takes effect immediately, and only governs new volumes. Do not trust memory: someone has almost certainly enabled a region for an experiment that nobody else tracks. This single step is the cheapest, highest-leverage part of the whole capability.
2. Inventory and prioritise the immutable storage by data sensitivity
List every EFS file system on Encrypted==false and every WorkSpace on RootVolumeEncryptionEnabled==false, scoring each by data classification (PHI, PII, PCI scope), size, and the number of dependent mounts or users. Migrate the highest-risk one first so it builds the runbook for the rest. Note that existing attached EBS volumes (EC2.3) also need migrating; the default only protects new ones.
3. Migrate the immutable resources to encrypted replacements
For EFS, create a new file system with --encrypted and the right KMS key, mirror the source's performance and mount-target configuration, run AWS DataSync incremental passes leading up to a brief cutover, repoint the mounts, verify, then delete the source. For WorkSpaces, back up the user volume, call create-workspaces with both encryption flags true and a VolumeEncryptionKey, confirm the user's data, then terminate the old desktop. For existing EBS volumes, snapshot, copy the snapshot with a KMS key, and replace.
4. Enforce the defaults with Config rules and SCPs
Enable the AWS Config rules ec2-ebs-encryption-by-default, efs-encrypted-check and workspaces-root-volume-encryption-enabled so any drift or new unencrypted resource is flagged within minutes. Bake encrypted=true into your Terraform and CloudFormation modules and add CI policy (Checkov or tfsec) that fails on an unencrypted volume or file system. At the org level, an SCP denying ec2:DisableEbsEncryptionByDefault and creation of unencrypted file systems makes the prevention durable across the whole organisation.
# 1. Flip the EBS default across every enabled region (idempotent, free, new volumes only).
for region in $(aws ec2 describe-regions --query 'Regions[].RegionName' --output text); do
aws ec2 enable-ebs-encryption-by-default --region "$region" >/dev/null
echo "$region: EBS default encryption on"
done
# 2. Inventory the immutable storage that needs migrating.
aws efs describe-file-systems \
--query 'FileSystems[?Encrypted==`false`].[FileSystemId,Name,SizeInBytes.Value]' --output table
aws workspaces describe-workspaces \
--query 'Workspaces[?RootVolumeEncryptionEnabled==`false`].[WorkspaceId,UserName]' --output table
# 3. Create an encrypted EFS replacement (then migrate data with AWS DataSync, cut over, delete source).
aws efs create-file-system --encrypted \
--kms-key-id alias/storage-encryption \
--performance-mode generalPurpose --throughput-mode elastic
# 4. Confirm the default holds, then back it with a Config rule and an SCP.
aws ec2 get-ebs-encryption-by-default --query 'EbsEncryptionByDefault' Quick quiz
Question 1 of 5Security Hub shows storage encryption failures across EC2.7, EFS.1 and WorkSpaces.2. What is the most efficient way to think about them?
You scored
0 / 5
Keep learning
Go deeper on how at-rest encryption works across the storage types in this capability.
- Amazon EBS encryption and the default-encryption toggle The account-level per-region toggle, the default keys, and how AMI launches honour the default.
- Amazon EFS data encryption at rest How EFS encryption works, which KMS key to choose, and the immutability constraint that forces a migration.
- Encrypt a WorkSpace How WorkSpaces volume encryption works, why it must be set at creation, and the KMS key relationship.
You can now treat block and file storage encryption as one capability rather than a scatter of findings: flip the free per-region EBS default everywhere first, inventory the immutable EFS and WorkSpaces resources and migrate the regulated-data ones, replace existing unencrypted EBS volumes, and lock the defaults with Config rules and an SCP so the gap cannot reopen. The Controls this lesson covers section below links every control in this group to its deep page and fix.
Back to the library