Security Architecture

Your Cloud Probably Has a Public S3 Bucket. You Just Don't Know About It Yet.

May 28, 20266 min read

In 2019, a company called Capital One had approximately 100 million customer records exposed by a misconfigured AWS firewall rule and an overpermissioned IAM role. The breach cost them over 80 million dollars in penalties and settlements. The vulnerability was not sophisticated. It was a misconfiguration that a cloud security scanner would have flagged on day one.

This is not a story about sophisticated nation-state attackers. This is a story about a checkbox in the wrong position and a role with permissions nobody audited. It is also not a story that has stopped repeating since 2019.

How This Actually Happens

Nobody wakes up and decides to leave 100 million records exposed to the internet. It happens in increments that each feel reasonable at the time.

A developer needs a storage bucket quickly for a new project. They create one. The default setting is private, but they need external access for testing, so they flip it to public. They will lock it down after the demo. The demo goes well and becomes a product. The bucket stays public. Nobody notices because nothing has gone wrong yet, and the bucket is named something internal and obscure like "fintech-proj-v2-test-final" which sounds like it would only mean something to someone already inside the company.

It means everything to an attacker running automated scans across cloud storage namespaces, which is not a sophisticated operation and is in fact something you can set up with an afternoon and a modest AWS bill.

The IAM Problem Is Worse

Storage buckets get the press coverage because exposed data is tangible and legible to journalists. The IAM problem is quieter and, in many environments, more dangerous.

IAM roles accumulate. A developer gets admin access to spin up infrastructure for a project. The project ends. The access does not. A service account gets broad permissions because it was easier than scoping them properly and the deadline was real. Six months later nobody remembers what that account does, but removing it feels risky because what if something breaks.

Over time, the principle of least privilege becomes a theoretical concept that your documentation references and your environment ignores. The blast radius of any single compromised credential quietly expands because the credentials are attached to roles that can do far more than they were ever supposed to.

The Part Nobody Wants to Hear

Cloud security debt accrues at the speed of your deployment pipeline. Every time a developer takes a shortcut that works, the next developer takes the same shortcut because it worked last time. Within a year you have an environment full of reasonable individual decisions that add up to a posture your CISO would not enjoy seeing documented.

This is not primarily a technical problem. It is a culture and process problem. The developers are not malicious. They are moving fast in an environment where security friction is a deployment blocker and a public bucket is a one-click solution. If your security program is making secure choices harder than insecure ones, you are losing that race before it starts.

What Actually Helps

Cloud Security Posture Management tools are the right starting point. CSPM platforms scan your environment continuously and flag misconfigurations against established benchmarks like CIS Controls and the AWS Foundational Security Standard. The finding list from a first scan is usually long enough to be humbling, and that is exactly the point. You need to see it to fix it.

Infrastructure as code, enforced. When every resource is provisioned through reviewed, version-controlled templates, a public bucket requires someone to explicitly write "public = true" in code that another human being will read before it ships. That friction is the right amount of friction.

Regular access reviews that actually revoke things. Not reviews that produce a spreadsheet that gets filed and forgotten. Reviews with a named owner per account, an expiration date on exceptions, and someone whose job includes following up.

And threat modeling before you build, not after something goes wrong. Ask what the worst case looks like before the architecture is committed, when changing it is a design decision rather than a remediation project.

The cloud makes infrastructure faster. It does not make security optional. It just makes the consequences of skipping it available at scale.