S3 bucket does not require SSL/HTTPS for all requests
- Severity
- Medium
- Service
- S3
- Check ID
- S3_SSL_NOT_REQUIRED
What this check finds
Without a bucket policy that denies non-HTTPS requests, data transmitted to and from S3 can travel in cleartext, exposing it to network interception. CIS v5.0 §2.1.1 requires all S3 requests to use SSL.
Passing looks like: S3 requires SSL/HTTPS for all requests.
How to fix it
Add a bucket policy that denies any request where aws:SecureTransport is false.
AWS CLI
aws s3api put-bucket-policy --bucket BUCKET_NAME --policy '{"Statement":[{"Effect":"Deny","Principal":"*","Action":"s3:*","Resource":["arn:aws:s3:::BUCKET_NAME","arn:aws:s3:::BUCKET_NAME/*"],"Condition":{"Bool":{"aws:SecureTransport":"false"}}}]}'
Names in capitals are placeholders for your own resource. Review a command before you run it.
AWS console
S3→ Bucket → Permissions → Bucket policy → Edit.
Compliance controls it is evidence for
A failing result counts against these controls in KloudLytics; a passing one is evidence towards them. How compliance mapping works
| Framework | Controls |
|---|---|
| CIS AWS Foundations Benchmark v5.0.0 |
|
| PCI-DSS v4.0.1 |
|
| HIPAA Security Rule |
|
| SOC 2 — Trust Services Criteria |
|
| NIST SP 800-53 Rev5 (Moderate) |
|
| NIST Cybersecurity Framework 2.0 |
|
| ISO/IEC 27001:2022 Annex A |
|
Checked on every scan
KloudLytics runs this check each time it scans a connected AWS account, through a read-only role, and lists every affected resource with its region. On Pro and Business a fix is written for the specific resource rather than the general case above. The exact access it needs
More S3 checks
- HighInternet accessible S3 bucket via policy
- HighPublic grant to S3 bucket via ACL
- MediumS3 bucket has incomplete multipart uploads consuming storage
- LowS3 Block Public Access does not block all access types
- LowS3 Block Public Access is not enabled for the account
- LowS3 bucket does not have server-access logging enabled
- LowS3 bucket with versioning enabled does not have MFA delete configured
- LowVPC with private subnets has no S3 endpoint