Skip to main content
CloudArq
frameworksoc 2
scopeaws
typeI / II
compliance guide · aws · soc 2

SOC 2 on AWS: a practical checklist

A control-by-control guide for AWS-hosted SaaS preparing for SOC 2 Type I or Type II. Every item cites the Trust Services Criterion it satisfies and the AWS command an auditor will ask you to run. No fluff, no upsell — the same checklist we use on ourselves.

Updated 2026-04-19 · ~10 minute read

77
checks mapped to controls
9
CC criteria covered
6
control groups below
0
agents installed
audience

Who this is for

1-50 person SaaS teams running on AWS, with an enterprise prospect asking for a SOC 2 report in the next 3-6 months. If you have a dedicated compliance team running a vendor program, skim the AWS-specific rows and ignore the commentary. If you're a founder + CTO pair scrambling to pass, read top-to-bottom.

definition

What SOC 2 actually is (one paragraph)

SOC 2 is an AICPA audit framework. A CPA firm signs a report saying your security controls operate as described, across five Trust Services Criteria: Security (CC1-CC9 — the only mandatory one), Availability (A1), Confidentiality (C1), Processing Integrity (PI1), and Privacy (P). Type I is a point-in-time snapshot. Type II covers a window — typically 3-12 months — and is what enterprise buyers expect.

Access control (CC6)

Who can touch what. Auditors always start here.

6 controls
  • CC6.1Every IAM user has MFA. Root MFA is enforced.
  • CC6.1No root access keys. ≥14-char IAM password policy with ≥90-day rotation.
  • CC6.1IAM access keys older than 90 days are rotated.
  • CC6.2Human access flows through SSO (IAM Identity Center / Okta / Entra).
  • CC6.3Least privilege — no `*` actions without scoped resources.
  • CC6.6Prod-write actions gated behind a separate role with MFA + time-boxed access.

Network security (CC6 / CC7)

What's exposed to the internet.

4 controls
  • CC6.6No security group allows 0.0.0.0/0 on SSH (22) or RDP (3389).
  • CC6.6No security group allows 0.0.0.0/0 on all ports.
  • CC6.6VPC flow logs enabled on every VPC, retained ≥ 90 days.
  • CC6.7S3 buckets are not public unless designed to be — block-public-access at both account and bucket level.

Encryption (CC6.1 / CC6.7)

Data at rest and in transit.

5 controls
  • CC6.1All EBS volumes encrypted; account-level default encryption on.
  • CC6.1All RDS instances encrypted at rest.
  • CC6.1All S3 buckets have default SSE-KMS or SSE-S3.
  • CC6.1KMS key rotation enabled on every customer-managed key.
  • CC6.7TLS 1.2+ required on every public endpoint (ALB/NLB listener policies).

Logging & monitoring (CC7)

You can't respond to what you can't see.

5 controls
  • CC7.2CloudTrail enabled in every region, append-only S3 with object-lock.
  • CC7.2CloudTrail log-file validation enabled.
  • CC7.2Config enabled in every region, recording all resource types.
  • CC7.3CloudWatch alarms on: root login, IAM policy changes, MFA disabling, unauthorised API calls.
  • CC7.3GuardDuty enabled in every region, findings routed to on-call.

Change management (CC8)

How code + infra changes reach prod.

3 controls
  • CC8.1Prod deploys require pull-request review; branch protection enforces ≥ 1 approval + CI pass.
  • CC8.1Infrastructure-as-code for production. No untracked console changes.
  • CC8.1Release artifacts pinned by commit SHA; rollback tested in a game day.

Availability (A1)

Only required if you contract for uptime.

3 controls
  • A1.2RDS automated backups ≥ 7-day retention; cross-region copy for primary DB.
  • A1.2S3 versioning enabled on every mutable-state bucket.
  • A1.2Documented RTO and RPO per system; DR drill run annually.
product · output

How CloudArq groups the gaps by criterion

compliance-gaps · framework · soc 2illustrative example
Critical2High2Medium1
CC6.6
Security group 0.0.0.0/0 on SSH
sg-0example · eu-north-1
fix →
CC6.7
Public S3 bucket (read)
arn:aws:s3:::example-assets
fix →
CC6.1
RDS instance not encrypted at rest
db-example-orders
fix →
CC7.2
CloudTrail disabled in a region
eu-west-1
fix →
CC7.3
No alarm on root-account login
cloudwatch · eu-north-1
fix →

Each failing control ships with a copy-paste CLI / Terraform fix and its evidence pointer for the auditor.

faq

Frequently asked

01How long does a SOC 2 audit take for a SaaS on AWS?
SOC 2 Type I takes 2-6 weeks once evidence is in place. Type II requires a 3-12 month observation window — the auditor watches your controls operate over that period before issuing the report.
02Do we need to switch clouds to pass SOC 2?
No. SOC 2 is cloud-agnostic. AWS, Azure, and GCP all publish a SOC 2 Type II report for their own infrastructure; you inherit their physical-security and hypervisor controls and document the controls you operate on top.
03Which SOC 2 trust-services criteria apply to an AWS-hosted SaaS?
Security (CC1-CC9) is required for every SOC 2. Availability (A1) is required if you commit to uptime in a customer contract. Confidentiality (C1), Processing Integrity (PI1), and Privacy (P) are elective — pick them if you handle regulated data or advertise specific claims.
04Do we need a security vendor to pass SOC 2?
Not strictly, but most small teams use one of: Vanta / Drata / Secureframe for the program + evidence, plus a CPA firm (A-LIGN, Johanson, Prescient, BDO) as the auditor. CloudArq covers the AWS-infrastructure evidence side; the vendor covers policy templates, employee training, and the audit-management workflow.
05What are the top-3 AWS misconfigurations that block SOC 2?
CloudTrail disabled in a region, public S3 buckets holding customer data, and security groups allowing 0.0.0.0/0 on SSH or RDP. Every one of these is a CC6.6 or CC7.2 failure and auditors will find them on day one.
06How much does SOC 2 cost?
Budget $15K-40K for a Type I report from a mid-tier CPA firm for a 1-50-person company. Type II runs $25K-60K. Ongoing (renewal + continuous compliance) adds $5K-20K/year. Security vendor subscriptions add $10K-40K/year on top.

Where CloudArq helps

CloudArq automates the AWS-side evidence collection for every CC6 and CC7 control on this page. 77 checks are mapped to their SOC 2 control IDs; the compliance-gaps page groups failing controls by Trust Services Criterion, and each finding ships with a CLI command or Terraform block you can apply today.

If you're focused on CIS alignment, here's the CIS breakdown.