All posts

Privacy by Default with AWS S3 Read-Only Roles

The bucket was wide open, and anyone could walk in. That’s how most S3 misconfigurations start—fast, unnoticed, and dangerous. Privacy by default is the only defense that works every time. AWS S3 read-only roles are the simplest way to enforce it. When you set S3 permissions, your first instinct may be to give developers and services broad access. That’s a mistake. A read-only IAM role restricts actions to GetObject, ListBucket, and related safe calls. No deletes, no overwrites, no accidental e

Free White Paper

Privacy by Default + Read-Only Root Filesystem: The Complete Guide

Architecture patterns, implementation strategies, and security best practices. Delivered to your inbox.

Free. No spam. Unsubscribe anytime.

The bucket was wide open, and anyone could walk in. That’s how most S3 misconfigurations start—fast, unnoticed, and dangerous. Privacy by default is the only defense that works every time. AWS S3 read-only roles are the simplest way to enforce it.

When you set S3 permissions, your first instinct may be to give developers and services broad access. That’s a mistake. A read-only IAM role restricts actions to GetObject, ListBucket, and related safe calls. No deletes, no overwrites, no accidental exposure. Tighter access control is not just security hygiene—it’s risk elimination.

AWS lets you define these roles through IAM policies. You attach the role to users, groups, or services. The policy explicitly grants read-only actions on specific buckets or prefixes. Combine this with S3 Block Public Access and bucket policies that deny any public ACLs. Now privacy by default is baked into the architecture.

Many teams skip this because policy creation feels tedious. It’s not. Start with the managed policy AmazonS3ReadOnlyAccess, then strip permissions you don’t need. Scope by Resource so the role can only read from the exact bucket paths required. Test using the AWS CLI:

Continue reading? Get the full guide.

Privacy by Default + Read-Only Root Filesystem: Architecture Patterns & Best Practices

Free. No spam. Unsubscribe anytime.
aws s3 ls s3://your-bucket-name --profile readOnlyRole

If the list works, but aws s3 rm fails, you’ve done it right.

Privacy by default with AWS S3 read-only roles does more than lock down data—it prevents mistakes before they happen. Minimal rights mean even if credentials are leaked, the blast radius is small. Combine with logging and monitoring to see every GetObject call in CloudTrail.

Build and apply these rules early in your stack. Make every S3 bucket private first, then grant read-only roles only where required. This approach hardens your storage layer against both human error and malicious intent.

Ready to see privacy by default in action without writing a single policy file? Try it live on hoop.dev—spin up secure AWS S3 read-only roles in minutes.

Open source

Save the open-source gateway for agent data access

Hoop is MIT-licensed infrastructure for controlling how AI agents reach production data. Star hoophq/hoop so you can inspect it, deploy it, or share it when your team starts governing agent access.

Star and save the repo →More posts