PCI DSS v3.2.1
Deprecated
Best for: Any merchant, service provider, payment processor, acquirer, or issuer that stores, processes, or transmits cardholder data from major card brands (Visa, Mastercard, Amex, Discover, JCB). PCI DSS v3.2.1 applied regardless of transaction volume, though validation requirements varied by merchant level (Level 1: over 6 million transactions/year required a QSA audit; Levels 2-4 could self-assess).
| Mandatory? | Mandatory for any entity processing card data |
|---|---|
| Who validates? | QSA (Level 1 merchants/SPs); SAQ self-assessment (Levels 2–4) |
| Renewal | Annual |
| Scope | Cardholder data environment (CDE) and connected systems |
| Governing body | PCI Security Standards Council (PCI SSC), founded by Visa, Mastercard, American Express, Discover, and JCB International., PCI DSS v3.2.1 (superseded by v4.0). Official source |
Get started
Point the module source at the PCI DSS v3.2.1 endpoint and pin a version range you reviewed:
module "..." {
source = "pcidssv321.compliance.tf/terraform-aws-modules/<module>/aws"
version = "<version>"
}pcidssv321.compliance.tf lists every PCI DSS v3.2.1 module with its versions, inputs and outputs.
What compliance.tf covers and what you handle
| Area | Compliance.tf automates | You handle |
|---|---|---|
| Encryption in Transit | Checks CloudFront distribution TLS configuration, SSL protocol versions, origin encryption settings, and ACM certificate expiration. Covers Requirement 4.1 enforcement for AWS CDN infrastructure. | Documenting all CHD transmission flows, verifying TLS configuration on non-AWS endpoints, and maintaining a protocol inventory across the CDE. |
| Audit Logging and Monitoring | Verifies CloudTrail is enabled across all regions with read/write events, S3 data event logging, CloudWatch integration, log file validation, 365-day log group retention, and Config recorder delivery. Maps to Requirements 10.1-10.3 and 10.7. | Setting up log alerting for Requirement 10.6 daily reviews, defining incident response procedures for log anomalies, and demonstrating that logs are reviewed by personnel or automated tooling. |
| Encryption at Rest | Checks that CloudTrail logs are encrypted with customer-managed KMS CMKs rather than default S3 encryption. Maps to Requirement 3.4's mandate to render stored data unreadable. | Documenting key management procedures per Requirements 3.5-3.6, implementing key rotation, restricting key custodian access, and encrypting all other data stores (RDS, DynamoDB, EBS) that may contain cardholder data. |
| Network Security | Checks that Auto Scaling launch configurations do not assign public IPs and that API Gateway stages are associated with WAF web ACLs. Maps to Requirements 1.2 and 1.3 for restricting connections to the CDE. | Maintaining network diagrams (Requirement 1.1.2), documenting all allowed services and ports (Requirement 1.1.6), performing firewall rule reviews every six months (Requirement 1.1.7), and configuring security groups and NACLs beyond what these controls check. |
| Secure Development Practices | Checks CodeBuild projects: no privileged mode, no sensitive AWS values in plaintext environment variables, and OAuth for source repository access. | Implementing a full secure SDLC per Requirement 6.3, conducting code reviews (Requirement 6.3.2), deploying patches within one month (Requirement 6.2), and training developers on secure coding (Requirement 6.5). |
Controls by category
69 of 105 mapped controls are Enforced by compliance.tf modules at terraform plan. The other 36 are Mapped only: PCI DSS v3.2.1 lists them, no compliance.tf module checks them.
Requirement 10: Track and Monitor All Access to Network Resources and Cardholder Data
This is the largest control area in most PCI DSS assessments. The scope is broad: Requirements 10.2-10.3 specify which events must be captured, Requirement 10.7 sets retention at one year with three months immediately available, and Requirement 10.5.5 requires file integrity monitoring on the logs themselves, which CloudTrail's log file validation directly addresses. Failed Config recorder deliveries are a reliable audit flag because they mark a window where configuration changes went unrecorded.
Requirement 3: Protect Stored Cardholder Data
A common gap here is encrypting primary data stores while leaving audit logs unprotected. Requirement 3.4 applies to any mechanism that renders stored cardholder data unreadable, and assessors extend that scrutiny to CloudTrail logs that may reference CHD. Expect questions about KMS key rotation schedules and who holds key custodian access under Requirements 3.5-3.6.
Requirement 4: Encrypt Transmission of Cardholder Data Across Open Networks
The check is straightforward: TLS 1.2 or higher on every data path touching the CDE, with SSLv3 and early TLS explicitly disabled. Expired ACM certificates get flagged not just as a hygiene issue but because a lapsed cert can force fallback to unencrypted connections or prompt staff to implement insecure workarounds under operational pressure.
| Control | Status |
|---|---|
| CloudFront distributions should require encryption in transit | Enforced |
Requirement 6: Develop and Maintain Secure Systems and Applications
Plaintext AWS credentials in CodeBuild environment variables are a direct Requirement 6.3.2 violation and one of the first things an assessor checks in the build pipeline. Privileged mode in build containers draws similar scrutiny because it grants host-level access that can compromise pipeline integrity. Assessors also verify that source repository access uses OAuth rather than embedded credentials.
| Control | Status |
|---|---|
| CodeBuild projects should not have privileged mode enabled | Mapped |
Additional controls (97)
AWS Backup (1)
| Control | Status |
|---|---|
| Backup plan rules should retain recovery points for at least 35 days | Mapped |
AWS Database Migration Service (1)
| Control | Status |
|---|---|
| DMS replication instances should not be publicly accessible | Enforced |
AWS IAM (9)
AWS Lambda (1)
| Control | Status |
|---|---|
| Lambda functions should be in a VPC | Enforced |
AWS Secrets Manager (1)
| Control | Status |
|---|---|
| Secrets Manager secrets should be encrypted using CMK | Enforced |
AWS Step Functions (1)
| Control | Status |
|---|---|
| Step Functions state machines should have logging enabled | Enforced |
Amazon API Gateway (1)
| Control | Status |
|---|---|
| API Gateway stages should have cache encryption at rest enabled | Mapped |
Amazon CloudWatch (2)
| Control | Status |
|---|---|
| CloudWatch alarms should have an action configured | Enforced |
| CloudWatch alarms should have action enabled | Enforced |
Amazon CloudWatch Logs (1)
| Control | Status |
|---|---|
| Log groups should have encryption at rest enabled | Enforced |
Amazon DynamoDB (3)
Amazon DynamoDB Accelerator (1)
| Control | Status |
|---|---|
| DynamoDB Accelerator (DAX) clusters should be encrypted at rest | Mapped |
Amazon EBS (1)
| Control | Status |
|---|---|
| Attached EBS volumes should have encryption enabled | Enforced |
Amazon EC2 (3)
| Control | Status |
|---|---|
| EC2 instances should have EBS optimization enabled | Enforced |
| EC2 instances should be in a VPC | Mapped |
| EC2 instances should not have a public IP address | Enforced |
Amazon EFS (3)
Amazon EKS (3)
Amazon ElastiCache (1)
Amazon Kinesis (1)
| Control | Status |
|---|---|
| Kinesis streams should have server side encryption enabled | Mapped |
Amazon OpenSearch Service (7)
Amazon RDS (12)
Amazon Redshift (8)
Amazon S3 (16)
Amazon SNS (1)
| Control | Status |
|---|---|
| SNS topics should be encrypted at rest | Enforced |
Amazon SageMaker (3)
Amazon VPC (4)
Elastic Load Balancing (7)
Related frameworks
| Framework | Control overlap | Note |
|---|---|---|
| PCI DSS v4.0 | High 91% | |
| NIST Cybersecurity Framework v1.1 | High 88% | |
| NIST SP 800-171 Rev 2 | High 77% |
Frequently asked questions
PCI DSS v3.2.1 was retired March 31, 2024. Can I still be assessed against it?
No. After March 31, 2024, all PCI DSS assessments must use v4.0 or later. A v3.2.1 Report on Compliance (ROC) or Self-Assessment Questionnaire (SAQ) completed before that date remains valid until its expiration (typically one year from the assessment date), but new assessments and renewals must use PCI DSS v4.0.1. The compliance.tf benchmark for v3.2.1 remains available for gap analysis and historical comparison; use the v4.0 benchmark for current compliance work.
What changes between v3.2.1 and v4.0 affect my AWS controls?
Several changes are worth noting. Requirement 8.4.2 now mandates MFA for all access into the CDE, not just remote access. Requirement 6.4.2 introduces a web application firewall requirement for all public-facing web applications, removing the manual code review alternative. Requirement 12.3.1 requires a targeted risk analysis for each PCI DSS requirement where the organization uses flexibility. New Requirement 5.4 adds anti-phishing controls. Most of the controls mapped to v3.2.1 carry forward to v4.0 with minor renumbering, but additional controls will be needed for the new requirements.
These controls only cover AWS. Does that satisfy my full PCI DSS assessment?
No. These controls automate checks for a subset of PCI DSS requirements as they apply to AWS infrastructure. A full PCI DSS assessment covers physical security (Requirement 9), security policies and procedures (Requirement 12), personnel security awareness training (Requirement 12.6), and vendor management (Requirement 12.8), none of which can be verified through Terraform or cloud API checks. Use these controls to maintain continuous visibility into your AWS CDE posture between annual assessments, and pair them with manual evidence collection for non-technical requirements.
How do I scope my AWS environment for PCI DSS?
Start by identifying every AWS account, VPC, subnet, and service that stores, processes, or transmits cardholder data. Then identify all connected systems, meaning any resource that can communicate with CDE components, including shared services like Active Directory, DNS, logging pipelines, and CI/CD tooling. Network segmentation using separate VPCs or accounts with strict security group and NACL rules can reduce scope. AWS accounts with no network path to cardholder data that provide no security services to the CDE can be excluded. Document your scoping decisions; a QSA will validate them.
PCI DSS v3.2.1 has over 250 sub-requirements. What does this mapping leave out?
The mapped controls cover requirements that can be automatically verified through AWS configuration checks, concentrated in Requirements 1, 2, 3, 4, 6, and 10. Requirements with no automated AWS equivalent include Requirement 5 (anti-virus, which depends on OS-level agents), Requirement 7 (role-based access models that require business context), Requirement 8 (password policies that may live in identity providers outside AWS), Requirement 9 (physical security), Requirement 11 (penetration testing and IDS/IPS), and Requirement 12 (policies and procedures). Treat the automated benchmark as one input to your compliance program, not the complete picture.