Data Protection Day 3
SCS-C03 · Domain 5 · Data Protection (18%) · Day 3 of 5

Data at rest, integrity, retention and backup

Days 1 and 2 were about keys. Today you use them: encrypting S3, EBS, RDS, DynamoDB and EFS, then stopping data from being changed or deleted with Object Lock, Vault Lock and integrity checks, and finally keeping it for the right time and recovering it with lifecycle rules, AWS Backup, replication, DLM and DataSync.

Skill 5.2.1 encryption at restSkill 5.2.2 data integritySkill 5.2.3 lifecycle and retentionSkill 5.2.4 replication and backup~100 min read + 30 min lab
01

Encrypting data at rest in Amazon S3

Skill 5.2.1 asks you to pick the right encryption at rest. S3 is where most of those questions live. Since January 2023 every new object is encrypted with SSE-S3 automatically, so the real question is never “is it encrypted?” but who holds the key, who can audit its use, and who can turn it off.

Concept profile

S3 server-side encryption (SSE-KMS)

often confused with SSE-S3
?What is it?

S3 encrypts each object with a data key that AWS KMS generates under a KMS key you choose (x-amz-server-side-encryption: aws:kms). To read the object, the caller needs s3:GetObject and kms:Decrypt on that key.

⚙How does it work?
  • Set it as the bucket’s default encryption, or per request with headers.
  • S3 calls KMS GenerateDataKey on upload and Decrypt on download, all logged in CloudTrail.
  • Turn on an S3 Bucket Key: S3 gets one bucket-level key from KMS and makes object keys from it, cutting KMS requests and cost by up to 99%.
  • Changing the default later does not re-encrypt old objects; use S3 Batch Operations Copy.
{ }Structure
SSE-S3AES256S3 owns the keydefault since 2023no key auditSSE-KMSaws:kmsKMS key you pickCloudTrail per usekey policy = 2nd lockDSSE-KMSaws:kms:dssetwo AES-256 layersKMS + S3 keysstrict complianceSSE-Ccustomer key headersyou send key each callHTTPS onlyoff for new bucketsClient-sideencrypt before PUTEncryption SDK /S3 Encryption ClientS3 sees ciphertextAWS does moreyou do moreThe first four are server-side: S3 encrypts on write and decrypts on read. Only client-side keeps plaintext away from AWS.
Five ways to encrypt S3 data, from least to most work for you.
⇄SSE-KMS vs SSE-S3
SSE-KMSSSE-S3
Key ownerKMS key (customer managed or aws/s3)S3-owned keys
Separate permission to readYes: kms:DecryptNo, S3 permission is enough
Audit each useCloudTrail KMS eventsNo
Disable or delete key = data lockedYesNo
CostKMS requests (Bucket Key lowers it)Free
Cross-account sharingCustomer managed key onlyWorks with bucket policy alone
!Common mistakes the exam tests
  • Using aws/s3 (AWS managed key) and then trying to share objects with another account: its key policy can’t be edited, so cross-account reads fail.
  • Forgetting the uploader needs kms:GenerateDataKey and the reader needs kms:Decrypt.
  • Expecting a new default to re-encrypt existing objects.
  • Turning on Bucket Keys but keeping key-policy conditions on the object ARN: the encryption context becomes the bucket ARN.
  • Picking SSE-C for new buckets: it is disabled for new buckets since April 2026 and must be enabled explicitly.
✓Benefits and use cases
  • Separation of duties: S3 admins can’t read data without KMS permission.
  • Audit trail of every decrypt for regulated data.
  • Crypto-shredding: disable or delete the key to make the data unreadable.

Server-side or client-side? KMS or CloudHSM?

Server-side means AWS encrypts after receiving your data, so it is easy and works with every AWS feature. Client-side means you encrypt before sending (AWS Encryption SDK, Amazon S3 Encryption Client, DynamoDB Encryption Client), so AWS stores only ciphertext. Choose client-side only when a rule says AWS or the storage admins must never see plaintext. For the key itself, KMS is the default answer; choose CloudHSM (or a CloudHSM key store) only when the question demands a single-tenant HSM you control.

Think of it like · a hotel safe

Your valuables are in a hotel. Who holds the key to the safe?

AWS conceptFamiliar thing
SSE-S3≈The hotel locks everything in its own vault; you never see a key
SSE-KMS≈The safe needs a second key from the front desk, and the desk logs every time it is handed out
DSSE-KMS≈Your bag goes in a locked box, inside the locked safe
SSE-C≈You bring your own padlock key every time; lose it and nobody can open the safe
Client-side≈You lock the bag before you arrive; the hotel only stores a locked bag
Bucket Key≈The desk gives the floor manager one master key for the day instead of walking up for every guest
Real AWS example · enforce SSE-KMS with one key

Default encryption plus a bucket policy that rejects uploads naming any other key.

$ aws s3api put-bucket-encryption --bucket fin-reports \
  --server-side-encryption-configuration '{"Rules":[{
    "ApplyServerSideEncryptionByDefault":{"SSEAlgorithm":"aws:kms",
      "KMSMasterKeyID":"arn:aws:kms:us-east-1:111122223333:key/1234abcd-..."},
    "BucketKeyEnabled":true}]}'

# bucket policy statement
{ "Effect":"Deny", "Principal":"*", "Action":"s3:PutObject",
  "Resource":"arn:aws:s3:::fin-reports/*",
  "Condition":{"StringNotEqualsIfExists":{
    "s3:x-amz-server-side-encryption-aws-kms-key-id":
      "arn:aws:kms:us-east-1:111122223333:key/1234abcd-..."}}}

Uploads without headers get the default key; uploads that ask for a different key are denied.

Exam-style scenario

A healthcare company stores patient files in S3. Auditors require a log of every time a file is decrypted, and the storage team must not be able to read files without separate approval from the security team. Costs from millions of small objects must stay low. What should it use?

  1. A. SSE-S3 with S3 server access logs.
  2. B. SSE-KMS with a customer managed key controlled by the security team, S3 Bucket Keys enabled.
  3. C. SSE-C with keys stored in Secrets Manager.
  4. D. DSSE-KMS with the AWS managed key aws/s3.
Show the worked answer

Answer: B

SSE-KMS gives a separate permission (kms:Decrypt on a key the security team controls) and CloudTrail records key use. Bucket Keys reduce KMS request costs.

Why not the others

  • A: No separate key permission; S3 admins can read everything.
  • C: Heavy app changes, keys sent with every request, and SSE-C is off by default for new buckets.
  • D: AWS managed key policy can’t be controlled by the security team, and dual layers add cost the question didn’t ask for.
How the exam tests this
  • “Audit key use, separate duties”→ SSE-KMS with a customer managed key.
  • “Too many KMS calls / throttling / cost”→ S3 Bucket Key.
  • “Two independent layers”→ DSSE-KMS.
  • “Plaintext must never reach AWS”→ Client-side encryption.
  • “Re-encrypt existing objects”→ S3 Batch Operations Copy (+ S3 Inventory).
Must remember
  • Default since Jan 2023: SSE-S3 for every new object.
  • SSE-KMS read = s3:GetObject + kms:Decrypt.
  • Bucket Key: fewer KMS calls; context = bucket ARN.
  • aws/s3 can’t be shared cross-account.
  • SSE-C: off by default for new buckets (Apr 2026), HTTPS only.
02

EBS, RDS, DynamoDB and EFS at rest

Each storage service has one quirk the exam loves: when can you turn encryption on, and what happens to snapshots, replicas and shares. Learn the four rules below and most “the team forgot to encrypt” questions answer themselves.

Concept profile

EBS encryption by default

often confused with RDS storage encryption
?What is it?

A per-account, per-Region setting that forces every new EBS volume and snapshot copy to be encrypted, with aws/ebs or a customer managed key you pick as the default.

⚙How does it work?
  • Run enable-ebs-encryption-by-default in each Region you use.
  • New volumes, including those created at instance launch, are encrypted. Existing volumes and snapshots are untouched.
  • Snapshots of encrypted volumes are encrypted; volumes made from them are encrypted.
  • You can’t change the key on an existing volume or snapshot, but you can pick a new key when you copy a snapshot.
{ }Structure
1Unencryptedvolume / DBinstance2Createsnapshot(still plain)3Copy snapshotwith encryption+ KMS key4Create volume /restore DB fromencrypted copyEBS and RDS can’t switch encryption on in place. Then point the app at the new volume or DB endpoint.EFS is similar: create a new encrypted file system and copy the data (for example with DataSync).
The universal fix for “it was created unencrypted”.
⇄EBS by default vs RDS storage encryption
EBSRDS / Aurora
Turn on for existing resourceNo: snapshot → encrypted copy → new volumeNo: snapshot → encrypted copy → restore
Account default switchYes, per RegionNo (choose at creation)
Replicasn/aReplica encryption must match the source
Cross-Region copyChoose key in destination RegionMust give a key in destination Region
Share snapshot with another accountOnly with a customer managed keyOnly with a customer managed key
Turn encryption offCan’t on an encrypted volumeCan’t
!Common mistakes the exam tests
  • Believing encryption by default is global: it is per Region.
  • Expecting it to encrypt existing volumes.
  • Sharing a snapshot encrypted with aws/ebs or the RDS AWS managed key: it can’t be shared. Re-copy with a customer managed key and allow the other account in its key policy.
  • Trying to create an encrypted read replica of an unencrypted RDS instance.
  • Forgetting the destination-Region KMS key when copying snapshots across Regions: KMS keys are Regional.
✓Benefits and use cases
  • Guarantee every new disk is encrypted without relying on people.
  • Pair with an SCP or Config rule ec2-ebs-encryption-by-default to keep it on.
  • Use a customer managed key so DR accounts can be granted access.

DynamoDB and EFS in one paragraph each

DynamoDB encrypts every table at rest, always; you can’t turn it off. You only choose the key: AWS owned (default, free, no audit), AWS managed (aws/dynamodb) or customer managed. You can switch between them at any time on an existing table.

Amazon EFS encryption at rest is chosen when you create the file system and can’t be added later. To encrypt an existing one, create a new encrypted file system and copy the data. Encryption in transit is separate: mount with the EFS mount helper option -o tls, and enforce it with a file system policy that denies when aws:SecureTransport is false.

Think of it like · a moving house

Some things can be locked after you move in, others only when you build them.

AWS conceptFamiliar thing
EBS by default≈A city rule: every new house in this district gets a locked door
Unencrypted volume≈An old house without a lock; you can’t retrofit, you build a copy with a lock and move in
RDS replica must match≈Twin houses must have the same kind of lock
aws/ebs snapshot≈A key that only works in your own district, so you can’t lend the copy to a neighbour
DynamoDB≈Every house comes with a lock; you only choose who keeps the key
EFS at creation≈The lock is part of the foundation; decide before you pour concrete
Real AWS example · encrypt an existing RDS database

Snapshot, copy with a KMS key, restore, then switch the app endpoint.

$ aws rds create-db-snapshot --db-instance-identifier legacy-db \
    --db-snapshot-identifier legacy-plain
$ aws rds copy-db-snapshot --source-db-snapshot-identifier legacy-plain \
    --target-db-snapshot-identifier legacy-enc \
    --kms-key-id alias/rds-prod
$ aws rds restore-db-instance-from-db-snapshot \
    --db-instance-identifier legacy-db-enc \
    --db-snapshot-identifier legacy-enc

Plan a short write freeze or use replication tools so no changes are lost between the snapshot and the cutover.

Exam-style scenario

A security audit finds that a production RDS for PostgreSQL instance and its read replica were created without encryption. The company must encrypt them with a customer managed key and later share snapshots with a DR account. What should the team do?

  1. A. Modify the DB instance and enable encryption with the customer managed key.
  2. B. Create an encrypted read replica, then promote it.
  3. C. Take a snapshot, copy it with encryption using the customer managed key, restore a new instance from the copy, recreate the replica, and allow the DR account in the key policy.
  4. D. Enable EBS encryption by default in the Region.
Show the worked answer

Answer: C

RDS encryption can only be set at creation. The snapshot-copy-restore path is the supported way, and a customer managed key is required to share snapshots.

Why not the others

  • A: Not possible on an existing instance.
  • B: You can’t have an encrypted replica of an unencrypted instance.
  • D: That setting is for EBS and never changes existing resources.
How the exam tests this
  • “Existing unencrypted EBS / RDS”→ Snapshot → copy encrypted → restore.
  • “Make sure every new volume is encrypted”→ EBS encryption by default (each Region).
  • “Share encrypted snapshot”→ Customer managed key + key policy for the other account.
  • “Copy encrypted snapshot to another Region”→ Key in the destination Region.
  • “Encrypt existing EFS”→ New encrypted file system + copy data.
Must remember
  • EBS by default: per Region, new resources only.
  • RDS: encryption at creation only; replicas match source.
  • AWS managed key snapshots: can’t share.
  • DynamoDB: always encrypted; key type switchable.
  • EFS at rest: creation only; in transit: -o tls.
03

Object Lock and Glacier Vault Lock

Encryption stops people reading data. Skill 5.2.2 is about stopping people changing or deleting it: write once, read many (WORM). In S3 that is Object Lock; in the original S3 Glacier vault API it is Vault Lock. Both are favourite answers when the question says “regulator”, “immutable” or “even the root user”.

Concept profile

S3 Object Lock

often confused with S3 Glacier Vault Lock
?What is it?

A WORM control on S3 object versions. A locked version can’t be overwritten or permanently deleted until its retention date passes or its legal hold is removed. Assessed for SEC 17a-4, CFTC and FINRA rules.

⚙How does it work?
  • Requires S3 Versioning; enabling Object Lock turns it on, and once on it can’t be turned off.
  • Set a default retention (mode + days or years) on the bucket, or a retain-until date per object version.
  • Choose governance (privileged users can bypass) or compliance (nobody can, not even root).
  • Add a legal hold for an open-ended freeze, independent of retention.
{ }Structure
Governance mode Retain-until date Most users blocked Bypass with s3:BypassGovernance- Retention + header Good for testing retention settings Compliance mode Retain-until date Nobody can delete, not even root Can’t shorten period Can extend it Only escape: delete the AWS account Legal hold No expiry date On until removed Anyone with s3:PutObjectLegalHold Independent of retention modes For lawsuits, audits All three protect one object VERSION. A simple DELETE still adds a delete marker; the locked version stays.
Two retention modes and one legal hold.
⇄Object Lock vs S3 Glacier Vault Lock
S3 Object LockGlacier Vault Lock
ScopeEach object versionA whole Glacier vault
ControlRetention mode + date, legal holdVault Lock policy (IAM policy language)
Test before it sticksUse governance mode first24-hour in-progress window, then complete
After lockingCompliance: can extend, never shortenPolicy can never be changed or deleted
For new workloadsYes (S3 Glacier storage classes too)Legacy vault API, no new customers
!Common mistakes the exam tests
  • Thinking a plain DELETE fails: it returns 200 and adds a delete marker. Only deleting the specific locked version is denied (403).
  • Using compliance mode to test: a mistake there can’t be undone for years. Test with governance.
  • Thinking governance mode is safe from admins: anyone with s3:BypassGovernanceRetention who sends x-amz-bypass-governance-retention:true can delete.
  • Confusing a legal hold with retention: a hold has no date; it stays until someone with s3:PutObjectLegalHold removes it.
  • Letting the Glacier Vault Lock 24-hour window lapse: the in-progress policy is deleted and you start again.
✓Benefits and use cases
  • Broker-dealer records that must be kept unchanged for 7 years.
  • Ransomware protection for backups stored in S3.
  • Litigation hold on specific files.
Older material says Object Lock can only be turned on when the bucket is created. Today you can enable it on an existing versioned bucket (PutObjectLockConfiguration). Objects already in the bucket get no retention automatically: apply retention or legal holds to them with S3 Batch Operations. Once enabled, Object Lock can’t be turned off.
Think of it like · a bank’s safe-deposit boxes

Different ways to stop anyone touching a box.

AWS conceptFamiliar thing
Governance mode≈Box sealed, but the branch manager’s master key can open it
Compliance mode≈Time-lock vault: no key opens it before the date, not even the CEO’s
Legal hold≈A court seal on the box with no end date until the judge lifts it
Delete marker≈A “closed” sign on the counter; the box behind it is untouched
Glacier Vault Lock 24 h≈A 24-hour trial of the vault rules before they are carved in stone
Real AWS example · lock a bucket by default for 7 years

New objects inherit compliance-mode retention automatically.

$ aws s3api put-object-lock-configuration --bucket trade-records \
  --object-lock-configuration '{"ObjectLockEnabled":"Enabled",
    "Rule":{"DefaultRetention":{"Mode":"COMPLIANCE","Years":7}}}'

$ aws s3api delete-object --bucket trade-records --key 2026/q3.csv \
    --version-id 3HL4kqtJlcpXroDT
An error occurred (AccessDenied) when calling the DeleteObject operation

Use put-object-legal-hold --legal-hold Status=ON to freeze a specific version without a date.

Exam-style scenario

A financial firm must keep trade confirmations in S3 for 7 years in a way that no user, including the root user, can delete or overwrite them. The team also wants to try the configuration safely before committing. What should it do?

  1. A. Enable versioning and MFA Delete.
  2. B. Test Object Lock in governance mode on a test bucket, then set a default retention of 7 years in compliance mode on the production bucket.
  3. C. Use a bucket policy that denies s3:DeleteObject to everyone.
  4. D. Apply a legal hold to every object.
Show the worked answer

Answer: B

Only compliance mode stops even the root user. Governance mode is the safe way to rehearse because privileged users can still bypass it.

Why not the others

  • A: The root user with the MFA device can still delete versions.
  • C: The root user or any admin can edit the bucket policy.
  • D: Anyone with s3:PutObjectLegalHold can remove holds, and there is no 7-year date.
How the exam tests this
  • “Nobody, not even root, can delete”→ Compliance mode.
  • “Lock but let a few admins override”→ Governance mode + s3:BypassGovernanceRetention.
  • “Freeze with no end date (lawsuit)”→ Legal hold.
  • “Lock a Glacier vault policy forever”→ Vault Lock: initiate, test 24 h, complete.
  • “SEC 17a-4 WORM storage”→ S3 Object Lock.
Must remember
  • Object Lock needs versioning; protects versions.
  • Compliance: can’t delete or shorten, even root.
  • Governance bypass: permission + header.
  • Legal hold: no expiry, needs s3:PutObjectLegalHold.
  • Vault Lock: 24 h to test, then immutable.
04

Integrity: versions, MFA Delete, checksums, signing

The rest of skill 5.2.2 is about proving data wasn’t changed: keeping old versions, making deletes harder, checking files byte for byte, and signing code so only trusted builds run. These are quick wins when the question says “detect tampering” or “verify”.

Concept profile

Data integrity controls

often confused with Encryption
?What is it?

Controls that keep or prove the exact content of data: S3 Versioning, MFA Delete, checksums, CloudTrail log file integrity validation, and code signing with AWS Signer.

⚙How does it work?
  • Versioning keeps every version; overwrite or delete just adds a new version or delete marker. Once enabled it can only be suspended, never removed.
  • MFA Delete demands an MFA code to permanently delete a version or change versioning. Only the root user can enable it, with the CLI or API.
  • Checksums (CRC64NVME, CRC32, CRC32C, SHA-1, SHA-256, or Content-MD5) are checked by S3 on upload and stored for later checks.
  • CloudTrail log file validation writes hourly signed digest files so you can prove logs weren’t edited or deleted.
  • AWS Signer signs Lambda code and container images; a Lambda code signing configuration can block unsigned or untrusted code.
{ }Structure
Client computes checksum CRC64NVME / SHA-256 PutObject Amazon S3 recomputes, rejects mismatch, stores it GetObject Reader compares stored checksum on download Log file integrity validation (CloudTrail) Every hour CloudTrail writes a digest file: SHA-256 hash of each log file, signed with RSA (SHA-256 with RSA). Each digest points to the previous one, so a deleted or edited log breaks the chain. aws cloudtrail validate-logs
Check on the way in, check on the way out, and chain the logs.
⇄Integrity controls vs Encryption
Integrity controlsEncryption
Question answeredWas it changed? Can it be undone?Who can read it?
Stops a privileged deleteObject Lock / MFA DeleteNo
Detects tamperingChecksums, digests, signaturesOnly authenticated modes, not the main goal
Example serviceSigner, CloudTrail validationKMS, CloudHSM
Exam keyword“tamper”, “verify”, “prove”“confidential”, “unreadable”
!Common mistakes the exam tests
  • Trying to turn on MFA Delete in the console or as an IAM admin: root user, CLI/API only.
  • Thinking versioning alone stops ransomware: an attacker with delete-version permission can still remove versions. Add Object Lock or MFA Delete.
  • Forgetting log file validation must be enabled on the trail; it isn’t retroactive.
  • Setting the Lambda code signing policy to Warn when the requirement says block: use Enforce.
  • Confusing a checksum (detects accidental or malicious change) with encryption (hides content).
✓Benefits and use cases
  • Recover from accidental overwrite with a previous version.
  • Prove to auditors that CloudTrail logs are complete.
  • Only deploy Lambda code built by the release pipeline.
Think of it like · a notary office

How a notary proves a document is the real one.

AWS conceptFamiliar thing
Versioning≈Keeping every draft in the archive, never shredding one
MFA Delete≈Shredding a draft needs the chief notary’s personal key fob
Checksum≈A fingerprint taken when the document arrives, compared when it leaves
CloudTrail digest chain≈A ledger where each page carries the seal of the page before
AWS Signer≈The notary’s stamp; Lambda refuses documents without it
Real AWS example · validate CloudTrail logs and enforce signed Lambda code

Two common integrity checks from the CLI.

$ aws cloudtrail validate-logs --trail-arn arn:aws:cloudtrail:us-east-1:111122223333:trail/org \
    --start-time 2026-10-01T00:00:00Z
Results found for 2026-10-01T00:00:00Z to 2026-10-10T08:00:00Z:
  216/216 digest files valid
  4312/4312 log files valid

$ aws lambda create-code-signing-config \
  --allowed-publishers SigningProfileVersionArns=arn:aws:signer:...:/signing-profiles/release/abc \
  --code-signing-policies UntrustedArtifactOnDeployment=Enforce

Attach the code signing config to each function; deployments of unsigned zips then fail.

Exam-style scenario

After an incident, investigators must prove that no CloudTrail log files in the central S3 bucket were modified or deleted during the last 90 days. The trail was configured last year with log file validation enabled. What should they do?

  1. A. Compare object sizes in S3 Inventory reports.
  2. B. Run aws cloudtrail validate-logs for the period, which checks the signed digest files and the hash of each log file.
  3. C. Enable S3 Object Lock on the bucket now.
  4. D. Search the logs with Athena for DeleteObject calls.
Show the worked answer

Answer: B

Log file validation creates hourly digest files signed with RSA that contain SHA-256 hashes of each log; validate-logs proves integrity and completeness.

Why not the others

  • A: Sizes don’t prove content is unchanged.
  • C: Good for the future, proves nothing about the past.
  • D: Shows API calls only if they were logged, and an attacker may have removed the evidence.
How the exam tests this
  • “Recover overwritten S3 object”→ Versioning.
  • “Extra factor to delete versions”→ MFA Delete (root, CLI).
  • “Prove logs weren’t tampered with”→ CloudTrail log file validation.
  • “Verify uploads byte for byte”→ S3 checksums.
  • “Only trusted code in Lambda”→ AWS Signer + code signing config, Enforce.
Must remember
  • Versioning: enable → only suspend later.
  • MFA Delete: root user, CLI/API.
  • CloudTrail digest: SHA-256 hash, RSA signed, hourly.
  • Signer policy: Warn vs Enforce.
  • Checksum ≠ encryption.
05

Lifecycle and retention policies

Skill 5.2.3: keep data exactly as long as rules require, and no longer. Too short breaks compliance; too long costs money and widens the blast radius of a breach. The tools are S3 Lifecycle, Object Lock retention, EFS Lifecycle management and backup retention on services such as FSx for Lustre.

Concept profile

S3 Lifecycle configuration

often confused with S3 Object Lock retention
?What is it?

Bucket rules that act on objects automatically as they age: transition to cheaper storage classes and expire (delete) them. Rules can target a prefix, tags or object size.

⚙How does it work?
  • Transition actions, for example Standard → Standard-IA after 30 days → Glacier Flexible Retrieval after 90 days.
  • Expiration actions: current versions get a delete marker; NoncurrentVersionExpiration removes old versions.
  • AbortIncompleteMultipartUpload cleans up abandoned upload parts.
  • Rules run asynchronously; there can be a delay before an action happens.
{ }Structure
Day 0S3 StandardDay 30Standard-IADay 90Glacier FlexibleDay 365Deep ArchiveDay 2555Expire (7 yrs)Transition actions move objects to cheaper classes; expiration actions delete them (current version → delete marker).Add NoncurrentVersionExpiration and AbortIncompleteMultipartUpload, or old versions and parts pile up.Lifecycle can’t remove a version that Object Lock still protects: the lock always wins.
A typical 7-year retention rule.
⇄S3 Lifecycle vs S3 Object Lock retention
S3 LifecycleObject Lock retention
PurposeDelete or move data when allowedStop deletion until allowed
DirectionMakes data go awayMakes data stay
BypassAnyone who can edit the ruleGovernance: privileged; compliance: nobody
TogetherExpire after retention endsLifecycle can’t remove locked versions
!Common mistakes the exam tests
  • Setting only an expiration on a versioned bucket: that adds delete markers but keeps every old version forever. Add NoncurrentVersionExpiration.
  • Using Lifecycle as a retention control: anyone who can edit the rule can shorten it. Use Object Lock to enforce minimum retention.
  • Ignoring minimum storage durations (for example Standard-IA 30 days, Glacier Flexible 90, Deep Archive 180): early deletion is still charged.
  • Forgetting that FSx for Lustre scratch file systems don’t support backups; use a persistent deployment type.
✓Benefits and use cases
  • Keep logs 1 year hot, 6 years in Deep Archive, then delete.
  • Delete temporary uploads after 7 days.
  • Minimise data kept, which reduces breach impact and cost.

EFS and FSx for Lustre

EFS Lifecycle management moves files that haven’t been accessed for a set number of days to the Infrequent Access or Archive storage classes, and can move them back to Standard on first access. It is about cost, not deletion; EFS has no built-in expiry, so retention and deletion of backups go through AWS Backup.

FSx for Lustre persistent file systems take automatic daily backups with a retention period you choose (up to 90 days) and support user-initiated backups that you keep until you delete them. For longer or centrally governed retention, manage them with AWS Backup plans.

Think of it like · an office filing system

Papers move and get thrown away on a schedule.

AWS conceptFamiliar thing
Transition action≈Moving last year’s folders from the desk to the basement
Expiration action≈The shredding day written on each box
Noncurrent versions≈Old drafts in the back of the drawer that nobody shreds unless told
Object Lock≈A legal notice taped to the box: no shredding before 2033
EFS Lifecycle≈Files you haven’t opened in a month go to the cheap cabinet, and come back when you ask
Real AWS example · a versioned-bucket lifecycle rule

Move logs to cheaper storage, delete after 7 years, and clean old versions and parts.

{ "Rules": [{
    "ID": "logs-7y", "Status": "Enabled", "Filter": {"Prefix": "logs/"},
    "Transitions": [{"Days": 30, "StorageClass": "STANDARD_IA"},
                    {"Days": 365, "StorageClass": "DEEP_ARCHIVE"}],
    "Expiration": {"Days": 2555},
    "NoncurrentVersionExpiration": {"NoncurrentDays": 30},
    "AbortIncompleteMultipartUpload": {"DaysAfterInitiation": 7}
}]}

Apply it with aws s3api put-bucket-lifecycle-configuration.

Exam-style scenario

A company must keep audit logs for at least 5 years and delete them soon after to limit exposure. A previous admin shortened a lifecycle rule, and logs were deleted after 1 year. What combination prevents early deletion while still removing logs after 5 years?

  1. A. A lifecycle rule with 5-year expiration and an IAM policy denying PutLifecycleConfiguration to everyone.
  2. B. Object Lock default retention of 5 years in compliance mode, plus a lifecycle rule that expires objects and noncurrent versions after 5 years.
  3. C. S3 Versioning with MFA Delete only.
  4. D. Glacier Deep Archive storage class only.
Show the worked answer

Answer: B

Object Lock enforces the minimum (nobody can delete early); Lifecycle does the clean-up once the lock has expired.

Why not the others

  • A: Admins can change IAM policies, so nothing is enforced.
  • C: Protects against deletes but never deletes anything, so the ‘delete after 5 years’ part fails.
  • D: Storage class changes cost, not retention.
How the exam tests this
  • “Move old data to cheaper storage”→ S3 Lifecycle transition.
  • “Delete after N days”→ Lifecycle expiration (+ noncurrent versions).
  • “Minimum retention nobody can shorten”→ Object Lock, not Lifecycle.
  • “EFS files rarely read”→ EFS Lifecycle to IA / Archive.
  • “FSx for Lustre retention”→ Automatic daily backups (≤ 90 days) or AWS Backup.
Must remember
  • Lifecycle = transition + expiration.
  • Versioned bucket: add NoncurrentVersionExpiration.
  • Lifecycle can’t beat Object Lock.
  • EFS Lifecycle: by last access, moves back on access.
  • Lustre backups: persistent only.
06

AWS Backup, Vault Lock and ransomware

Skill 5.2.4 asks you to design backups that survive the worst day: an attacker with admin rights who encrypts or deletes everything. AWS Backup centralises backups for EBS, EC2, RDS, Aurora, DynamoDB, EFS, FSx, S3 and more; Vault Lock and logically air-gapped vaults make those backups untouchable.

Concept profile

AWS Backup Vault Lock

often confused with S3 Object Lock
?What is it?

A WORM setting on an AWS Backup vault. Recovery points can’t be deleted, and their lifecycle can’t be changed, before retention ends, even by the root user. Optional minimum and maximum retention make non-compliant backup jobs fail.

⚙How does it work?
  • Governance mode: users with enough IAM permissions can remove the lock.
  • Compliance mode: set --changeable-for-days (at least 3 days = 72 h grace time). During grace time you can change or remove the lock; after it, nobody (not even AWS) can.
  • --min-retention-days and --max-retention-days reject jobs outside that range; existing recovery points are unaffected.
  • Check Locked and LockDate with DescribeBackupVault.
{ }Structure
Workload account Resources EBS · RDS · DynamoDB EFS · FSx · S3 · EC2 Backup plan schedule + lifecycle select by tag copy rule Backup vault Vault Lock (compliance) KMS key + access policy min / max retention copy Recovery account Logically air-gapped vault always compliance-locked AWS owned key by default Share with AWS RAM to restore in a clean account; multi-party approval if the owner is lost
Back up locally, lock the vault, copy to a separate account.
⇄Backup Vault Lock vs S3 Object Lock
Backup Vault LockS3 Object Lock
ProtectsRecovery points in a backup vaultObject versions in a bucket
Compliance grace≥ 3 days, then immutableNone; immutable at once
Retention guardrailMin / max retention daysDefault retention on bucket
Legal holdAWS Backup has separate legal holdsYes, per version
CoversMany services (EBS, RDS, EFS, DynamoDB…)S3 only
!Common mistakes the exam tests
  • Keeping backups only in the same account: a compromised admin can delete the vault policy, the keys or the account. Copy to a separate account (or a logically air-gapped vault).
  • Testing compliance mode without noticing grace time: after LockDate it is permanent, and recovery points set to keep “Always” are kept forever.
  • Encrypting cross-account copies with an AWS managed key: copies to another account need a customer managed key.
  • Forgetting to test restores: a backup you can’t restore is not a backup (AWS Backup restore testing automates this).
  • Thinking Vault Lock protects against account closure: AWS deletes the contents after the 90-day post-closure period.
✓Benefits and use cases
  • Ransomware recovery with immutable, isolated copies.
  • Central backup policies across an organization with Organizations backup policies.
  • Prove compliance with Backup Audit Manager reports.

Logically air-gapped vaults

A logically air-gapped vault is always locked in compliance mode (minimum retention 7 days) and is encrypted with an AWS owned key by default, or a customer managed key from a separate recovery account. You share it with chosen accounts through AWS RAM so a clean account can restore directly, and with multi-party approval you can recover even if the vault-owning account is lost. Unencrypted Aurora, DocumentDB and Neptune clusters can’t be stored there.

Think of it like · a fire-proof off-site archive

How a company makes sure its records survive a fire or a thief.

AWS conceptFamiliar thing
Backup plan≈The rule that a courier collects copies every night
Governance lock≈The archive door, but the head of security has the key
Compliance lock + grace time≈A time-lock you can still adjust for 3 days, then it is welded shut
Cross-account copy≈A second archive in another city, run by a different team
Air-gapped vault + RAM≈A sealed bunker; trusted partners can collect files without opening the original archive
Restore testing≈Fire drills: actually pulling a box out to check it’s readable
Real AWS example · lock a vault in compliance mode

3-day grace time, backups kept between 7 and 35 days.

$ aws backup put-backup-vault-lock-configuration \
    --backup-vault-name prod-vault \
    --changeable-for-days 3 \
    --min-retention-days 7 --max-retention-days 35

$ aws backup describe-backup-vault --backup-vault-name prod-vault \
    --query '{Locked:Locked,LockDate:LockDate}'
{ "Locked": true, "LockDate": "2026-10-13T09:00:00Z" }

Before LockDate you can still run delete-backup-vault-lock-configuration; after it, nothing can.

Exam-style scenario

A company fears ransomware where attackers obtain administrator credentials in the production account. Backups of EBS, RDS and DynamoDB must be impossible to delete for 35 days and must be restorable even if the production account is fully compromised. What should it do?

  1. A. Take EBS and RDS snapshots with DLM and enable versioning.
  2. B. Use AWS Backup with a backup plan that copies recovery points to a logically air-gapped vault (or a compliance-mode locked vault) in a separate recovery account, with 35-day minimum retention.
  3. C. Store backups in the production account’s default vault with governance-mode Vault Lock.
  4. D. Export all data to S3 with lifecycle expiration after 35 days.
Show the worked answer

Answer: B

Compliance-mode locking stops deletion even by root, and a separate account removes the dependency on the compromised one. Air-gapped vaults add RAM sharing for fast clean-room restores.

Why not the others

  • A: An admin in the same account can delete snapshots.
  • C: Governance mode can be removed by a privileged admin, and it’s in the compromised account.
  • D: No immutability; lifecycle rules can be changed.
How the exam tests this
  • “Backups can’t be deleted, even by root”→ Vault Lock compliance mode.
  • “Allow lock to be removed by admins”→ Governance mode.
  • “Change your mind window”→ Grace time ≥ 3 days (changeable-for-days).
  • “Restore if the account is compromised”→ Cross-account copy / logically air-gapped vault + RAM.
  • “Central backup rules across accounts”→ Organizations backup policies.
Must remember
  • Vault Lock: governance (removable) vs compliance (immutable after grace).
  • Grace time: minimum 3 days / 72 h.
  • Min/max retention: jobs outside range fail.
  • Air-gapped vault: always compliance, RAM share, MPA.
  • Cross-account copies need a customer managed key.
07

Replication, DLM and DataSync

Backups protect against deletion; replication keeps a live second copy somewhere else. The exam pairs three tools with skill 5.2.4: S3 Replication (and its KMS traps), Amazon Data Lifecycle Manager for EBS snapshots and AMIs, and AWS DataSync for moving files with built-in integrity checks.

Concept profile

S3 Replication with SSE-KMS

often confused with AWS Backup cross-Region copy
?What is it?

Automatic, asynchronous copying of new object versions to another bucket in the same Region (SRR) or another Region (CRR), in the same or another account. Both buckets need versioning.

⚙How does it work?
  • An IAM replication role reads from the source and writes to the destination.
  • SSE-KMS and DSSE-KMS objects are skipped unless you set SseKmsEncryptedObjects: Enabled and a ReplicaKmsKeyID in the destination Region.
  • The role needs kms:Decrypt on the source key and kms:Encrypt on the destination key. SSE-C objects replicate with no extra setup.
  • Existing objects need S3 Batch Replication; S3 Replication Time Control (RTC) gives a 15-minute SLA.
{ }Structure
Source bucket us-east-1 · versioning on objects: SSE-KMS key A SseKmsEncryptedObjects Status: Enabled Replication role s3:GetObjectVersion- ForReplication kms:Decrypt on key A kms:Encrypt on key B Destination bucket eu-west-1 · versioning on replica: SSE-KMS key B ReplicaKmsKeyID = key B (dest Region) Forget the selection criteria and SSE-KMS objects are silently skipped. Existing objects need S3 Batch Replication. Cross-account: key B must be a customer managed key whose policy lets the source account use it.
The two KMS settings that make encrypted objects replicate.
⇄S3 Replication vs AWS Backup cross-Region copy
S3 ReplicationAWS Backup copy
What you getLive copy, near real timePoint-in-time recovery points
DeletesDelete markers optional; version deletes not replicatedOld points kept per lifecycle
Protects againstRegion outage, latencyDeletion, corruption, ransomware
ImmutabilityObject Lock on destinationVault Lock
ServicesS3 onlyMany services
!Common mistakes the exam tests
  • Leaving out the SSE-KMS selection criteria: PutBucketReplication succeeds but encrypted objects never copy.
  • Using a ReplicaKmsKeyID from the source Region: it must be in the destination Region (KMS keys are Regional).
  • Cross-account replication with an AWS managed key: needs a customer managed key the destination owner shares.
  • Expecting replication to copy objects that existed before the rule: use Batch Replication.
  • Treating replication as a backup: corruption or a delete marker can replicate too.
✓Benefits and use cases
  • Compliance copies in another Region.
  • Low-latency reads near users.
  • Copy logs into a separate security account’s bucket.

Amazon Data Lifecycle Manager (DLM)

DLM automates creating, keeping and deleting EBS snapshots and EBS-backed AMIs. Policies target volumes or instances by tag, run on a schedule, keep a count or age, and can copy snapshots to other Regions (with a destination KMS key) or share them with other accounts. It is the low-effort answer when only EBS is in scope; when the question spans several services or needs Vault Lock, pick AWS Backup. For extra protection, EBS snapshots can also be locked, and Recycle Bin retention rules let you recover snapshots and AMIs that were deleted by mistake.

AWS DataSync

DataSync moves data between on-premises storage (NFS, SMB, HDFS, object storage), other clouds and AWS (S3, EFS, FSx), and between AWS storage services. Data is encrypted in transit with TLS, and DataSync verifies integrity with checksums during the transfer and, optionally, compares source and destination at the end. It’s also the usual tool to copy data into a new encrypted EFS file system.

Think of it like · a library network

Ways a library keeps copies of its books safe.

AWS conceptFamiliar thing
S3 Replication≈Every new book is photocopied to a branch in another city the same day
SseKmsEncryptedObjects≈A note saying “yes, also copy books in locked cases”; without it they are skipped
Replication role keys≈The courier needs the key to open case A and the key to lock case B
DLM≈A librarian who photographs tagged shelves every night and throws out photos older than 30 days
DataSync≈A moving company that counts and checks every box on arrival
Real AWS example · a DLM policy for tagged volumes

Daily snapshots of volumes tagged Backup=daily, keep 14, copy to another Region encrypted.

$ aws dlm create-lifecycle-policy --description "daily-ebs" \
  --state ENABLED --execution-role-arn arn:aws:iam::111122223333:role/AWSDataLifecycleManagerDefaultRole \
  --policy-details '{"ResourceTypes":["VOLUME"],
    "TargetTags":[{"Key":"Backup","Value":"daily"}],
    "Schedules":[{"Name":"daily","CreateRule":{"Interval":24,"IntervalUnit":"HOURS"},
      "RetainRule":{"Count":14},
      "CrossRegionCopyRules":[{"TargetRegion":"us-west-2","Encrypted":true,
        "CmkArn":"arn:aws:kms:us-west-2:111122223333:key/abcd-...",
        "RetainRule":{"Interval":30,"IntervalUnit":"DAYS"}}]}]}'

The KMS key for the copy lives in the target Region.

Exam-style scenario

A company replicates an S3 bucket from us-east-1 to eu-west-1. Objects uploaded with SSE-S3 appear in the destination, but objects encrypted with a customer managed KMS key never do, and no error is shown. What is the fix?

  1. A. Enable S3 Bucket Keys on the destination bucket.
  2. B. Add SourceSelectionCriteria with SseKmsEncryptedObjects enabled, set ReplicaKmsKeyID to a KMS key in eu-west-1, and give the replication role kms:Decrypt on the source key and kms:Encrypt on the destination key.
  3. C. Make the KMS key a multi-Region key.
  4. D. Turn on S3 Replication Time Control.
Show the worked answer

Answer: B

SSE-KMS objects are excluded by default. You must opt them in, name a destination-Region key, and give the role both KMS permissions.

Why not the others

  • A: Bucket Keys reduce KMS cost; they don’t enable replication.
  • C: S3 treats multi-Region keys as single-Region keys and still needs the replication settings.
  • D: RTC speeds up replication of objects that are already eligible.
How the exam tests this
  • “SSE-KMS objects don’t replicate”→ SseKmsEncryptedObjects + ReplicaKmsKeyID + role KMS permissions.
  • “Replicate objects that already exist”→ S3 Batch Replication.
  • “Automate EBS snapshots by tag”→ Data Lifecycle Manager.
  • “Many services, locked backups”→ AWS Backup, not DLM.
  • “Transfer on-prem data with integrity checks”→ DataSync.
Must remember
  • Replication needs versioning on both buckets.
  • SSE-KMS: opt in + destination-Region key.
  • Role: kms:Decrypt source, kms:Encrypt destination.
  • DLM = EBS snapshots + AMIs, by tag.
  • DataSync: TLS + checksum verification.
08

Cheatsheet extras: S3 policy conflicts, ACLs and encryption in other services

The cheat sheet calls S3 policy conflicts an “exam essential topic”: what happens when an IAM policy, a bucket policy and an ACL disagree? It also lists encryption at rest for services this lecture didn’t cover (Lambda, Kinesis, SQS, Storage Gateway, Snow Family), and replication rules that have changed since it was written.

Concept profile

How S3 decides when policies conflict

often confused with “the most specific policy wins”
?What is it?

S3 joins together every policy that applies to a request: the caller’s IAM policies, the bucket policy, ACLs (if enabled), Block Public Access, SCPs/RCPs and VPC endpoint policies. Then the normal rule applies: default deny → explicit deny wins → otherwise an allow is needed.

⚙How does it work?
  • Same account: an allow in either the IAM policy or the bucket policy is enough, if nothing denies.
  • Cross-account: you need an allow in both the caller’s IAM policy and the bucket policy (or ACL).
  • An explicit Deny anywhere beats every Allow, including an Allow in another policy type.
  • Object Ownership = Bucket owner enforced (the default for new buckets since April 2023) turns ACLs off: only policies matter, and the bucket owner owns every object.
  • Block Public Access overrides public bucket policies and ACLs.
{ }Structure
Start: DENY(default)Any policyapplies?no → DENYExplicit Denyanywhere?yes → DENYAn Allow?yes → ALLOWno → DENYPolicies joined together: IAM identity policy · bucket policy · object/bucket ACL (only if ACLs enabled)· Block Public Access · SCP / RCP · VPC endpoint policy · KMS key policy (for SSE-KMS objects)Cross-account: both the caller’s account and the bucket’s account must allow.
Every policy is checked together; there is no “closest policy wins”.
⇄Real rule vs “the most specific policy wins”
SituationResultWhy
IAM allows GetObject; bucket policy denies itDeniedExplicit deny anywhere wins
Same account: no IAM allow; bucket policy allows the userAllowedOne allow is enough in the same account
Other account: bucket policy allows, caller’s IAM doesn’tDeniedCross-account needs both sides
IAM denies the user S3 reads, but the object is publicDenied when signed with the user’s keys; allowed as an anonymous request through the public URLAnonymous requests aren’t evaluated against the user’s IAM policy
ACL grants read, Object Ownership = bucket owner enforcedACL ignoredACLs are disabled
!Common mistakes the exam tests
  • Thinking an IAM Deny protects a public object: anyone can still read it anonymously. Fix the public access, not the IAM policy.
  • Giving cross-account access only in the bucket policy and forgetting the caller’s IAM policy.
  • Trying to use ACLs on a bucket with bucket owner enforced: requests that set ACLs fail.
  • Forgetting the KMS key policy: for SSE-KMS objects the caller also needs kms:Decrypt.
✓Benefits and use cases
  • Bucket policies are up to 20 KB and keep rules next to the data (for example “deny everyone except the HR role” on a performance-review bucket).
  • One deny statement in a bucket policy is easier than editing every user’s IAM policy.
  • Disabling ACLs removes a whole class of hidden permissions.

Encryption at rest in services not covered above

ServiceAt restExam hint
Lambda environment variablesAlways encrypted with an AWS managed key; choose a customer managed key, and use encryption helpers to encrypt values client-side so they are hidden in the console“Hide a secret in env vars from console users” → helpers + customer managed key (better: Secrets Manager)
Kinesis Data StreamsServer-side encryption with a KMS key you pick; producers and consumers don’t handle keysUse an interface VPC endpoint to keep traffic private
SQS / SNSSSE with SQS-managed keys (SSE-SQS) or a KMS keyThe sending service (for example S3 or EventBridge) needs kms:GenerateDataKey and kms:Decrypt on a customer managed key
Storage GatewayData in S3 encrypted with SSE-S3 by default, or SSE-KMS; TLS in transitiSCSI volumes can use CHAP authentication
Snow FamilyData encrypted on the device with keys from KMS; keys are never stored on the device; tamper-resistant with a TPMDevice unlocked with a manifest + unlock code
EC2 instance storeNVMe instance store volumes are encrypted with hardware keys; data is lost when the instance stopsNot a place for data you must keep

Older material says S3 replication does not copy SSE-C objects and never copies objects that existed before the rule. Today SSE-C objects replicate, and existing objects can be copied with S3 Batch Replication. Still true: SSE-KMS objects need you to opt in (SseKmsEncryptedObjects) and give the role the source and destination keys; deletes of a specific version are never replicated.

Think of it like · entry rules for an office building

Several guards check you, and any one of them can say no.

AWS conceptFamiliar thing
Default deny≈Nobody gets in without a pass
Explicit deny≈Your name is on the banned list at any desk: you are out
IAM policy≈The pass your employer gave you
Bucket policy≈The guest list kept by the building owner
Cross-account≈Visitors from another company need their own pass and to be on the guest list
Public object≈A poster in the street window: anyone can read it without entering
Real AWS example · a deny that beats every allow

A bucket policy that blocks everyone except one role, whatever their IAM policies say.

{
  "Sid": "OnlyHRCanRead",
  "Effect": "Deny",
  "Principal": "*",
  "Action": "s3:GetObject",
  "Resource": "arn:aws:s3:::perf-reviews/*",
  "Condition": { "ArnNotEquals": {
    "aws:PrincipalArn": "arn:aws:iam::111122223333:role/HRReviewers" } }
}

An administrator with s3:* in IAM is still denied. Use aws:PrincipalArn (not NotPrincipal) so role sessions match.

Exam-style scenario

A user’s IAM policy has an explicit Deny for s3:GetObject on all buckets. The user can still download a file from a company bucket by pasting its S3 URL into a browser, without signing in. Why?

  1. A. Bucket policies always override IAM policies.
  2. B. The object is publicly readable, so the browser request is anonymous and the user’s IAM policy isn’t evaluated.
  3. C. S3 caches the old permissions for 24 hours.
  4. D. The object ACL is more specific than the IAM policy.
Show the worked answer

Answer: B

An unsigned request comes from the anonymous principal. The user’s IAM Deny only applies to requests signed with the user’s credentials. Turn on Block Public Access.

Why not the others

  • A: An explicit deny in any policy wins for the same principal.
  • C: No such cache.
  • D: “More specific” doesn’t matter in AWS policy evaluation.
How the exam tests this
  • “IAM allows, bucket policy denies”→ Denied.
  • “Grant another account access”→ Bucket policy and their IAM policy.
  • “Stop ACLs from granting access”→ Object Ownership bucket owner enforced.
  • “Encrypt Lambda env vars so console users can’t read them”→ Encryption helpers + customer managed key.
  • “Replicate objects that already exist”→ S3 Batch Replication.
Must remember
  • Default deny → explicit deny wins → need an allow.
  • Cross-account S3 = two allows.
  • New buckets: ACLs disabled (bucket owner enforced).
  • Bucket policy max 20 KB.
  • Replication: SSE-KMS opt-in; existing objects → Batch Replication.
09

Lecture summary map

Day 3 on one screen.

1. Mind map

① S3 encryptionSSE-S3 defaultSSE-KMS + Bucket KeyDSSE · SSE-C · client② EBS · RDS · EFSEBS default per RegionRDS: creation onlySnapshot → copy → restore③ Object LockGovernance vs complianceLegal hold, no expiryVault Lock: 24 h test④ IntegrityVersioning, MFA DeleteChecksums, log digestsSigner: Enforce⑤ LifecycleTransition + expirationNoncurrent versionsLock beats lifecycle⑥ Backup + replicationVault Lock, 3-day graceAir-gapped vault, RAMCRR KMS opt-in, DLMData Protection 3data at rest + backup
Tap a branch to jump back to that part of the lecture. Try redrawing this map from memory on paper.

2. Match the requirement to the control

“Encrypt S3, audit every key use”→SSE-KMS (+ Bucket Key)“Two layers of encryption required”→DSSE-KMS“AWS must never see plaintext”→Client-side encryption“Encrypt an existing RDS / EBS”→Snapshot → encrypted copy → restore“WORM, nobody can delete, not even root”→Object Lock compliance mode“Backups must survive a hacked admin”→Backup Vault Lock + air-gapped vault“Automate EBS snapshots by tag”→Data Lifecycle Manager“Move on-prem files, verify integrity”→AWS DataSync
The left column is the exam wording; the right column is the answer.

3. “If the question says… pick…”

Audit every decrypt of S3 dataSSE-KMS with a customer managed key
KMS throttling or cost from S3S3 Bucket Key
Two independent encryption layersDSSE-KMS
AWS must never see plaintextClient-side encryption
Encrypt existing EBS or RDSSnapshot, encrypted copy, restore
Share an encrypted snapshotCustomer managed key + key policy
Nobody, not even root, can deleteObject Lock compliance mode
Freeze files for a lawsuit, no end dateLegal hold
Prove logs weren’t changedCloudTrail log file validation
Delete after N years, but never earlyObject Lock + Lifecycle
Backups safe from a hacked adminVault Lock compliance + separate account
SSE-KMS objects don’t replicateSseKmsEncryptedObjects + ReplicaKmsKeyID
Day 3 in one sentence

Encryption decides who can read, locks decide who can delete, and isolated copies decide whether you can recover, so a good answer usually needs all three.

10

Must-remember cheat sheet

1. S3 default since Jan 2023: SSE-S3.
2. SSE-KMS read = s3:GetObject + kms:Decrypt.
3. Bucket Key: up to 99% fewer KMS calls; context = bucket ARN.
4. SSE-C: off for new buckets (Apr 2026), HTTPS only.
5. New default ≠ re-encrypt; use Batch Operations.
6. EBS by default: per Region, new only.
7. RDS encryption: creation only; replica matches source.
8. AWS managed key snapshots: can’t share.
9. Object Lock needs versioning; compliance = even root.
10. Governance bypass: permission + header.
11. Legal hold: no date.
12. Glacier Vault Lock: 24 h test window.
13. MFA Delete: root, CLI/API only.
14. Backup Vault Lock grace: ≥ 3 days.
15. Air-gapped vault: always compliance, RAM share.
16. CRR + SSE-KMS: opt in, destination-Region key.
17. S3 conflicts: explicit deny wins; cross-account needs two allows; public objects bypass IAM denies.
18. New buckets: ACLs disabled; existing objects replicate with Batch Replication.
11

Core quiz

Check the basics first. Pick an answer, then press Check.

12

Hard quiz

Harder than most real exam questions on purpose, with one “choose two” and one matching question. Aim for 9 out of 12 before Day 4.

13

Practice test questions (from your mock exams)

These 10 questions match today’s topics. 8 come from your own mock exams (the “practice tests” folder); the wording was tidied, and where a mock answer was out of date or wrong, the explanation says so, with the mock and question number at the end. The last 2 are new exam-style questions (marked “New question”) written in October 2026 from the SCS-C03 exam guide and current AWS documentation, to cover recent changes.

14

Hands-on lab (30 minutes, low cost)

  1. Create a bucket with default SSE-KMS (a customer managed key) and a Bucket Key. Upload a file, then check head-object for ServerSideEncryption and BucketKeyEnabled.
  2. Create a second bucket with Object Lock, set default retention to 1 day in governance mode (never compliance in a personal account). Try to delete a version, then delete it with --bypass-governance-retention.
  3. Put a legal hold on another version and see that bypass doesn’t help until you remove the hold.
  4. Run aws ec2 get-ebs-encryption-by-default in two Regions and turn it on where it is off.
  5. In AWS Backup, create a vault, back up a small DynamoDB table on demand, and add a governance-mode Vault Lock with min retention 1 day. Remove the lock afterwards.
  6. If your trail has log file validation, run aws cloudtrail validate-logs for the last day.
  7. Clean up: delete test objects after retention ends, the backup, the vault and the buckets.