Skip to main content

PCI-DSS Controls Gap Analysis & Coverage Report

Document Status: Living Document Last Updated: 2025-12-28 Version: 1.2 Owner: Security & Compliance Team Review Cycle: Quarterly


Document Purpose

This living document provides a comprehensive analysis of CloudForge CI's PCI-DSS (Payment Card Industry Data Security Standard) implementation, identifying:

  • ✅ Controls that are fully automated via infrastructure
  • ⚠️ Controls that are partially automated
  • ❌ Controls that require manual implementation
  • Infrastructure verification and evidence locations
  • Gap remediation roadmap

Audience: QSAs (Qualified Security Assessors), security teams, compliance officers, and engineering leadership

Framework Version: PCI-DSS v4.0.1


Table of Contents

  1. Executive Summary
  2. PCI-DSS Framework Overview
  3. Implementation Architecture
  4. Detailed Control Mapping
  5. Infrastructure Verification
  6. Gap Analysis
  7. Coverage Metrics
  8. Remediation Roadmap
  9. Testing Status
  10. Cardholder Data Environment (CDE) Scope
  11. Maintenance & Updates

Executive Summary

Overall Coverage

CloudForge CI implements PCI-DSS v4.0 controls at the infrastructure level with comprehensive technical safeguards:

MetricValueStatus
Total PCI-DSS Requirements12 principal requirements, 300+ sub-requirements-
Automated Infrastructure Controls~35-40 controls (~15-20%)✅ Strong
Partially Automated~10-15 controls (~5%)⚠️ Needs Enhancement
Manual Controls Required~250+ controls (~75-80%)❌ Documentation Needed
Infrastructure Coverage~60-70% of automatable technical controls✅ Excellent
Production TestedInfrastructure controls only⚠️ Auth not tested

Key Strengths

  • Strong cryptography: AES-256 encryption at rest, TLS 1.2+ in transit (Req 3 & 4)
  • Network segmentation: VPC, private subnets, security groups (Req 1)
  • Comprehensive audit logging: CloudTrail, Flow Logs, ALB logs with 1+ year retention (Req 10)
  • Threat detection: GuardDuty, AWS Config, Security Hub integration (Req 11)
  • Multi-layer enforcement: Validation rules, Guard policies, AWS Config, Security Profiles
  • Infrastructure as Code: Version-controlled, immutable deployments (Req 6)

Critical Gaps

  • Application-Level Controls: Req 3 (PAN masking), Req 6 (secure development) - application-specific
  • Organizational Policies: Req 12 (security policy), Req 9 (physical security)
  • Operational Procedures: Req 5 (anti-malware management), Req 7 (access procedures)
  • Testing & Validation: Req 11 (penetration testing, ASV scans) - requires third-party
  • ⚠️ Authentication: Cognito/OIDC implemented but not production-tested
  • WAF: REQUIRED and enforced in PRODUCTION (Req 6.6 automated enforcement)

PCI-DSS Framework Overview

Framework Structure

PCI-DSS v4.0.1 (latest version, June 2024) consists of 12 principal requirements organized into 6 control objectives:

Build and Maintain a Secure Network and Systems

  1. Requirement 1: Install and Maintain Network Security Controls
  2. Requirement 2: Apply Secure Configurations to All System Components

Protect Account Data

  1. Requirement 3: Protect Stored Account Data
  2. Requirement 4: Protect Cardholder Data with Strong Cryptography During Transmission

Maintain a Vulnerability Management Program

  1. Requirement 5: Protect All Systems and Networks from Malicious Software
  2. Requirement 6: Develop and Maintain Secure Systems and Software

Implement Strong Access Control Measures

  1. Requirement 7: Restrict Access to System Components and Cardholder Data by Business Need to Know
  2. Requirement 8: Identify Users and Authenticate Access to System Components

Regularly Monitor and Test Networks

  1. Requirement 9: Restrict Physical Access to Cardholder Data
  2. Requirement 10: Log and Monitor All Access to System Components and Cardholder Data
  3. Requirement 11: Test Security of Systems and Networks Regularly

Maintain an Information Security Policy

  1. Requirement 12: Support Information Security with Organizational Policies and Programs

Key Changes in PCI-DSS v4.0

NOTE: The March 31, 2025 deadline has passed. All 51 formerly "best practice" v4.0 requirements are now mandatory and must be fully implemented.

  • March 31, 2025: 51 formerly "best practice" requirements become mandatory
  • Customized Approach: New option for demonstrating controls (vs. Defined Approach)
  • Multi-Factor Authentication (MFA): Expanded to all access to CDE (Req 8.4.2)
  • Targeted Risk Analysis: New requirements for risk-based security controls
  • Phishing-Resistant MFA: Recommended for high-risk scenarios (Req 8.5.1)

Important: This analysis and infrastructure implementation covers v4.0.1 requirements (including v4.0-specific controls like 12-character minimum passwords per Req 8.3.6).


Implementation Architecture

CloudForge CI implements PCI-DSS controls through 4 enforcement layers:

Layer 1: Validation Rules (Pre-Synthesis)

File: cloudforge-api/src/main/java/com/cloudforgeci/api/core/rules/PciDssRules.java

  • Java-based validation executed during CDK synthesis
  • Validates security profile configuration against PCI-DSS requirements
  • Blocks deployment if mandatory controls are missing (ENFORCE mode)
  • Provides warnings for recommended controls (ADVISORY mode)

Requirements Validated:

  • Req 1: Network segmentation, firewall configuration
  • Req 2: Vendor defaults, secure configurations
  • Req 3 & 4: Encryption at rest/transit
  • Req 6.6: Web Application Firewall
  • Req 7 & 8: Access control, authentication
  • Req 10: Audit logging, log retention (1+ year)
  • Req 11: Security monitoring, intrusion detection

Layer 2: CloudFormation Guard Policies (Pre-Deployment)

File: cloudforge-api/src/main/resources/cfn-guard/frameworks/pci-dss-v4.0.1.guard

  • Policy-as-Code validation of CloudFormation templates
  • Enforces security controls before infrastructure creation
  • 15 validation rules covering encryption, access control, logging, backups

Key Rules:

  • pci_s3_encryption: S3 bucket encryption (Req 3.4)
  • pci_rds_encryption: RDS storage encryption (Req 3.4)
  • pci_alb_https: HTTPS/TLS on port 443 (Req 4.1)
  • pci_cloudtrail_enabled: CloudTrail logging (Req 10.2)
  • pci_cloudwatch_logs_retention: 365+ day retention (Req 10.7)
  • pci_s3_versioning: S3 versioning for backups (Req 9.5.1)

Layer 3: AWS Config Rules (Runtime Monitoring)

File: cloudforge-api/src/main/java/com/cloudforgeci/api/observability/ComplianceFactory.java

  • Continuous compliance monitoring via AWS Config
  • 17 AWS Config managed rules for PCI-DSS
  • Automatic remediation via SSM Automation Documents
  • Evidence collection for Audit Manager

Rule Categories:

  • Base Controls (9 rules): Always deployed regardless of framework
  • PCI-DSS-Specific Controls (8 rules): Conditional on complianceFrameworks: "PCI-DSS"

Layer 4: Security Profile Configuration (Infrastructure Defaults)

File: cloudforge-api/src/main/java/com/cloudforgeci/api/core/security/ProductionSecurityProfileConfiguration.java

  • Production-grade security defaults
  • Enforces encryption, monitoring, backups, high availability
  • 1-year minimum log retention (PCI-DSS Req 10.7)
  • MFA required, password complexity, session management

Detailed Control Mapping

Requirement 1: Install and Maintain Network Security Controls

1.1 - Network Security Controls Defined and Implemented

Sub-RequirementDescriptionImplementationStatusEvidence
1.1.1Document network security controlsVPC architecture documentation required❌ ManualInfrastructure diagrams, network policies
1.1.2Network diagrams showing CDEVPC topology, security groups⚠️ PartialPciDssRules.java:145-205

Infrastructure Implementation:

// PciDssRules.java:148-160 - VPC network segmentation
if (ctx.vpc.get().isEmpty()) {
rules.add(ComplianceRule.fail(
"PCI-DSS-Req-1.2.1-VPC",
"VPC required for network segmentation",
"PCI-DSS Req 1.2.1: VPC required for network segmentation"
));
}

Testing Status: ✅ Production tested


1.2 - Network Security Controls Applied

Sub-RequirementDescriptionImplementationStatusEvidence
1.2.1Restrict inbound/outbound trafficSecurity groups, NACLs✅ AutomatedPciDssRules.java:148-160
1.2.2Secure wireless environmentsN/A (cloud infrastructure)N/A-
1.2.3Prohibit direct public access from Internet to CDEPrivate subnets, NAT gateways✅ AutomatedPciDssRules.java:163-175
1.2.4Anti-spoofing measuresAWS VPC built-in protections✅ AutomatedAWS responsibility
1.2.5Outbound traffic from CDE authorizedSecurity group egress rules✅ AutomatedSecurity group configuration
1.2.6Security features defined for traffic from CDESecurity groups, TLS encryption✅ AutomatedPciDssRules.java:178-202
1.2.7NSCs updated at least every 6 monthsInfrastructure as Code (Git)⚠️ PartialGit commit history
1.2.8Configuration files securedCloudFormation templates in Git✅ AutomatedGit access control

Infrastructure Implementation:

  • VPC with public/private subnet isolation
  • Security groups with least-privilege rules
  • NACLs for additional network layer protection
  • Private network mode required for CDE (private-with-nat)

Config Rules Deployed:

  • vpc-default-security-group-closed - Default SG has no rules
  • restricted-ssh - SSH not open to 0.0.0.0/0
  • restricted-common-ports - Common ports restricted

Guard Policy: pci_rds_no_public_access - RDS not publicly accessible

Testing Status: ✅ Production tested


1.3 - Network Access to Cardholder Data Environment Restricted

Sub-RequirementDescriptionImplementationStatusEvidence
1.3.1Inbound traffic restricted to necessarySecurity group ingress rules✅ AutomatedPciDssRules.java:178-202
1.3.2Outbound traffic restricted to necessarySecurity group egress rules✅ AutomatedSecurity group configuration
1.3.3No direct routes between Internet and CDEPrivate subnets, NAT gateway✅ AutomatedVPC routing tables

Testing Status: ✅ Production tested


1.4 - Network Connections Between Trusted/Untrusted Networks Controlled

Sub-RequirementDescriptionImplementationStatusEvidence
1.4.1NSCs implemented at each connectionALB in public subnet, app in private✅ AutomatedVPC architecture
1.4.2Inbound traffic from untrusted to trusted limitedSecurity groups, ALB routing✅ AutomatedSecurity group rules
1.4.3Anti-spoofing at trusted/untrusted boundaryAWS VPC protections✅ AutomatedAWS responsibility
1.4.4System components cannot expose CDE to InternetPrivate subnets, no public IPs✅ AutomatedPciDssRules.java:163-175
1.4.5Prevent disclosure of internal IP addressesNAT gateway, ALB proxy✅ AutomatedNetwork architecture

Testing Status: ✅ Production tested


1.5 - Risks to CDE from Computing Devices Managed

Sub-RequirementDescriptionImplementationStatusEvidence
1.5.1Security controls on portable devicesNot applicable (server infrastructure)N/A-

Requirement 2: Apply Secure Configurations to All System Components

2.1 - Vendor Defaults Changed Before Production

Sub-RequirementDescriptionImplementationStatusEvidence
2.1.1Change vendor defaults before productionPRODUCTION profile auto-approved⚠️ OperationalPciDssRules.java:546-655
2.1.2Remove or disable unnecessary default accountsIAM best practices, no default accounts✅ AutomatedIAM configuration

Infrastructure Implementation:

// PciDssRules.java:555-568 - Vendor defaults validation
if (isProduction || getBooleanSetting(ctx, "customConfigurationApplied", false)) {
rules.add(ComplianceRule.pass(
"PCI-DSS-Req-2.1-CustomConfig",
"Custom configuration applied - vendor defaults changed (PRODUCTION profile)"
));
}

Note: For PRODUCTION security profile, operational controls are assumed to be in place (matches infrastructure-centric approach).

Testing Status: ⚠️ Operational assumption (not infrastructure-testable)


2.2 - Configuration Standards Developed

Sub-RequirementDescriptionImplementationStatusEvidence
2.2.1Configuration standards address known vulnerabilitiesPRODUCTION profile hardening assumed⚠️ OperationalPciDssRules.java:572-585
2.2.2Enable only necessary servicesSecurity groups, minimal exposure✅ AutomatedPciDssRules.java:588-602
2.2.3Additional security features implementedTLS, encryption, monitoring✅ AutomatedMultiple controls
2.2.4Configure system security parametersSecurity profile configuration✅ AutomatedProductionSecurityProfileConfiguration.java
2.2.5Remove unnecessary functionalityMinimal images assumed⚠️ OperationalPciDssRules.java:606-619
2.2.6Change default credentialsIAM roles, no default credentials✅ AutomatedIAM configuration
2.2.7Implement automated mechanism for complianceAWS Config✅ AutomatedComplianceFactory.java

Testing Status: Mixed (✅ infrastructure, ⚠️ operational assumptions)


2.3 - Wireless Environments Configured Securely

Sub-RequirementDescriptionImplementationStatusEvidence
2.3.1Wireless encryption keys changedN/A (cloud infrastructure)N/A-
2.3.2Wireless security settings configuredN/A (cloud infrastructure)N/A-

2.4 - Inventory of System Components Maintained

Sub-RequirementDescriptionImplementationStatusEvidence
2.4.1Inventory of system componentsAWS Config resource inventory✅ AutomatedPciDssRules.java:639-652
2.4.2Automated mechanisms identify connectionsVPC Flow Logs, CloudTrail✅ AutomatedFlow Logs, CloudTrail

Testing Status: ✅ Production tested


Requirement 3: Protect Stored Account Data

3.1 - Account Data Storage Minimized

Sub-RequirementDescriptionImplementationStatusEvidence
3.1.1Data retention policy documented❌ Application responsibility❌ ManualData retention policy document
3.1.2Cardholder data storage minimized❌ Application responsibility❌ ManualApplication data handling
3.1.3No sensitive authentication data stored post-authorization❌ Application responsibility❌ ManualApplication code review

Gap: Requirement 3.1 is application-specific and cannot be infrastructure-automated. Organizations must implement data minimization in their applications.


3.2 - Sensitive Authentication Data Not Stored After Authorization

Sub-RequirementDescriptionImplementationStatusEvidence
3.2.1Do not store full track data❌ Application responsibility❌ ManualApplication code review
3.2.2Do not store CAV2/CVC2/CVV2/CID❌ Application responsibility❌ ManualApplication code review
3.2.3Do not store PIN/PIN block❌ Application responsibility❌ ManualApplication code review

Gap: Requirement 3.2 is application-specific and cannot be infrastructure-automated.


3.3 - PAN Masked When Displayed

Sub-RequirementDescriptionImplementationStatusEvidence
3.3.1PAN masked when displayed❌ Application responsibility❌ ManualApplication UI/logging review
3.3.2Technical controls for masking❌ Application responsibility❌ ManualApplication code review
3.3.3Remote access displays max 4 digits❌ Application responsibility❌ ManualApplication code review

Gap: Requirement 3.3 is application-specific and cannot be infrastructure-automated.


3.4 - PAN Rendered Unreadable Anywhere Stored

Sub-RequirementDescriptionImplementationStatusEvidence
3.4.1Disk encryption or database encryptionEBS, EFS, RDS, S3 encryption (AES-256)✅ AutomatedPciDssRules.java:211-305
3.4.2PAN unreadable for removable mediaS3 encryption, EBS snapshots encrypted✅ AutomatedAWS encryption

Infrastructure Implementation:

// PciDssRules.java:219-232 - EBS encryption validation
if (!config.isEbsEncryptionEnabled()) {
rules.add(ComplianceRule.fail(
"PCI-DSS-Req-3.4-EBS",
"EBS encryption must be enabled for cardholder data at rest",
"EbsEncryptionRule",
"PCI-DSS Req 3.4: EBS encryption must be enabled"
));
}

Config Rules Deployed:

  • encrypted-volumes - EBS encryption enforcement
  • s3-bucket-encryption - S3 encryption enforcement
  • rds-storage-encrypted - RDS encryption enforcement

Guard Policies:

  • pci_s3_encryption - S3 BucketEncryption exists
  • pci_rds_encryption - RDS StorageEncrypted = true
  • pci_ebs_encryption - EBS Encrypted = true
  • pci_efs_encryption - EFS Encrypted = true
  • pci_dynamodb_encryption - DynamoDB SSEEnabled = true

Testing Status: ✅ Production tested


3.5 - Cryptographic Keys Protected

Sub-RequirementDescriptionImplementationStatusEvidence
3.5.1Key-encrypting keys as strong as data keysKMS customer-managed keys✅ AutomatedKMS configuration
3.5.2Key management procedures documented❌ Manual❌ ManualKey management policy

Testing Status: ✅ Infrastructure tested, ❌ procedures not documented


3.6 - Key Management Procedures Implemented

Sub-RequirementDescriptionImplementationStatusEvidence
3.6.1Cryptographic key proceduresKMS key rotation, access policies✅ AutomatedAuditManagerControlRegistry.java:251-263
3.6.2Key change proceduresKMS automatic rotation (annual)✅ AutomatedKMS rotation settings

Config Rule: kms-key-rotation-enabled - Annual key rotation

Guard Policy: pci_kms_key_rotation - EnableKeyRotation = true

Testing Status: ✅ Production tested


3.7 - Cryptography and Key Management Fully Documented

Sub-RequirementDescriptionImplementationStatusEvidence
3.7.1Cryptography documented❌ Manual❌ ManualCryptography policy document

Requirement 4: Protect Cardholder Data with Strong Cryptography During Transmission

4.1 - Strong Cryptography and Security Protocols Used

Sub-RequirementDescriptionImplementationStatusEvidence
4.1.1Industry best practices for TLSALB TLS 1.2+ minimum policy✅ AutomatedPciDssRules.java:277-302
4.1.2Trusted keys and certificates maintainedACM certificate management✅ AutomatedACM configuration

Infrastructure Implementation:

// PciDssRules.java:277-288 - SSL/TLS enforcement
if (!ctx.cfc.enableSsl()) {
rules.add(ComplianceRule.fail(
"PCI-DSS-Req-4.1-SSL",
"SSL/TLS must be enabled for encrypted transmission",
"PCI-DSS Req 4.1: enableSsl must be true"
));
}

Additional Controls:

  • EFS encryption in transit (TLS)
  • TLS certificate validation
  • No insecure protocols (SSLv3, TLS 1.0/1.1)

Guard Policy: pci_alb_https - HTTPS/TLS on port 443

Testing Status: ✅ Production tested


4.2 - PAN Never Sent Via Unencrypted Technologies

Sub-RequirementDescriptionImplementationStatusEvidence
4.2.1No unencrypted PAN transmission❌ Application responsibility❌ ManualApplication code review, logging review
4.2.2No PAN via end-user messaging❌ Application/policy❌ ManualMessaging policy, user training

Gap: Requirement 4.2 is application-specific and cannot be infrastructure-automated.


Requirement 5: Protect All Systems and Networks from Malicious Software

5.1 - Anti-Malware Mechanisms Deployed

Sub-RequirementDescriptionImplementationStatusEvidence
5.1.1Anti-malware deployed on systemsFargate (immutable containers) + GuardDuty⚠️ Alternative approachThreatProtectionRules.java
5.1.2Anti-malware kept currentAWS-managed (GuardDuty auto-updates)✅ AutomatedGuardDuty service

Alternative Approach:

  • Fargate: Immutable container infrastructure prevents malware persistence
  • GuardDuty: Runtime threat detection for crypto mining, malware, unauthorized access
  • Container Image Scanning: Recommended via ECR image scanning (external)

Testing Status: ⚠️ Alternative approach (not traditional anti-malware)

Action Required: Document alternative approach for QSA review


5.2 - Anti-Malware Mechanisms Configured Correctly

Sub-RequirementDescriptionImplementationStatusEvidence
5.2.1Anti-malware active and cannot be disabledGuardDuty always-on for production✅ AutomatedProductionSecurityProfileConfiguration.java:118-126
5.2.2Periodic scans performedGuardDuty continuous monitoring✅ AutomatedGuardDuty findings
5.2.3Removable media scannedN/A (cloud infrastructure)N/A-

Testing Status: ✅ Production tested (GuardDuty)


5.3 - Anti-Malware Mechanisms Maintained

Sub-RequirementDescriptionImplementationStatusEvidence
5.3.1Mechanisms kept currentAWS-managed updates✅ AutomatedAWS responsibility
5.3.2Periodic evaluations performedGuardDuty findings review⚠️ Manual reviewGuardDuty console
5.3.3Generate audit logsGuardDuty findings logged✅ AutomatedCloudWatch Events, S3
5.3.4Anti-malware cannot be disabledGuardDuty protected by IAM✅ AutomatedIAM policies
5.3.5Administration tasks limitedIAM roles with least privilege✅ AutomatedIAM configuration

Testing Status: ✅ Production tested


Requirement 6: Develop and Maintain Secure Systems and Software

6.1 - Security Vulnerabilities Identified and Addressed

Sub-RequirementDescriptionImplementationStatusEvidence
6.1.1Process to identify security vulnerabilitiesAWS Config, Inspector (optional)⚠️ PartialConfig compliance dashboard
6.1.2Reputable outside sources for alertsAWS Security Bulletins✅ AutomatedAWS notifications
6.1.3Inventory of bespoke software❌ Application responsibility❌ ManualSoftware inventory, SBOM

Testing Status: ⚠️ Partial (infrastructure monitoring only)


6.2 - Bespoke Software Developed Securely

Sub-RequirementDescriptionImplementationStatusEvidence
6.2.1Software development personnel trained❌ Organizational❌ ManualTraining records
6.2.2Software reviewed prior to release❌ Application/process❌ ManualCode review process documentation
6.2.3Change control for software changesInfrastructure as Code (Git)✅ AutomatedGit commit history, PR approvals
6.2.4Access to production data preventedIAM least privilege, separate environments✅ AutomatedIAM policies

Testing Status: Mixed (✅ infrastructure, ❌ application development)


6.3 - Security Vulnerabilities Managed

Sub-RequirementDescriptionImplementationStatusEvidence
6.3.1Inventory of software components❌ Application responsibility❌ ManualSoftware Bill of Materials (SBOM)
6.3.2Vulnerabilities prioritized by riskAWS Config severity levels⚠️ PartialConfig compliance dashboard
6.3.3Vulnerabilities addressed based on riskAWS Config remediation⚠️ PartialSSM automation documents

Testing Status: ⚠️ Partial (infrastructure only)


6.4 - Public-Facing Web Applications Protected

Sub-RequirementDescriptionImplementationStatusEvidence
6.4.1Web apps protected from attacksAWS WAF (REQUIRED)✅ EnforcedPciDssRules.java:317-334
6.4.2Automated technical solution enforcedWAF validation (fail=block)✅ Automated34 WAF test cases in compliance-test-matrix.csv

Infrastructure Implementation:

// PciDssRules.java:317-334 - WAF validation
if (!config.isWafEnabled()) {
rules.add(ComplianceRule.fail(
"PCI-DSS-Req-6.6-WAF",
"Web Application Firewall (WAF) REQUIRED for PCI-DSS compliance in PRODUCTION",
"WafEnabled",
"PCI-DSS Req 6.6: Protect all public-facing web applications from known attacks by " +
"installing a web application firewall..."
));
}

Important: WAF is now REQUIRED (not optional) for PRODUCTION with PCI-DSS. Validation will fail if WAF is not enabled.

Testing Status: ✅ WAF REQUIRED and enforced with 34 test cases

Evidence:


6.5 - Changes to System Components Managed Securely

Sub-RequirementDescriptionImplementationStatusEvidence
6.5.1Change control procedures documentedInfrastructure as Code (Git)✅ AutomatedPciDssRules.java:354
6.5.2Technical controls for change managementGit, PR approvals, CloudFormation✅ AutomatedGit workflow
6.5.3Document pre-production testing❌ Process documentation❌ ManualTesting procedures
6.5.4Removal of test data before production❌ Process documentation❌ ManualData sanitization procedures
6.5.5Change approval by authorized partiesGit branch protection, PR approvals✅ AutomatedGitHub/GitLab settings
6.5.6Deployed changes documentedGit commit messages, CloudFormation change sets✅ AutomatedGit history, CloudTrail

Testing Status: ✅ Infrastructure change management tested


Requirement 7: Restrict Access to System Components and Cardholder Data by Business Need to Know

7.1 - Processes for Granting Access Defined

Sub-RequirementDescriptionImplementationStatusEvidence
7.1.1Access control mechanismsIAM policies, security groups✅ AutomatedPciDssRules.java:343-404
7.1.2Access control configuredIAM roles with least privilege✅ AutomatedIAM policy documents

Infrastructure Implementation:

// PciDssRules.java:348-361 - IAM access control validation
if (ctx.iamProfile == null) {
rules.add(ComplianceRule.fail(
"PCI-DSS-Req-7.1-IAM",
"IAM profile must be configured for least privilege",
"PCI-DSS Req 7.1: IAM profile required"
));
}

Config Rules Deployed:

  • iam-password-policy - Password complexity enforcement
  • iam-user-no-policies - Users must use groups
  • iam-root-access-key-rule - No root access keys

Testing Status: ✅ Production tested


7.2 - Access Based on Business Need to Know

Sub-RequirementDescriptionImplementationStatusEvidence
7.2.1Access limited to least privilegesIAM roles, security groups✅ AutomatedIAM configuration
7.2.2Access assignment based on roleIAM role-based access control (RBAC)✅ AutomatedIAM roles
7.2.3Default deny for all accessSecurity groups deny-by-default✅ AutomatedSecurity group rules
7.2.4Access rights reviewed and confirmed❌ Manual process❌ ManualAccess review records
7.2.5Privileged access assigned based on needIAM roles for services✅ AutomatedIAM service roles
7.2.6Access control mechanisms configuredSecurity groups, IAM policies✅ AutomatedAWS configuration

Testing Status: ✅ Infrastructure tested, ❌ manual reviews not implemented


7.3 - Access to System Components Recorded

Sub-RequirementDescriptionImplementationStatusEvidence
7.3.1All access to system components loggedCloudTrail, VPC Flow Logs✅ AutomatedPciDssRules.java:410-478

Testing Status: ✅ Production tested


Requirement 8: Identify Users and Authenticate Access to System Components

8.1 - Processes for User Identification Defined

Sub-RequirementDescriptionImplementationStatusEvidence
8.1.1Users assigned unique IDIAM users, Cognito users⚠️ Implemented, not testedIAM user list, Cognito User Pool

Testing Status: ⚠️ Cognito not production-tested


8.2 - User Authentication Managed

Sub-RequirementDescriptionImplementationStatusEvidence
8.2.1Strong authentication for usersOIDC with MFA-enabled providers⚠️ Implemented, not testedPciDssRules.java:364-379
8.2.2Strong authentication for adminsIAM MFA enforcement✅ AutomatedAWS Config: iam-user-mfa-enabled
8.2.3Password policies enforce complexityIAM password policy (8+ chars for PCI)✅ AutomatedProductionSecurityProfileConfiguration.java:449
8.2.4Password change proceduresIAM password rotation (90 days)✅ AutomatedIAM password policy
8.2.5Passwords not sent in clear textCognito HTTPS, IAM console HTTPS✅ AutomatedHTTPS enforcement
8.2.6Authentication credentials protectedKMS encryption, Secrets Manager✅ AutomatedKMS, Secrets Manager

Infrastructure Implementation:

// PciDssRules.java:364-379 - Authentication validation
String authMode = ctx.cfc.authMode();
if ("none".equals(authMode)) {
rules.add(ComplianceRule.fail(
"PCI-DSS-Req-8.2-Auth",
"Authentication must be enabled for production",
"Configure authMode with MFA-enabled identity provider"
));
}

Testing Status: ⚠️ IAM tested, Cognito/OIDC not production-tested


8.3 - Multi-Factor Authentication (MFA) Implemented

Sub-RequirementDescriptionImplementationStatusEvidence
8.3.1MFA for all non-console admin accessIAM MFA enforcement✅ AutomatedAWS Config: iam-user-mfa-enabled, root-account-mfa-enabled
8.3.2MFA for all access to CDECognito MFA or Identity Center MFA⚠️ Implemented, not testedPciDssRules.java:381-401

Infrastructure Implementation:

// PciDssRules.java:387-400 - MFA validation
boolean usingCognitoWithMfa = ctx.cfc.cognitoMfaEnabled();
boolean hasValidSso = ctx.cfc.ssoInstanceArn() != null;

if (!usingCognitoWithMfa && !hasValidSso) {
rules.add(ComplianceRule.fail(
"PCI-DSS-Req-8.3-MFA",
"Multi-factor authentication required",
"Enable Cognito MFA OR configure IAM Identity Center"
));
}

Guard Policy: pci_cognito_mfa - MfaConfiguration in ['ON', 'OPTIONAL']

Testing Status: ⚠️ IAM MFA tested, Cognito/OIDC MFA not production-tested

Action Required: Test Cognito MFA and Identity Center MFA in production


8.4 - MFA Systems Configured Correctly

Sub-RequirementDescriptionImplementationStatusEvidence
8.4.1MFA uses independent methodsCognito TOTP/SMS, Identity Center MFA⚠️ Implemented, not testedCognito MFA configuration
8.4.2MFA for all access into CDE (v4.0 - Now Mandatory)Cognito/Identity Center MFA⚠️ Implemented, not testedMFA configuration
8.4.3MFA replay resistance (v4.0 - Now Mandatory)Cognito time-based OTP, Identity Center⚠️ Implemented, not testedTOTP configuration

Note: 8.4.2 and 8.4.3 became mandatory on March 31, 2025 (PCI-DSS v4.0) - deadline has passed

Testing Status: ⚠️ Not production-tested


8.5 - MFA Use by Third Parties

Sub-RequirementDescriptionImplementationStatusEvidence
8.5.1Phishing-resistant MFA for third-party access (v4.0 - Now Mandatory)Identity Center with WebAuthn/FIDO2⚠️ RecommendedIdentity Center configuration

Note: 8.5.1 became mandatory on March 31, 2025 - deadline has passed


8.6 - Use of Application and System Accounts Managed

Sub-RequirementDescriptionImplementationStatusEvidence
8.6.1Shared authentication not usedIAM service roles (unique per service)✅ AutomatedIAM configuration
8.6.2Passwords for accounts not embeddedSecrets Manager, IAM roles✅ AutomatedSecrets Manager usage
8.6.3Passwords changed when employee leavesSecrets Manager rotation⚠️ Manual triggerSecrets Manager rotation policy

Testing Status: ✅ Infrastructure tested, ⚠️ rotation procedures not tested


Requirement 9: Restrict Physical Access to Cardholder Data

Note: Physical security is AWS's responsibility under the Shared Responsibility Model for cloud infrastructure.

RequirementDescriptionImplementationStatusEvidence
9.1 - 9.9Physical access controlsAWS data center security (SOC 2 Type II)✅ AWS ResponsibilityAWS SOC 2 report, compliance certifications

Action Required: Obtain and review AWS SOC 2 Type II report for evidence of physical security controls

Testing Status: N/A (AWS responsibility)


Requirement 10: Log and Monitor All Access to System Components and Cardholder Data

10.1 - Processes for Logging Defined

Sub-RequirementDescriptionImplementationStatusEvidence
10.1.1Logging enabled for all system componentsCloudTrail, Flow Logs, ALB logs✅ AutomatedPciDssRules.java:410-478

Testing Status: ✅ Production tested


10.2 - Audit Logs Capture Required Details

Sub-RequirementDescriptionImplementationStatusEvidence
10.2.1User access to cardholder data loggedCloudTrail, ALB logs✅ AutomatedPciDssRules.java:418-431
10.2.2Administrative actions loggedCloudTrail API calls✅ AutomatedCloudTrail event history

Infrastructure Implementation:

// PciDssRules.java:418-431 - CloudTrail validation
if (!config.isCloudTrailEnabled()) {
rules.add(ComplianceRule.fail(
"PCI-DSS-Req-10.2-CloudTrail",
"CloudTrail must be enabled for API activity audit logging",
"CloudTrailEnabledRule"
));
}

Config Rule: cloudtrail-enabled - CloudTrail logging active

Guard Policy: pci_cloudtrail_enabled - IsLogging = true

Testing Status: ✅ Production tested


10.3 - Audit Logs Include Required Details

Sub-RequirementDescriptionImplementationStatusEvidence
10.3.1User identificationCloudTrail provides user, timestamp, action✅ AutomatedCloudTrail log format
10.3.2Event typeCloudTrail event names✅ AutomatedCloudTrail event history
10.3.3Date and timeCloudTrail timestamps (UTC)✅ AutomatedCloudTrail logs
10.3.4Success/failure indicationCloudTrail errorCode field✅ AutomatedCloudTrail logs
10.3.5Event originCloudTrail sourceIPAddress✅ AutomatedCloudTrail logs
10.3.6Identity of affected data/resourceCloudTrail resources field✅ AutomatedCloudTrail logs

Additional Logging:

  • VPC Flow Logs: Network traffic (source IP, dest IP, ports, protocol)
  • ALB Access Logs: HTTP requests (client IP, request path, response code)

Infrastructure Implementation:

// PciDssRules.java:434-445 - VPC Flow Logs validation
if (!config.isFlowLogsEnabled()) {
rules.add(ComplianceRule.fail(
"PCI-DSS-Req-10.3-FlowLogs",
"VPC Flow Logs must be enabled for network activity tracking"
));
}

Guard Policy: pci_vpc_flow_logs - TrafficType == 'ALL'

Testing Status: ✅ Production tested


10.4 - Audit Logs Protected from Modification

Sub-RequirementDescriptionImplementationStatusEvidence
10.4.1Audit log files protectedS3 versioning, CloudTrail log validation✅ AutomatedS3 versioning, CloudTrail validation
10.4.2Audit log files promptly backed upS3 replication, cross-region backup✅ AutomatedS3 replication configuration
10.4.3Audit logs written to secure centralized locationS3 buckets with encryption✅ AutomatedCloudTrail S3 bucket

Config Rules Deployed:

  • s3-bucket-versioning-enabled - S3 versioning for recovery

Guard Policy: pci_s3_versioning - VersioningConfiguration.Status == 'Enabled'

Testing Status: ✅ Production tested


10.5 - Audit Logs Retained and Protected

Sub-RequirementDescriptionImplementationStatusEvidence
10.5.1Audit logs retained at least 12 monthsS3 lifecycle policies (1+ year)✅ AutomatedPciDssRules.java:448-459

Infrastructure Implementation:

// PciDssRules.java:448-459 - ALB access logging validation
if (!config.isAlbAccessLoggingEnabled()) {
rules.add(ComplianceRule.fail(
"PCI-DSS-Req-10.5-ALB",
"ALB access logging must be enabled for web traffic audit trails"
));
}

Testing Status: ✅ Production tested


10.6 - Audit Logs Reviewed Regularly

Sub-RequirementDescriptionImplementationStatusEvidence
10.6.1Logs reviewed at least daily❌ Manual process❌ ManualLog review records
10.6.2Logs reviewed daily for critical systems❌ Manual process❌ ManualLog review procedures
10.6.3Log review exceptions flaggedCloudWatch Alarms for anomalies⚠️ PartialCloudWatch alarm configuration

Testing Status: ⚠️ Infrastructure alerting exists, manual review not implemented

Action Required: Implement daily log review process and document review records


10.7 - Audit Log History Retained

Sub-RequirementDescriptionImplementationStatusEvidence
10.7.1Retain at least 12 months, 3 months onlineS3 lifecycle with Glacier transition✅ AutomatedPciDssRules.java:462-476

Infrastructure Implementation:

// PciDssRules.java:462-476 - Log retention validation
var retentionDays = config.getLogRetentionDays();
if (!isRetentionSufficient(retentionDays)) {
rules.add(ComplianceRule.fail(
"PCI-DSS-Req-10.7-Retention",
"Log retention must be at least ONE_YEAR (365 days)",
"Current: " + retentionDays.toString()
));
}

Retention Configuration:

  • CloudWatch Logs: 1 year minimum (configurable)
  • S3 Logs: Lifecycle policies with Glacier transition
  • CloudTrail: 90 days in CloudTrail, indefinite in S3

Guard Policy: pci_cloudwatch_logs_retention - RetentionInDays >= 365

Testing Status: ✅ Production tested


10.8 - Audit Mechanisms Protect Audit Data

Sub-RequirementDescriptionImplementationStatusEvidence
10.8.1Log analysis tool access controlledIAM policies for CloudWatch/S3 access✅ AutomatedIAM configuration

Testing Status: ✅ Production tested


Requirement 11: Test Security of Systems and Networks Regularly

11.1 - Processes for Testing Defined

Sub-RequirementDescriptionImplementationStatusEvidence
11.1.1All security control testing documented❌ Manual process❌ ManualTesting procedures document
11.1.2Testing includes technology and process❌ Manual process❌ ManualTesting plan

11.2 - Wireless Access Points Managed

Sub-RequirementDescriptionImplementationStatusEvidence
11.2.1Wireless access points inventoryN/A (cloud infrastructure)N/A-

11.3 - Vulnerabilities Identified and Addressed

Sub-RequirementDescriptionImplementationStatusEvidence
11.3.1Internal vulnerability scans quarterly❌ Requires scanning tool❌ ManualInspector (optional), third-party scanner
11.3.2External vulnerability scans quarterly by ASV❌ Requires ASV vendor❌ ManualASV scan reports

Gap: Req 11.3 requires Approved Scanning Vendor (ASV) for external scans and internal vulnerability scanning tool.

Action Required: Engage ASV vendor for quarterly scans, implement vulnerability scanner (Inspector, Qualys, etc.)


11.4 - External and Internal Penetration Testing Performed

Sub-RequirementDescriptionImplementationStatusEvidence
11.4.1Penetration testing performed❌ Requires pen testers❌ ManualPenetration test reports
11.4.2Internal penetration testing performed❌ Requires pen testers❌ ManualInternal pen test reports
11.4.3Remediation of vulnerabilities❌ Manual process❌ ManualRemediation tracking

Gap: Req 11.4 requires annual penetration testing by qualified internal or third-party pen testers.

Action Required: Engage penetration testing firm, schedule annual tests


11.5 - Network Intrusion Detection Systems Deployed

Sub-RequirementDescriptionImplementationStatusEvidence
11.5.1Intrusion-detection/prevention deployedGuardDuty threat detection✅ AutomatedPciDssRules.java:492-505
11.5.2IDPS mechanisms kept currentAWS-managed updates✅ AutomatedAWS GuardDuty service

Infrastructure Implementation:

// PciDssRules.java:492-505 - GuardDuty validation
if (!config.isGuardDutyEnabled()) {
rules.add(ComplianceRule.fail(
"PCI-DSS-Req-11.4-GuardDuty",
"GuardDuty (threat detection) must be enabled for production",
"GuardDutyEnabled"
));
}

Config Rule: guardduty-enabled-centralized - GuardDuty active

Testing Status: ✅ Production tested


11.6 - File Integrity Monitoring Deployed

Sub-RequirementDescriptionImplementationStatusEvidence
11.6.1File integrity monitoring (FIM) deployedFargate immutable containers + AWS Config⚠️ Alternative approachPciDssRules.java:508-519

Alternative Approach:

  • Fargate: Immutable infrastructure prevents file modification
  • AWS Config: Tracks infrastructure configuration changes

Infrastructure Implementation:

// PciDssRules.java:522-534 - AWS Config validation
if (!config.isAwsConfigEnabled()) {
rules.add(ComplianceRule.fail(
"PCI-DSS-Req-11.6-Config",
"AWS Config recommended for continuous compliance monitoring"
));
}

Testing Status: ⚠️ Alternative approach (not traditional FIM)

Action Required: Document alternative approach for QSA review


Requirement 12: Support Information Security with Organizational Policies and Programs

Note: Requirement 12 is entirely organizational/procedural and cannot be infrastructure-automated.

Sub-RequirementDescriptionImplementationStatusEvidence
12.1Establish security policy❌ Manual❌ ManualInformation security policy document
12.2Implement risk assessment❌ Manual❌ ManualAnnual risk assessment report
12.3Usage policies for critical technologies❌ Manual❌ ManualAcceptable use policy (AUP)
12.4Ensure personnel aware of security❌ Manual❌ ManualSecurity awareness training records
12.5Assign security responsibilities❌ Manual❌ ManualSecurity roles and responsibilities document
12.6Security awareness program implemented❌ Manual❌ ManualTraining program documentation
12.7Screen personnel prior to hire❌ Manual❌ ManualBackground check records
12.8Service providers managed❌ Manual❌ ManualThird-party risk assessment, contracts
12.9Service providers acknowledge responsibility❌ Manual❌ ManualThird-party agreements
12.10Incident response plan implemented❌ Manual❌ ManualIncident response plan document

Gap: Requirement 12 requires comprehensive organizational policies, procedures, and programs.

Action Required: Document all Req 12 policies and procedures (security policy, risk assessment, training, incident response, etc.)


Infrastructure Verification

AWS Config Rules Deployment

Base Controls (Always Deployed)

Rule NameAWS Managed RulePCI-DSS MappingPurposeRemediation
encrypted-volumesENCRYPTED_VOLUMESReq 3.4EBS encryption enforcementAuto-enable via SSM
s3-bucket-public-read-prohibitedS3_BUCKET_PUBLIC_READ_PROHIBITEDReq 1.3, Req 7.2S3 public read preventionManual
s3-bucket-public-write-prohibitedS3_BUCKET_PUBLIC_WRITE_PROHIBITEDReq 1.3, Req 7.2S3 public write preventionManual
iam-password-policyIAM_PASSWORD_POLICYReq 8.2.3Password complexityManual
iam-user-mfa-enabledIAM_USER_MFA_ENABLEDReq 8.3.1User MFA enforcementManual
root-account-mfa-enabledROOT_ACCOUNT_MFA_ENABLEDReq 8.3.1Root account MFAManual
access-keys-rotatedACCESS_KEYS_ROTATEDReq 8.2.490-day key rotationManual
cloudtrail-enabledCLOUD_TRAIL_ENABLEDReq 10.2API audit loggingAuto-enable via SSM
vpc-flow-logs-enabledVPC_FLOW_LOGS_ENABLEDReq 10.3Network traffic monitoringManual

PCI-DSS-Specific Controls (Conditional)

Rule NameAWS Managed RulePCI-DSS MappingPurposeCondition
s3-bucket-versioning-enabledS3_BUCKET_VERSIONING_ENABLEDReq 9.5.1, Req 10.5Backup and recoverypciDssCondition
s3-bucket-encryptionS3_DEFAULT_ENCRYPTION_KMSReq 3.4S3 encryptionpciDssCondition
guardduty-enabled-centralizedGUARDDUTY_ENABLED_CENTRALIZEDReq 11.5Threat detectionpciDssCondition
kms-key-rotation-enabledCMK_BACKING_KEY_ROTATION_ENABLEDReq 3.6Key managementpciDssCondition
alb-http-to-https-redirectionALB_HTTP_TO_HTTPS_REDIRECTION_CHECKReq 4.1Force HTTPSpciDssCondition
rds-multi-az-supportRDS_MULTI_AZ_SUPPORTBusiness continuityDatabase HApciDssRdsCondition
rds-storage-encryptedRDS_STORAGE_ENCRYPTEDReq 3.4Database encryptionpciDssRdsCondition
rds-automated-backupsDB_LAST_BACKUP_RECOVERY_POINT_CREATEDReq 9.5.1Database backupspciDssRdsCondition

Total Rules: 17 (9 base + 8 PCI-DSS-specific)

Deployment Logic: See ComplianceFactory.java:246-300


CloudFormation Guard Policies

File: pci-dss-v4.0.1.guard

Validation Rules (15 total):

Encryption at Rest (Req 3.4)

  • pci_s3_encryption (lines 32-34) - S3 BucketEncryption exists
  • pci_rds_encryption (lines 37-39) - RDS StorageEncrypted = true
  • pci_rds_cluster_encryption (lines 42-44) - RDS Cluster encrypted
  • pci_ebs_encryption (lines 47-49) - EBS Encrypted = true
  • pci_efs_encryption (lines 52-54) - EFS Encrypted = true
  • pci_dynamodb_encryption (lines 57-60) - DynamoDB SSEEnabled = true
  • pci_kms_key_rotation (lines 63-65) - KMS EnableKeyRotation = true

Encryption in Transit (Req 4.1)

  • pci_alb_https (lines 73-75) - ALB HTTPS/TLS on port 443

Network Security (Req 1.2.1, 1.3)

  • pci_rds_no_public_access (lines 82-85) - RDS not publicly accessible

Access Control (Req 7.1, 7.2)

  • pci_s3_block_public_access (lines 92-96) - S3 public access blocks

Authentication (Req 8.2, 8.3)

  • pci_cognito_mfa (lines 103-105) - Cognito MfaConfiguration in ['ON', 'OPTIONAL']

Audit Logging (Req 10.1, 10.2, 10.3)

  • pci_cloudtrail_enabled (lines 112-114) - CloudTrail IsLogging = true
  • pci_vpc_flow_logs (lines 117-119) - VPC Flow Logs TrafficType = 'ALL'

Log Retention (Req 10.7)

  • pci_cloudwatch_logs_retention (lines 126-129) - RetentionInDays >= 365

Backup & Recovery (Req 9.5.1, 10.5)

  • pci_s3_versioning (lines 136-139) - S3 versioning enabled
  • pci_rds_automated_backups (lines 142-145) - RDS BackupRetentionPeriod >= 7

Security Profile Enforcement

File: ProductionSecurityProfileConfiguration.java

Production Defaults for PCI-DSS:

ControlConfigurationLinePCI-DSS ReqOverridable
Log Retention1 year minimum (365+ days)55Req 10.7Yes (via logRetentionDays)
Flow LogsEnabled (all traffic)80Req 10.3Yes (via flowLogsEnabled)
CloudTrailAlways enabled114Req 10.2Yes (via cloudTrailEnabled)
GuardDutyAlways enabled125Req 11.5Yes (via guardDutyEnabled)
AWS ConfigAlways enabled134Req 11.6No
EBS EncryptionMandatory148Req 3.4No
EFS Encryption (transit)Mandatory162Req 4.1Yes
EFS Encryption (rest)Mandatory167Req 3.4No
S3 EncryptionMandatory172Req 3.4No
ALB Access LoggingEnabled285Req 10.5Yes
MFA RequiredAlways418Req 8.3No
Password Length14 chars (exceeds 8 minimum)449Req 8.2.3No
Password Rotation90 days443Req 8.2.4No
Password Reuse4 passwordsImplementationReq 8.2.4No

Gap Analysis

Critical Gaps (Require Manual Implementation)

1. Application-Level Controls (Req 3 & 4)

Gap: PAN masking, data flow validation, data retention minimization

Impact: Core PCI-DSS requirements (~20% of Req 3)

Requirement:

  • Req 3.1: Data retention and disposal policy
  • Req 3.2: No sensitive authentication data stored post-authorization
  • Req 3.3: PAN masked when displayed (show max 6 digits)
  • Req 4.2: No PAN sent via unencrypted technologies (email, IM, SMS)

Remediation:

Priority: CRITICAL
Timeline: Immediate (before processing cardholder data)
Owner: Application Development Team

Tasks:
1. Implement PAN masking in all user interfaces and logs
2. Validate no sensitive authentication data (CVV, PIN) stored
3. Implement data retention policy (delete data no longer needed)
4. Audit all data flows to ensure no unencrypted PAN transmission
5. Code review focused on PCI-DSS Req 3 & 4 compliance

Evidence Required:

  • Application code review report
  • Data flow diagrams showing PAN handling
  • Data retention policy document
  • Masking validation screenshots

2. Organizational Policies (Req 12)

Gap: Security policy, risk assessment, training, incident response

Impact: Entire Requirement 12 (~15% of total requirements)

Remediation:

Priority: HIGH
Timeline: 4-8 weeks
Owner: CISO + Compliance Officer

Tasks:
1. Write information security policy manual
2. Conduct annual risk assessment
3. Create acceptable use policy (AUP)
4. Develop security awareness training program
5. Document incident response plan
6. Create vendor management procedures
7. Implement background check process

Evidence Required:

  • Information security policy (board-approved)
  • Annual risk assessment report
  • Acceptable use policy
  • Training records (attendance, test scores)
  • Incident response plan
  • Vendor contracts with PCI-DSS clauses
  • Background check records

3. Testing & Validation (Req 11)

Gap: ASV scans, penetration testing, vulnerability scans

Impact: ~40% of Requirement 11

Remediation:

Priority: HIGH
Timeline: Immediate (quarterly scans required)
Owner: Security Team

Tasks:
1. Engage Approved Scanning Vendor (ASV) for external scans
2. Schedule quarterly ASV scans
3. Engage penetration testing firm
4. Schedule annual penetration tests
5. Implement vulnerability scanner (AWS Inspector, Qualys, etc.)
6. Conduct quarterly internal vulnerability scans

Evidence Required:

  • ASV scan reports (quarterly, passing)
  • Penetration test reports (annual)
  • Internal vulnerability scan reports (quarterly)
  • Remediation tracking for findings

4. Operational Procedures (Req 5, Req 6, Req 7)

Gap: Anti-malware management, secure SDLC, access reviews

Impact: ~25% of requirements

Remediation:

Priority: MEDIUM
Timeline: 4-6 weeks
Owner: Security Team + Engineering

Tasks:
1. Document alternative anti-malware approach (Fargate + GuardDuty)
2. Create secure development lifecycle (SDLC) documentation
3. Implement quarterly access reviews
4. Document code review process (Req 6.4.2 alternative to WAF)
5. Create software inventory and SBOM

Evidence Required:

  • Anti-malware alternative approach documentation
  • SDLC policy document
  • Quarterly access review records
  • Code review reports
  • Software inventory

Partial Gaps (Enhance Existing Controls)

1. Authentication Testing (Req 8)

Current State: Cognito and OIDC implemented but not production-tested

Gap: Production validation of MFA enforcement

Remediation:

Priority: HIGH
Timeline: 1-2 weeks
Owner: Engineering

Tasks:
1. Test Cognito User Pool with MFA in production
2. Validate TOTP MFA enrollment and challenge
3. Validate SMS MFA enrollment and challenge
4. Test Identity Center MFA integration
5. Verify session timeout enforcement
6. Test password policy enforcement
7. Document authentication flows

2. WAF Implementation (Req 6.4)

Current State: ✅ WAF REQUIRED and enforced in PRODUCTION

Validation: Automated enforcement via PciDssRules.java:317-334

Evidence: 34 WAF test cases in compliance-test-matrix.csv

Status: ✅ Fully Implemented

Deployment:

  1. ✅ WAF enabled by default in PRODUCTION security profile
  2. ✅ Validation fails if WAF disabled with PCI-DSS framework
  3. ✅ Comprehensive test coverage (EC2, FARGATE, multi-framework scenarios)
  4. ⏭️ Configure WAF rules (SQL injection, XSS, known bad inputs) - operational task
  5. ⏭️ Monitor WAF logs and tune rules - operational task

3. Daily Log Review (Req 10.6)

Current State: Logs collected, alerting exists, but no daily review process

Gap: Manual review procedures not documented

Remediation:

Priority: MEDIUM
Timeline: 2 weeks
Owner: Security Operations

Tasks:
1. Create log review procedures
2. Assign log review responsibilities
3. Create log review checklist
4. Implement log review tracking (tickets, spreadsheet)
5. Train personnel on log review

Coverage Metrics

Overall PCI-DSS Coverage

RequirementTotal Sub-RequirementsAutomatedPartialManualCoverage %
Req 1 - Network Security~201523~85%
Req 2 - Secure Configurations~12642~83%
Req 3 - Protect Stored Data~153012~20%
Req 4 - Protect Transmitted Data~8503~63%
Req 5 - Anti-Malware~10523~70%
Req 6 - Secure Systems~255515~40%
Req 7 - Restrict Access~151014~73%
Req 8 - Identify/Authenticate~20866~70%
Req 9 - Physical Access~1515 (AWS)00100% (AWS)
Req 10 - Log and Monitor~201532~90%
Req 11 - Test Security~15528~47%
Req 12 - Info Security Policy~2500250%
TOTAL~200~92~25~83~59%

Note: These percentages reflect infrastructure automation. PCI-DSS requires significant application-level and organizational controls.

Infrastructure Coverage

Automatable Technical Controls: ~110-120 controls Automated: ~92 controls Infrastructure Coverage: ~77%

Testing Coverage

Control CategoryImplementedProduction TestedStatus
Encryption (at-rest)✅ Yes✅ YesComplete
Encryption (in-transit)✅ Yes✅ YesComplete
Network Security✅ Yes✅ YesComplete
Access Control (IAM)✅ Yes✅ YesComplete
Authentication (Cognito/OIDC)✅ Yes⚠️ NoAction Required
MFA (Cognito/Identity Center)✅ Yes⚠️ NoAction Required
Audit Logging✅ Yes✅ YesComplete
Threat Detection (GuardDuty)✅ Yes✅ YesComplete
Intrusion Detection✅ Yes✅ YesComplete
Configuration Monitoring✅ Yes✅ YesComplete
WAF✅ Yes⚠️ OptionalDecision Required

Remediation Roadmap

Phase 1: Critical Gaps (Weeks 1-8)

Goal: Address mandatory controls required for PCI-DSS compliance

TaskOwnerTimelineDeliverable
Application PAN masking (Req 3.3)Application DevWeeks 1-2Code review, masking validation
Data retention policy (Req 3.1)ComplianceWeek 1Policy document
Sensitive auth data validation (Req 3.2)Application DevWeek 2Code audit report
WAF decision and implementation (Req 6.4)Security + EngineeringWeeks 1-2WAF enabled OR code review process
Authentication testing (Req 8)EngineeringWeeks 1-2Test report, MFA validation
Engage ASV vendor (Req 11.3.2)SecurityWeek 1ASV contract, scan schedule
Information security policy (Req 12.1)CISO + ComplianceWeeks 1-4Policy document (board-approved)
Incident response plan (Req 12.10)SecurityWeeks 2-3IRP document, playbooks

Success Criteria: Core technical controls operational, policies documented, ASV scans scheduled


Phase 2: Operational Controls (Weeks 9-16)

Goal: Implement operational procedures and testing

TaskOwnerTimelineDeliverable
Penetration testing (Req 11.4)SecurityWeeks 9-12Pen test contract, annual schedule
Internal vulnerability scans (Req 11.3.1)SecurityWeeks 9-10Scanner implementation, scan reports
Security awareness training (Req 12.6)HR + SecurityWeeks 10-14Training program, attendance records
Quarterly access reviews (Req 7.2.4)SecurityWeeks 12-13Access review process, first review
Daily log review process (Req 10.6)SecOpsWeeks 14-15Review procedures, tracking system
Vendor management (Req 12.8)Procurement + SecurityWeeks 10-16Vendor assessments, contracts

Success Criteria: All operational procedures documented, testing scheduled, first reviews completed


Phase 3: Continuous Compliance (Ongoing)

Goal: Maintain compliance, conduct regular assessments

TaskFrequencyOwnerDeliverable
ASV external scansQuarterlySecurityASV scan reports (passing)
Internal vulnerability scansQuarterlySecurityInternal scan reports
Penetration testingAnnualSecurityPenetration test reports
Risk assessmentsAnnualComplianceRisk assessment report
Access reviewsQuarterlySecurityAccess review records
Log reviewsDailySecOpsLog review tickets
Policy reviewsAnnualCompliance + LegalUpdated policy documents
Security trainingAnnual (new hires: immediate)HRTraining records
Audit Manager evidence collectionContinuousAutomatedEvidence in S3 buckets

Success Criteria: Continuous compliance monitoring, quarterly/annual assessments on schedule, all evidence collected


Testing Status

Production-Tested Controls ✅

ControlTest EnvironmentTest DateStatus
EBS EncryptionProduction2025-Q4✅ Pass
EFS Encryption (at-rest)Production2025-Q4✅ Pass
EFS Encryption (in-transit)Production2025-Q4✅ Pass
S3 EncryptionProduction2025-Q4✅ Pass
RDS EncryptionProduction2025-Q4✅ Pass
TLS/SSL (ALB)Production2025-Q4✅ Pass
VPC Network SegmentationProduction2025-Q4✅ Pass
Security GroupsProduction2025-Q4✅ Pass
IAM Password PolicyProduction2025-Q4✅ Pass
IAM MFA EnforcementProduction2025-Q4✅ Pass
Access Key RotationProduction2025-Q4✅ Pass
CloudTrail LoggingProduction2025-Q4✅ Pass
VPC Flow LogsProduction2025-Q4✅ Pass
ALB Access LogsProduction2025-Q4✅ Pass
GuardDutyProduction2025-Q4✅ Pass
AWS Config (17 rules)Production2025-Q4✅ Pass
Log Retention (1+ year)Production2025-Q4✅ Pass

Not Yet Tested (Implemented) ⚠️

ControlImplementation StatusTest RequirementPriority
Cognito Authentication✅ ImplementedProduction user registration/loginHIGH
Cognito MFA (TOTP)✅ ImplementedMFA enrollment and challengeHIGH
Cognito MFA (SMS)✅ ImplementedSMS MFA flowHIGH
Identity Center MFA✅ ImplementedALB-OIDC with Identity CenterHIGH
WAF Rules✅ ImplementedSQL injection, XSS protectionHIGH
WAF Decision⚠️ OptionalEnable WAF OR document code reviewCRITICAL

Cardholder Data Environment (CDE) Scope

Defining Your CDE

Critical: PCI-DSS applies only to systems that store, process, or transmit cardholder data.

CDE Components:

  1. System Components: Servers, containers, databases that handle cardholder data
  2. Network Components: VPC, subnets, security groups protecting CDE
  3. Connected-to or Security-Affecting Systems: Logging, monitoring, authentication

CloudForge CI CDE Scope:

  • In-Scope: Fargate/EC2 instances running application, EFS storage, ALB, VPC
  • Connected Systems: CloudTrail, GuardDuty, AWS Config, IAM
  • Out-of-Scope: Development environments (if not processing real card data)

Scope Reduction Strategies

  1. Network Segmentation: Isolate CDE from non-CDE systems (✅ implemented via VPC)
  2. Data Flow Minimization: Only transmit PAN where necessary (application responsibility)
  3. Tokenization/P2PE: Use payment processor tokenization (application implementation)
  4. Segmented Environments: Separate dev/test/prod (recommended architecture)

Action Required: Document CDE scope diagram showing all in-scope systems


Maintenance & Updates

Document Review Schedule

Review TypeFrequencyOwnerNext Review
Gap Analysis UpdateQuarterlyCompliance Officer2026-03-19
Control Mapping VerificationQuarterlySecurity Team2026-03-19
Testing Status UpdateMonthlyEngineering Manager2026-01-19
Remediation Roadmap ProgressMonthlyProject Manager2026-01-19
PCI-DSS Framework UpdatesAnnually (or when released)Compliance Officer2026-12-19
v4.0 Mandatory Requirement Check✅ Complete (deadline passed)Compliance OfficerPassed: 2025-03-31

Change Log

VersionDateChangesAuthor
1.02025-12-14Initial comprehensive PCI-DSS gap analysis (v4.0.1)Claude (AI-assisted)
1.12025-12-19Updated review schedule; noted March 31, 2025 v4.0 deadline has passed - all requirements now mandatoryClaude (AI-assisted)
1.22025-12-28Updated WAF requirement from optional to REQUIRED; added evidence references for 34 WAF test cases and validation enforcementClaude (AI-assisted)

PCI-DSS v4.0 Mandatory Requirements (Effective March 31, 2025)

STATUS: ✅ These requirements are now MANDATORY (deadline passed March 31, 2025):

DeadlineRequirementStatus
March 31, 202551 "best practice" requirements now mandatoryVerify all v4.0 requirements are implemented
March 31, 2025Req 8.4.2 - MFA for all CDE accessValidate MFA enforcement for all CDE access
March 31, 2025Req 8.4.3 - MFA replay resistanceVerify TOTP or phishing-resistant MFA in use
March 31, 2025Req 8.5.1 - Phishing-resistant MFA for third parties (if applicable)Verify WebAuthn/FIDO2 MFA implementation

Action Required: Conduct gap assessment to confirm all mandatory v4.0 requirements are fully implemented


References

Official PCI-DSS Documentation

Internal Documentation

Code References


Appendix: Quick Reference

PCI-DSS Compliance Checklist

Infrastructure Controls (Automated) ✅

  • Req 1: VPC, security groups, network segmentation
  • Req 2: Secure configurations, minimal services
  • Req 3.4: Encryption at rest (EBS, EFS, S3, RDS)
  • Req 4.1: Encryption in transit (TLS 1.2+)
  • Req 7: IAM access control, least privilege
  • Req 8: IAM password policy, MFA enforcement
  • Req 10: CloudTrail, Flow Logs, ALB logs (1+ year retention)
  • Req 11.5: GuardDuty intrusion detection

Application-Level Controls (Manual) ❌

  • Req 3.1: Data retention policy
  • Req 3.2: No sensitive auth data stored
  • Req 3.3: PAN masking (max 6 digits displayed)
  • Req 4.2: No unencrypted PAN transmission
  • Req 6.2: Secure SDLC, code review

Operational Controls (Manual) ❌

  • Req 5: Anti-malware documentation (or alternative approach)
  • Req 6.4: WAF enabled OR quarterly code review
  • Req 7.2.4: Quarterly access reviews
  • Req 8: MFA testing (Cognito/Identity Center)
  • Req 10.6: Daily log review process
  • Req 11.3: ASV scans (quarterly)
  • Req 11.4: Penetration testing (annual)
  • Req 12: All policies and procedures

Document End

For questions or updates to this document, contact the Security & Compliance Team.

For QSA assessments, provide this document along with evidence artifacts (scan reports, policies, test results).