How to defend against Account Takeovers
Learn about account takeover threats, protection strategies, and detection methods to secure your digital accounts and prevent unauthorised access.
Amazon Simple Storage Service (S3) is a massively popular, scalable, and durable object storage service. It's used to store everything from static website assets to sensitive customer data and application backups. However, its flexibility also makes it easy to misconfigure, and a misconfigured S3 bucket is one of the most common causes of major data breaches.
Securing your S3 buckets is a fundamental and critical task in any AWS environment. This guide covers the essential best practices.
This is the most important S3 security feature introduced by AWS. Block Public Access (BPA) is a set of four settings that provides a simple, account-wide way to prevent your S3 buckets and objects from ever being publicly accessible, both now and in the future.
It is highly recommended to enable all four BPA settings at the AWS account level. This acts as a safety net that overrides any contradictory bucket-level policies or object ACLs.
The four settings are:
You should only disable these settings for a specific, legitimate use case (like hosting a public website) on a per-bucket basis, and only after careful consideration.
Follow the principle of least privilege when granting access to your S3 buckets.
s3:GetObject
, s3:PutObject
).Example Bucket Policy: Deny unencrypted uploads This policy denies any attempt to upload an object unless it is encrypted with AWS-managed keys (SSE-S3).
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyIncorrectEncryptionHeader",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::your-secure-bucket/*",
"Condition": {
"StringNotEquals": {
"s3:x-amz-server-side-encryption": "AES256"
}
}
}
]
}
For most use cases, enabling default encryption with SSE-S3 on your buckets is a simple and effective best practice.
You need visibility into who is accessing your data and when.
CreateBucket
, DeleteBucket
, PutBucketPolicy
). Enable CloudTrail data events for your sensitive buckets to also log object-level activity (e.g., GetObject
, PutObject
).For complex scenarios with many applications accessing a shared bucket, S3 Access Points provide a way to create unique access policies for each application. Instead of managing one large, complex bucket policy, you can create an access point for each application with a policy tailored specifically to its needs. This simplifies management and reduces the risk of misconfiguration.
By implementing these five key practices, you can significantly improve the security posture of your S-3 buckets and protect your critical data from unauthorized access.
Learn about account takeover threats, protection strategies, and detection methods to secure your digital accounts and prevent unauthorised access.
An overview of Account Takeover Attacks
A step-by-step breakdown of how credential stuffing attacks are carried out, from obtaining stolen credentials to bypassing defenses and taking over accounts.
An introduction to Anycast DNS
A quick description about what an Apex Domain is.
Learn the essential best practices for managing and rotating API keys to enhance security, prevent unauthorized access, and minimize the impact of key compromise.
© PEAKHOUR.IO PTY LTD 2025 ABN 76 619 930 826 All rights reserved.