More Info:

AWS S3 buckets should enforce encryption of data over the network (as it travels to and from Amazon S3) using Secure Sockets Layer (SSL).

Risk Level

Critical

Address

Security

Compliance Standards

HIPAA, CISAWS, CBP, GDPR, NIST, SOC2, PCIDSS, ISO27001, AWSWAF, HITRUST, NISTCSF

Triage and Remediation

Remediation

  1. Open the AWS S3 Console.
  2. Navigate to the specific S3 bucket for which you want to enforce secure transport.
  3. Click on the “Permissions” tab.
  4. Scroll down to the “Bucket policy” section.
  5. Edit the bucket policy to enforce the use of HTTPS.

Here is an example policy snippet to enforce HTTPS:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "*",
            "Resource": [
                "arn:aws:s3:::YOUR_BUCKET_NAME/*",
                "arn:aws:s3:::YOUR_BUCKET_NAME"
            ],
            "Condition": {
                "Bool": {
                    "aws:SecureTransport": "false"
                }
            }
        }
    ]
}

Alternate option

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "*",
            "Resource": [
                "arn:aws:s3:::YOUR_BUCKET_NAME/*",
                "arn:aws:s3:::YOUR_BUCKET_NAME"
            ],
            "Condition": {
                "Bool": {
                    "aws:SecureTransport": "true"
                }
            }
        }
    ]
}

Replace YOUR_BUCKET_NAME with the name of your S3 bucket.

Additional Reading: