Blog | G5 Cyber Security

Protect S3 Versioned Data with AWS Sub-Accounts

TL;DR

Use separate AWS sub-accounts for critical data storage and implement cross-account IAM roles to control access. This prevents accidental deletion of versioned S3 objects even if the main account is compromised or a user makes an error.

Solution Guide: Protecting S3 Versioned Data with Sub-Accounts

  1. Create Dedicated Sub-Accounts
  • Enable Versioning in S3
  • aws s3api put-bucket-versioning --bucket your-bucket-name --versioning-configuration Status=Enabled
  • Configure Cross-Account IAM Roles
  • { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::your-bucket-name/*", "arn:aws:s3:::your-bucket-name" ] } ]}
  • Trust Relationship for the IAM Role
  • { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::your-sub-account-id:root" }, "Action": "sts:AssumeRole", "Condition": {} } ]}
  • Accessing Data from the Main Account
  • aws sts assume-role --role-arn arn:aws:iam::your-main-account-id:role/YourCrossAccountRole --role-session-name CrossAccountSession
  • Multi-Factor Authentication (MFA)
  • Regular Auditing and Monitoring
  • Implement Bucket Policies (Optional)
  • Exit mobile version