AWS Cloud Security Checklist 2026

AWS cloud security checklist 2026 - IAM GuardDuty CloudTrail S3 VPC protection
🕒 7 min read

AWS shared responsibility model puts the security of the cloud on Amazon and the security in the cloud on you. Most teams understand this in theory. In practice, misconfigured S3 buckets, overly permissive IAM roles, and disabled CloudTrail are still behind a significant portion of cloud breaches. This checklist covers the 12 controls that close the highest-risk gaps in a typical AWS environment.

IAM: Lock Down Access Before Anything Else

IAM is where most AWS breaches begin. A leaked access key with AdministratorAccess is game over. Start here:

  • Delete root account access keys. The root account should only be used to set up the AWS Organization and create the first admin user. Lock it down with MFA and never touch it again.
  • Enable MFA on all IAM users. Enforce it with an SCP: deny all actions except MFA enrollment for users without MFA active.
  • Use IAM roles, not long-term keys. EC2 instances, Lambda functions, and ECS tasks should use instance profiles and execution roles — never a hardcoded access key.
  • Apply least-privilege policies. Use IAM Access Analyzer to identify overly permissive policies. Start with the AWS-managed ReadOnlyAccess policy and tighten from there.
  • Rotate access keys every 90 days. Use AWS Secrets Manager or SSM Parameter Store for applications that still require keys.

Red flag: If your AWS environment has active root account access keys, fix that before you read anything else in this article. It is the single highest-risk configuration in AWS.

S3: Audit Every Bucket for Public Access

S3 buckets defaulted to private since 2023, but older accounts and third-party deployments can still have public buckets exposing sensitive data. Run this check monthly:

  • Enable S3 Block Public Access at the account level (covers all current and future buckets)
  • Use AWS Config rule: s3-bucket-public-read-prohibited for continuous monitoring
  • Enable S3 Server Access Logging on all buckets containing sensitive data
  • Enable S3 Object Versioning on critical data buckets — protects against ransomware deletion
  • Enforce SSE-S3 or SSE-KMS encryption at rest via bucket policy

CloudTrail: Log Everything, Centralize Immediately

CloudTrail is your audit log for every API call in AWS. Without it, you cannot investigate an incident. Enable it in every region, including regions you do not use — attackers create resources in unused regions specifically to avoid detection.

  • Enable CloudTrail in all regions with multi-region trail
  • Enable CloudTrail log file integrity validation
  • Send logs to a dedicated, locked-down S3 bucket in a separate logging account
  • Send CloudTrail events to CloudWatch Logs for real-time alerting
  • Set up CloudWatch Alarms for: root login, console login without MFA, security group changes, and IAM policy modifications

Quick win: Enable AWS Security Hub with the CIS AWS Foundations Benchmark standard. It automatically checks 43 controls and gives you a scored dashboard of your current posture in under 5 minutes.

VPC: Network Controls That Matter

Default VPCs exist in every region and every account. Most have overly permissive default security groups. Clean this up:

  • Delete the default VPC in regions you do not use
  • Remove all inbound 0.0.0.0/0 rules from security groups except explicit public-facing services
  • Enable VPC Flow Logs on all VPCs and ship to CloudWatch or S3
  • Use private subnets for all compute resources; access via bastion host, AWS Systems Manager Session Manager, or VPN
  • Never expose RDS, ElastiCache, or internal APIs directly to the internet

Common mistake: Security Group rules are stateful, but Network ACLs are not. If you rely on NACLs for blocking, verify both inbound and outbound rules. Forgetting outbound rules on NACLs is a classic misconfiguration.

Encryption: At Rest and In Transit

  • Enable EBS volume encryption by default at the account level — this covers all future volumes automatically
  • Enable RDS encryption at rest when creating instances (cannot be enabled post-creation)
  • Enforce HTTPS-only access on all S3 buckets via bucket policy condition aws:SecureTransport
  • Use AWS KMS with Customer Managed Keys for sensitive data; enables key rotation control and audit trail
  • Enable Certificate Manager for all public-facing TLS certificates — automatic renewal, no manual certificate tracking

GuardDuty: Threat Detection You Cannot Afford to Skip

GuardDuty analyzes CloudTrail, VPC Flow Logs, and DNS logs using ML to detect: credential compromise, cryptomining, C2 communication, port scanning, and unusual API calls. At roughly $3 per account per month for small environments, it is the highest-value AWS security service. Enable it in every account and every region, and route findings to Security Hub and your SIEM.

AWS Config: Continuous Compliance Monitoring

AWS Config records every configuration change to AWS resources and evaluates them against rules you define. Use the managed rule set for CIS Benchmarks, PCI-DSS, or HIPAA. When a resource drifts from compliant state — a security group opens port 22 to 0.0.0.0/0 — Config flags it immediately and can auto-remediate via Lambda or SSM Automation.

Organizations and SCPs: Guardrails at Scale

If you run multiple AWS accounts (you should — separate workloads into separate accounts), AWS Organizations with Service Control Policies gives you preventative controls that override even Administrator access. Use SCPs to: prevent disabling CloudTrail, block access from non-approved regions, require MFA for sensitive actions, and deny root account API calls.

Takeaway: Security Hub, GuardDuty, CloudTrail, and S3 Block Public Access are the four non-negotiable baseline controls. Enable those first in every account. Then work through IAM hygiene, VPC cleanup, and encryption enforcement systematically. See our Security Tools page for CSPM platforms that automate this checklist across multi-account environments.

n

AWS Security Services Comparison

Service What It Does Monthly Cost (small env) Priority
GuardDuty ML-based threat detection ~$3-15 Critical
Security Hub Aggregates security findings, CIS benchmark checks ~$1-5 Critical
CloudTrail API audit logging across all services ~$2 (S3 storage) Critical
AWS Config Configuration compliance monitoring ~$0.003/rule evaluation High
Inspector Vulnerability scanning for EC2, containers, Lambda ~$1-10 High
Macie Sensitive data discovery in S3 ~$1-5 Medium
WAF Web application firewall for CloudFront/ALB ~$5 + $0.60/million requests Medium
n

Frequently Asked Questions

n

n

What is the AWS shared responsibility model?

n

n

The AWS shared responsibility model divides security obligations between AWS and the customer. AWS is responsible for the security of the cloud infrastructure (hardware, software, networking, and facilities). The customer is responsible for security in the cloud: operating system patches, application security, identity and access management, data encryption, and network configuration within their AWS environment.

n

n

n

What are the most critical AWS security controls?

n

n

The four non-negotiable AWS security controls are: (1) Enable GuardDuty in all regions for threat detection. (2) Enable CloudTrail across all regions with log integrity validation. (3) Enable S3 Block Public Access at the account level. (4) Delete root account access keys and enforce MFA on all IAM users. These four controls close the highest-risk gaps in any AWS environment.

n

n

n

How do I prevent S3 bucket data exposure?

n

n

Enable S3 Block Public Access at the AWS account level to prevent current and future public bucket configurations. Use bucket policies to enforce HTTPS-only access. Enable S3 access logging. Use AWS Config rule s3-bucket-public-read-prohibited for continuous compliance monitoring. Enable S3 Object Versioning on sensitive data buckets to protect against ransomware deletion.

n

n

n

What is AWS GuardDuty and why is it important?

n

n

AWS GuardDuty is a managed threat detection service that analyzes CloudTrail logs, VPC Flow Logs, and DNS logs using machine learning to detect compromised accounts, cryptomining, C2 communications, port scanning, and unusual API call patterns. It costs approximately $3 per account per month for small environments and provides threat detection capability that would otherwise require significant engineering effort to build manually.

n

n

n

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *