DEV Community

Mohammed N Zubair
Mohammed N Zubair

Posted on

Scenario based practices for securing an AWS S3 bucket.

Scenario:

You have an AWS S3 bucket named my-example-bucket where you store sensitive documents. You want to ensure the bucket is secure according to AWS S3 best practices.

Solution Steps:

1. Enable Versioning:
Versioning helps protect against accidental deletion or modification of objects.

Action: Enable versioning on the my-example-bucket.
How: Using AWS Management Console:
Navigate to the S3 console.
Select my-example-bucket.
Click on the Properties tab.
Under Advanced settings, select Versioning.
Click Enable versioning.

2. Configure Bucket Policies:

Implement a bucket policy to restrict access based on the principle of least privilege.

Action: Create a bucket policy that allows only specific IAM users or roles to access the bucket.
Example Policy (replace my-example-bucket and arn:aws:iam::123456789012:user/authorized-user with your actual bucket name and IAM user ARN):

Image description

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/authorized-user"
},
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::my-example-bucket/*"
]
}
]
}

How: Using AWS Management Console:
Navigate to the S3 console.
Select my-example-bucket.
Click on the Permissions tab.
Click Bucket Policy.
Paste the JSON policy above, modifying it with your specific IAM user ARN and bucket name.

3. Enable Server-Side Encryption (SSE):

Encrypt data at rest to protect sensitive information stored in the bucket.

Action: Enable SSE for objects uploaded to my-example-bucket.
How: Using AWS Management Console:
Navigate to the S3 console.
Select my-example-bucket.
Click on the Properties tab.
Under Default encryption, click Edit.
Select AES-256 (SSE-S3) or AWS-KMS (SSE-KMS).
Click Save.

4. Enable Logging and Monitoring:
Enable access logging to track requests made to my-example-bucket.

Action: Enable logging to record access requests for audit and compliance purposes.
How: Using AWS Management Console:
Navigate to the S3 console.
Select my-example-bucket.
Click on the Properties tab.
Under Server access logging, click Edit.
Select Enable logging.
Specify a target bucket and prefix for storing log files.
Click Save.

5. Regular Audits and Reviews:
Regularly review access permissions, policies, and configurations for my-example-bucket to ensure security best practices are maintained.

Action: Schedule periodic audits to review bucket policies, IAM roles, and access logs.
How: Manually or using AWS Config and AWS CloudTrail for automated monitoring and auditing.

Summary:
By following these steps, you've implemented several AWS S3 security best practices for my-example-bucket:

  • Ensured data protection with versioning and encryption.

  • Controlled access with a bucket policy based on least privilege.

  • Enhanced visibility and accountability with access logging.

These practices help secure your sensitive documents stored in AWS S3 and mitigate risks associated with unauthorized access or accidental data loss.

Top comments (0)