Check provider logo

S3 bucket is not publicly accessible to Everyone or Authenticated Users

s3_bucket_public_access

Severitycritical
Services3
by Prowler

Amazon S3 buckets are evaluated for public access via ACLs and bucket policies. The check identifies account or bucket PublicAccessBlock protections (IgnorePublicAcls, RestrictPublicBuckets) and flags buckets granting group access to AllUsers or AuthenticatedUsers, or with a public bucket policy.

Risk

Publicly accessible buckets jeopardize confidentiality through unauthenticated reads, integrity through write or ACL changes, and availability via object deletion or overwrite. Attackers can mass-exfiltrate data, host malware, or pivot after discovering secrets stored in objects.

Run this check with Prowler CLI

prowler aws --checks s3_bucket_public_access

Fix finding with Prowler CLI

prowler aws --checks s3_bucket_public_access --fixer

Recommendation

Enforce defense in depth: enable S3 Block Public Access at org/account and bucket levels (BlockPublicAcls, IgnorePublicAcls, BlockPublicPolicy, RestrictPublicBuckets). Apply least privilege with explicit principals; avoid ACLs via Object Ownership. Use private access patterns (e.g., CloudFront OAC or presigned URLs) and monitor with analyzers.

Remediation

CLI

aws s3api put-public-access-block --bucket <bucket_name> --public-access-block-configuration IgnorePublicAcls=true,RestrictPublicBuckets=true

Native IaC
Terraform
Other
  1. In the AWS Console, go to S3 and open the bucket <example_resource_name>
  2. Select the Permissions tab
  3. Under Block public access (bucket settings), click Edit
  4. Check only:
    • Ignore public ACLs (true)
    • Restrict public buckets (true)
  5. Click Save changes and confirm

Source Code

Resource Type

AwsS3Bucket

References