The audit logs told a story no one had read in months. They were sitting there, locked inside an AWS S3 bucket, invisible to the people who needed them most.
When your operational truth is trapped in storage, delays happen. Teams hunt for access keys, debate IAM policies, and juggle compliance checklists while issues stack up. Security officers want read-only roles. Developers want speed. Everyone wants safety.
The simplest way to grant controlled access to S3 logs is to use a logs access proxy. It sits between the data and the user, authenticates requests, and enforces read-only permissions. No write access. No overwrites. No surprises.
With AWS, least privilege is not optional. Read-only IAM roles for S3 keep the blast radius small. Pair them with a proxy and you have a fine-grained access control layer that doesn’t require devs or analysts to know AWS arcana. You can route log requests through the proxy, apply granular allow-lists on prefixes, and stop exposing buckets directly.
A good logs access proxy reduces policy sprawl. You avoid scattering multiple AWS accounts and hard-to-track keys across teams. All requests pass through one entry point. Every request is logged, monitored, and limited by policy. IAM assumes the role. The role has a single permission set: s3:GetObject for specific buckets or prefixes. That’s the whole permissions surface.