Amazon S3 Security Overview

User-Based Security

Resource-Based Security

Access Control Lists (ACLs)

Access Permissions

Encryption

S3 Bucket Policy Structure

{
  "Version": "2012-10-17",
  "Statement": [
    {
        "Sid": "AllowSpecificGroupRead",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::123456789012:role/DataProcessingRole"
        },
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::my-secure-bucket/*" 
    },
    {
        "Sid": "DenyPublicWrites",
        "Effect": "Deny",
        "Principal": "*",
        "Action": [
            "s3:PutObject",
            "s3:PutObjectAcl"
        ],
        "Resource": "arn:aws:s3:::my-secure-bucket/*",
        "Condition": {
            "Bool": {
                "aws:SecureTransport": "false"
            }
        }
    }
  ]
}

Public Access Bucket Policy Example