Quay lại TIL
2023-05-10Devopsbeginner4 min

AWS S3 Bucket Policies


# AWS S3 Bucket Policies

Today I learned about the importance of properly configuring AWS S3 bucket policies to ensure secure yet accessible cloud storage.

## The Security Challenge

S3 buckets are often misconfigured, leading to data breaches when sensitive information is accidentally exposed to the public. At the same time, overly restrictive policies can prevent legitimate access.

## Key Policy Elements

I discovered that a well-structured S3 bucket policy should include:

- Principal: Who can access the resources (users, roles, accounts)
- Action: What operations are allowed (GetObject, PutObject, etc.)
- Resource: Which buckets and objects the policy applies to
- Condition: Optional constraints (IP ranges, time of day, etc.)

## Practical Implementation

For our project, I implemented a policy that:
1. Allowed our application to read and write objects
2. Permitted our CDN to read objects for public content
3. Restricted administrative actions to specific IAM roles
4. Enforced HTTPS for all requests

This approach significantly improved our security posture while maintaining necessary functionality.

Code Example

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadForGetBucketObjects",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::example-bucket/*",
      "Condition": {
        "IpAddress": {
          "aws:SourceIp": "203.0.113.0/24"
        }
      }
    }
  ]
}