S3 Bucket Access Review Process

Introduction

Amazon S3 buckets are foundational storage resources in our AWS cloud infrastructure that require stringent access control to maintain security. This document establishes 5X's formal process for periodic review of S3 bucket access permissions, ensuring we follow the principle of least privilege and implement appropriate controls for any buckets requiring public access. This process has been developed in alignment with our SOC 2 Type II compliance requirements and forms a critical component of our overall security posture.

Purpose and Scope

The purpose of this review process is to systematically evaluate all S3 buckets in our AWS environment, verify appropriate access controls, identify potential security risks, and remediate any issues. This process applies to all S3 buckets across all AWS accounts utilized by 5X, regardless of their purpose or the data they contain.

Review Frequency and Responsibility

S3 bucket access reviews will be conducted:
Monthly for buckets containing Customer Data or Company Data
Quarterly for all other buckets
Ad-hoc whenever significant infrastructure changes occur
The Security team, in collaboration with the Engineering Operations team, will be responsible for coordinating and documenting these reviews, with Data Owners participating to validate business requirements.

Review Process

1. Inventory Collection

Before each review cycle, we collect a comprehensive inventory of all S3 buckets across our AWS environment:
The Security team uses AWS Config rules and CloudFormation stack queries to generate a complete list of S3 buckets
For each bucket, we capture:
Bucket name and AWS account ID
Creation date
Data classification category
Owner/responsible team
Current access configuration
Tagging information
Versioning status
Encryption settings

2. Access Configuration Analysis

For each identified bucket, we analyze the current access configuration:
Bucket policy review:
Identify any policy statements granting public access
Review IAM principals with access and their permission scope
Validate conditional statements restricting access
Check for overly permissive wildcards or Principal:"*" statements
ACL review:
Verify if the bucket uses legacy ACLs
Identify any ACL grants to the AllUsers or AuthenticatedUsers groups
Document any custom ACL configurations
Public access block settings:
Check account-level block public access settings
Review bucket-level block public access settings
Identify any overrides of account-level settings
Cross-account access:
Identify any permissions granted to external AWS accounts
Verify legitimacy and necessity of cross-account access
Confirm appropriate restrictions on cross-account permissions

3. Risk Evaluation

Based on the access configuration analysis, we evaluate the risk level of each bucket:
High risk indicators:
Public write access enabled
Public read access for sensitive data categories
Overly permissive policies (e.g., "Action": "*")
Lack of encryption for sensitive data
Missing access logging
Medium risk indicators:
Public read access to non-sensitive data
Broad cross-account permissions
Minimal conditional restrictions on access
Legacy ACL usage
Low risk indicators:
Properly restricted access following least privilege
Appropriate use of IAM roles and user permissions
Strong conditional access policies
Proper encryption and logging enabled

4. Business Justification Validation

For any bucket with public access or cross-account sharing enabled:
The Security team contacts the bucket owner to:
Confirm the business purpose for the current access configuration
Validate the continued need for such access
Document the justification in the review record
Business justifications are assessed against these criteria:
Is public/cross-account access essential for the intended function?
Are there more secure alternatives that could achieve the same goal?
Is the scope of access appropriately limited to what's necessary?
Are compensating controls in place to mitigate associated risks?

5. Remediation Planning and Implementation

For any identified issues or unwarranted access:
The Security team creates remediation tasks categorized by severity:
Critical: Immediate remediation required (same day)
High: Remediation within 7 days
Medium: Remediation within 30 days
Low: Remediation or acceptance within 90 days
Remediation options typically include:
Enabling bucket-level Block Public Access settings
Revising bucket policies to remove unnecessary permissions
Implementing appropriate IAM roles for access
Enabling encryption and access logging
Migrating public content to content delivery solutions
Implementation and verification:
Changes are implemented by the bucket owner or Infrastructure team
The Security team verifies the changes resolve the identified issues
Any exceptions are documented and approved by the CISO

6. Documentation and Reporting

All review activities are meticulously documented:
Each review cycle generates:
A complete inventory report of all S3 buckets
Access configuration details for each bucket
Risk assessment ratings for each bucket
Business justifications for any public or cross-account access
Remediation plans for identified issues
Implementation status of previous remediation activities
Review records are maintained in our Vanta system, with:
Timestamped records of review completion
Sign-off by the Security team and bucket owners
Full audit trail of changes made
Documentation of exception approvals
Executive summary reports are provided to leadership, highlighting:
Overall security posture of S3 storage
High-risk findings and remediation status
Trends from previous reviews
Recommendations for security improvements

Technical Implementation

To support and partially automate the review process, we implement multiple technical controls:

1. Continuous Monitoring

AWS Config Rules:
s3-bucket-public-read-prohibited
s3-bucket-public-write-prohibited
s3-bucket-ssl-requests-only
s3-bucket-server-side-encryption-enabled
CloudWatch Events:
Alerts for any changes to bucket policies or ACLs
Notifications for new bucket creation
Monitoring of Block Public Access setting changes
AWS Security Hub:
Integration of S3-related security findings
Automated security checks against AWS best practices
Consolidated view of security posture

2. Automated Inventory Tools

We utilize AWS tools to maintain an accurate inventory:
AWS Resource Explorer:
Cross-account discovery of S3 resources
Tag-based resource organization
Custom Lambda functions:
Weekly bucket inventory generation
Configuration analysis and comparison to previous state
Detection of drift from secure baselines
AWS Systems Manager:
Centralized visualization of bucket inventory
Automated remediation actions for common issues

3. Access Visualization and Analysis

To simplify complex access policies, we employ:
IAM Access Analyzer:
Identification of buckets accessible from outside their account
Detailed findings on access paths
Validation of policy changes before implementation
Custom policy visualization tools:
Graphical representation of bucket access
Identification of overlapping or conflicting permissions
Simplified reporting for non-technical stakeholders

Best Practices

During each review, we apply these S3 security best practices:
Default to block public access:
Enable account-level S3 Block Public Access settings
Only disable at bucket level with specific justification
Use IAM roles and policies instead of bucket policies when possible:
Grant permissions to specific IAM roles rather than broad principals
Use resource-based conditions to limit scope
Implement least privilege access:
Grant only the specific permissions needed (e.g., GetObject instead of * actions)
Use path-based restrictions to limit access to specific prefixes
Encrypt all data:
Enable default encryption on all buckets
Use KMS keys for sensitive data categories
Enable access logging:
Configure access logging for all buckets containing sensitive data
Review logs regularly for unauthorized access attempts
Use presigned URLs for temporary access:
Instead of public access, use time-limited presigned URLs
Implement short expiration times appropriate to the use case
Implement versioning:
Enable versioning to protect against accidental deletion
Establish lifecycle policies for version management

Roles and Responsibilities

The following roles participate in the S3 bucket access review process:
Security Team:
Coordinates the overall review process
Performs technical analysis of bucket configurations
Identifies security issues and vulnerabilities
Validates remediation effectiveness
Engineering Operations Team:
Provides infrastructure expertise
Implements technical controls for monitoring
Assists with complex remediation actions
Develops automation to support the review process
Bucket Owners/Development Teams:
Provide business justification for access configurations
Implement required changes to bucket policies
Validate functionality after security changes
Integrate security best practices into development workflows
Data Owners:
Validate data classification of bucket contents
Approve access requirements based on business needs
Ensure compliance with data governance policies
CISO/Security Leadership:
Approves exceptions to security standards
Reviews summary findings from each review cycle
Ensures alignment with overall security strategy

Conclusion

This S3 bucket access review process demonstrates 5X's commitment to maintaining the highest standards of security for our cloud infrastructure. By systematically reviewing access configurations, validating business requirements, and remediating issues, we protect both our company and customer data from unauthorized access while ensuring our systems remain functional and efficient.
The process balances security requirements with operational needs, applying the principle of least privilege while acknowledging legitimate business cases for controlled public access. Through consistent application of this process, 5X maintains compliance with our SOC 2 Type II requirements and enforces AWS best practices across our environment.
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.