AWS S3 Bucket Hardening Cheat Sheet

AWS S3 Bucket Hardening Cheat Sheet

A practical checklist for locking down S3 buckets — access, encryption, logging, and the CIS controls each item maps to. Baseline as of September 2026.

S3 misconfiguration remains one of the most common sources of cloud exposure — not because the controls are exotic, but because defaults drift and new buckets get spun up faster than audits catch up. This is a working checklist, not a compliance document: pull from it, don't treat it as complete for your environment.

What changed recently

April 2026: AWS began disabling SSE-C (server-side encryption with customer-provided keys) by default for all new general-purpose buckets and for existing buckets in accounts with no prior SSE-C usage. If your account has never used SSE-C, this needs no action. If you do rely on it, new buckets will reject SSE-C requests with a 403 until you explicitly re-enable it via PutBucketEncryption. AWS's own guidance is to leave it disabled unless you have a specific reason — SSE-S3 or SSE-KMS covers most use cases with far less operational friction, since SSE-C requires the caller to supply the key on every single request.

Access control

Encryption

Versioning & recovery

Logging & monitoring

Detection

A note on the control numbers

The CIS mappings above are for v5.0.0, the version AWS Security Hub currently recommends. If your org's compliance tooling still references an older version (v1.2.0, v1.4.0, or v3.0.0), the same underlying checks exist but under different section numbers — for example, "Block Public Access" is 2.1.4 in v5.0.0/v3.0.0 but 2.1.5 in v1.4.0. Worth confirming which version a given audit report is actually citing before assuming a control number lines up.

Automating this instead of auditing it by hand

Most of the access-control items above are exactly the kind of thing worth codifying instead of checking manually every quarter. This issue's OSS Spotlight covers Cloud Custodian, an open-source policy engine whose own example policy is, fittingly, a five-line YAML file that finds S3 buckets with cross-account access and removes it.


Sources: AWS — Security best practices for Amazon S3 · AWS — Default SSE-C setting for new buckets · AWS Security Hub — CIS AWS Foundations Benchmark control mapping

Marselis A. Reed

Marselis A. Reed

B.S. in Computer Science, with 10 years of production experience — including 5 years in healthcare information security.

Get the Next Issue

Cloud hardening, vendor watch, and OSS tooling — every week.