Skip to main content

Automated Compliance Features

Overview​

CloudForge CI provides automated compliance enforcement that adapts to your selected compliance frameworks (HIPAA, SOC2, PCI-DSS, GDPR). The system automatically configures security controls, retention policies, and remediation actions based on the strictest requirements of your enabled frameworks.

Key Features​

1. Compliance-Driven Configuration​

  • Automatic Policy Selection: Requirements automatically adapt based on enabled frameworks
  • Strictest-Wins Logic: When multiple frameworks are enabled, the strictest requirement is applied
  • Zero Manual Configuration: No need to manually configure compliance settings

2. Continuous Enforcement​

  • AWS Config Monitoring: Continuously monitors resources for compliance
  • Automatic Remediation: Fixes non-compliant resources without human intervention
  • Persistent Settings: Account-level settings survive stack deletion

3. Audit Trail​

  • Comprehensive Logging: All compliance actions are logged to CloudTrail
  • Lifecycle Management: Automatic log retention and archival based on compliance requirements
  • Version Control: S3 versioning enabled on all compliance buckets

Implemented Features​

Config Recorder Auto-Start​

What It Does: Automatically starts the AWS Config Recorder immediately upon deployment, ensuring compliance monitoring begins without manual intervention.

Why It's Required:

  • SOC2: Requires continuous compliance monitoring from deployment
  • HIPAA: Zero-gap compliance recording for PHI-related resources
  • PCI-DSS: Immediate monitoring of cardholder data environment
  • GDPR: Continuous monitoring for data protection compliance

How It Works:

  1. Config Recorder and Delivery Channel are created via CloudFormation
  2. Custom resource automatically calls StartConfigurationRecorder API
  3. Recording begins immediately upon deployment completion
  4. Idempotent operation - safe to re-run on updates

Technical Details:

// Auto-start implemented via AWS SDK custom resource
AwsSdkCall startRecorderCall = AwsSdkCall.builder()
.service("ConfigService")
.action("startConfigurationRecorder")
.parameters(Map.of("ConfigurationRecorderName", "cloudforge-config-recorder"))
.build();

Benefits:

  • Zero Compliance Gap: No delay between deployment and monitoring
  • Automatic: No manual start command required
  • Idempotent: Safe to re-deploy without side effects
  • Auditable: Start action logged in CloudTrail

Code Location:


S3 Lifecycle Policies​

What It Does: Automatically manages the lifecycle of audit logs and compliance data based on regulatory retention requirements.

How It Works:

  1. System detects which compliance frameworks are enabled
  2. Determines the strictest retention requirement
  3. Configures S3 lifecycle rules with appropriate transitions and expiration

Retention Requirements by Framework:

FrameworkRetention PeriodImmediate AccessArchive Tiers
HIPAA6 years (2190 days)N/AGlacier (90d), Deep Archive (1y)
SOC22 years (730 days)N/AGlacier (90d), Deep Archive (1y)
PCI-DSS1 year (365 days)3 monthsGlacier (90d)
DefaultBased on security profileN/AGlacier (90d), Deep Archive (varies)

Storage Class Transitions:

0-90 days     β†’ S3 Standard (immediate availability for PCI-DSS)
90-365 days β†’ Glacier (cost optimization)
365+ days β†’ Glacier Deep Archive (long-term compliance)
Delete after β†’ Framework-specific retention period

Affected Buckets:

  • CloudTrail audit logs
  • AWS Config compliance data
  • AWS Audit Manager evidence
  • ALB access logs

Code Location:


S3 Bucket Versioning​

What It Does: Enables versioning on all compliance-related S3 buckets to maintain immutable audit trails and prevent accidental deletion.

Why It's Required:

  • HIPAA: Required for audit trail integrity
  • SOC2: Required for evidence preservation
  • PCI-DSS: Required for log file integrity
  • GDPR: Required for data protection and accountability

How It Works: All compliance buckets are created with .versioned(true):

Bucket bucket = Bucket.Builder.create(this, "ComplianceBucket")
.versioned(true) // Required for compliance
.encryption(BucketEncryption.S3_MANAGED)
.blockPublicAccess(BlockPublicAccess.BLOCK_ALL)
.lifecycleRules(lifecycleRules)
.build();

Benefits:

  • Immutability: Previous versions cannot be overwritten
  • Audit Trail: Complete history of all changes
  • Recovery: Ability to restore previous versions
  • Compliance: Meets regulatory requirements for data retention

Code Location:


S3 Versioning Auto-Remediation (Optional)​

What It Does: Automatically enables versioning on S3 buckets that fail the AWS Config versioning compliance check.

Configuration: This feature is optional and can be enabled via deployment context:

{
"enableS3VersioningRemediation": true,
"scopeConfigRulesToDeployment": true
}

Configuration Options:

ParameterDefaultDescription
enableS3VersioningRemediationfalseEnable automatic versioning remediation
scopeConfigRulesToDeploymentfalseOnly monitor buckets from this stack

How It Works:

  1. AWS Config Rule: Monitors S3 bucket versioning (all buckets or scoped to stack)
  2. Detection: Config rule detects buckets without versioning enabled
  3. Automatic Remediation: SSM Automation enables versioning on the bucket
  4. Verification: Config re-evaluates and confirms compliance

Scoping Behavior:

  • Default (scopeConfigRulesToDeployment=false): Monitors ALL S3 buckets in the account

    • Useful for organization-wide compliance enforcement
    • May report non-compliant buckets from other projects
  • Scoped (scopeConfigRulesToDeployment=true): Only monitors buckets created by this CloudFormation stack

    • Uses CloudFormation tag: aws:cloudformation:stack-name
    • Only shows compliance for this specific deployment
    • Useful for focused compliance reporting

AWS Services Used:

  • AWS Config: Monitors S3 bucket versioning
  • AWS Systems Manager: Executes remediation using AWS-ConfigureS3BucketVersioning
  • Amazon S3: Updates bucket versioning configuration

Remediation Settings:

  • Mode: Automatic (no manual approval required)
  • Max Attempts: 5
  • Retry Interval: 60 seconds

Important Considerations:

⚠️ Cost Implications: Enabling versioning increases storage costs as S3 retains all object versions

⚠️ Irreversible: Once enabled, versioning cannot be fully disabled (only suspended)

⚠️ Storage Growth: Versioned objects consume additional storage for each version

Best Practices:

  1. Enable scoping for development/testing environments
  2. Use organization-wide monitoring for production compliance
  3. Configure lifecycle policies to manage version retention
  4. Monitor storage costs when enabling automatic remediation

Code Location:

Example Deployment Logs:

S3 versioning rule scoped to stack: jenkinsTSoc
S3 bucket versioning automatic remediation enabled
SSM Document: AWS-ConfigureS3BucketVersioning
Mode: Automatic (enables versioning on non-compliant buckets)
WARNING: This has cost implications - versioned objects consume additional storage
Max attempts: 5, Retry interval: 60 seconds

IAM Password Policy Auto-Remediation​

What It Does: Automatically enforces IAM password policy requirements based on compliance frameworks using AWS Config and AWS Systems Manager.

How It Works:

  1. AWS Config Rule: Monitors IAM password policy compliance
  2. Detection: Config rule detects missing or non-compliant policy
  3. Automatic Remediation: SSM Automation document updates the policy
  4. Verification: Config re-evaluates and confirms compliance

Password Requirements by Framework:

FrameworkMin LengthMax AgeReuse PreventionComplexity
HIPAA14 characters90 days24 passwordsAll required†
SOC212 characters90 days12 passwordsAll required†
PCI-DSS8 characters90 days4 passwordsAll required†
Default (PROD)14 characters90 days12 passwordsAll required†
Default (STAGING/DEV)12 characters90 days12 passwordsAll required†

† Complexity requirements include:

  • Uppercase letters (A-Z)
  • Lowercase letters (a-z)
  • Numbers (0-9)
  • Symbols (!@#$%^&*)

AWS Services Used:

  • AWS Config: Monitors password policy compliance
  • AWS Systems Manager: Executes remediation using AWSConfigRemediation-SetIAMPasswordPolicy
  • IAM: Updates account password policy

Remediation Settings:

  • Mode: Automatic (no manual approval required)
  • Max Attempts: 5
  • Retry Interval: 60 seconds
  • Persistence: Account-level setting survives stack deletion

Code Location:

Example Deployment Logs:

IAM password policy requirements (HIPAA):
Minimum length: 14 characters
Max password age: 90 days
Password reuse prevention: 24 passwords
Complexity: Uppercase, lowercase, numbers, symbols required

IAM password policy automatic remediation enabled
SSM Document: AWSConfigRemediation-SetIAMPasswordPolicy
Mode: Automatic (fixes non-compliant policies immediately)
Max attempts: 5, Retry interval: 60 seconds

Configuration​

Enabling Compliance Frameworks​

Configure compliance frameworks in your deployment context:

DeploymentContext cfc = new DeploymentContext();
cfc.put("complianceFrameworks", "HIPAA,SOC2,PCI-DSS");

Supported Values:

  • HIPAA - Health Insurance Portability and Accountability Act
  • SOC2 - Service Organization Control 2
  • PCI-DSS (or PCIDSS) - Payment Card Industry Data Security Standard
  • GDPR - General Data Protection Regulation

Multiple Frameworks: Separate multiple frameworks with commas:

cfc.put("complianceFrameworks", "HIPAA,PCI-DSS,SOC2");

When multiple frameworks are enabled, the strictest requirement is automatically applied.


Compliance Matrix​

Feature Coverage by Framework​

FeatureHIPAASOC2PCI-DSSImplementation
S3 Retentionβœ… 6 yearsβœ… 2 yearsβœ… 1 yearAuto-lifecycle
S3 Versioningβœ… Requiredβœ… Requiredβœ… RequiredEnabled by default
S3 Encryptionβœ… S3-managedβœ… S3-managedβœ… S3-managedSSE-S3
Password Lengthβœ… 14 charsβœ… 12 charsβœ… 8 charsConfig + SSM
Password Complexityβœ… Allβœ… Allβœ… AllConfig + SSM
Password Rotationβœ… 90 daysβœ… 90 daysβœ… 90 daysConfig + SSM
Password Reuseβœ… 24βœ… 12βœ… 4Config + SSM
Auto-Remediationβœ… Enabledβœ… Enabledβœ… EnabledAWS Config
CloudTrail Loggingβœ… All eventsβœ… All eventsβœ… All eventsAdvanced selectors
ALB Access Logsβœ… Requiredβœ… Requiredβœ… RequiredS3 bucket
Encryption in Transitβœ… TLS 1.2+βœ… TLS 1.2+βœ… TLS 1.2+ALB listener

Monitoring and Verification​

Checking Compliance Status​

View Config Rule Compliance:

aws configservice describe-compliance-by-config-rule \
--config-rule-names $(aws configservice describe-config-rules \
--query 'ConfigRules[*].ConfigRuleName' --output text)

Check Password Policy:

aws iam get-account-password-policy

View S3 Bucket Lifecycle:

aws s3api get-bucket-lifecycle-configuration --bucket <bucket-name>

Check S3 Bucket Versioning:

aws s3api get-bucket-versioning --bucket <bucket-name>

AWS Config Dashboard​

  1. Navigate to AWS Config in AWS Console
  2. Select Rules to view compliance status
  3. Click on specific rules to see:
    • Compliance timeline
    • Non-compliant resources
    • Remediation history

CloudWatch Alarms​

Compliance-related alarms are created with SNS notifications:

  • ALB 5xx errors
  • ALB 4xx errors
  • High response times

Subscribe to the SNS topic to receive alerts:

aws sns subscribe \
--topic-arn arn:aws:sns:region:account:alb-alarms-production \
--protocol email \
--notification-endpoint your-email@example.com

Troubleshooting​

Password Policy Not Applied​

Symptom: IAM password policy Config rule shows NON_COMPLIANT

Possible Causes:

  1. SSM Automation role lacks permissions
  2. Remediation configuration not created
  3. Manual policy changes override automation

Solution:

  1. Check SSM Automation execution:

    aws ssm describe-automation-executions \
    --filters Key=DocumentName,Values=AWSConfigRemediation-SetIAMPasswordPolicy
  2. Manually trigger remediation:

    aws configservice start-remediation-execution \
    --config-rule-name <rule-name> \
    --resource-keys resourceType=AWS::Account,resourceId=<account-id>

S3 Lifecycle Not Applied​

Symptom: Buckets don't have lifecycle rules

Possible Causes:

  1. Compliance frameworks not configured
  2. Bucket created before lifecycle implementation

Solution:

  1. Verify compliance frameworks are set in deployment context
  2. Redeploy stack to apply lifecycle rules to existing buckets
  3. Check deployment logs for lifecycle configuration messages

Config Rules Not Created​

Symptom: AWS Config rules missing after deployment

Possible Causes:

  1. AWS Config not enabled in the account
  2. Config recorder not created
  3. Insufficient IAM permissions

Solution:

  1. Verify AWS Config is enabled:

    aws configservice describe-configuration-recorders
  2. Check deployment logs for Config-related errors

  3. Verify IAM role has config:PutConfigRule permission


Cost Optimization​

S3 Storage Costs​

Lifecycle policies automatically optimize storage costs:

Example Cost Savings (1 TB of logs):

  • Month 1-3 (S3 Standard): $23/month
  • Month 3-12 (Glacier): $4/month
  • Year 2-6 (Deep Archive): $1/month

Annual Savings: ~$200/TB compared to keeping all data in S3 Standard

AWS Config Costs​

  • Rule Evaluations: $0.001 per evaluation
  • Configuration Items: $0.003 per item
  • Estimated Monthly Cost: $20-50 for typical deployment

Cost Reduction Tips:

  • Use periodic evaluation instead of continuous where acceptable
  • Disable rules in DEV environments
  • Archive Config snapshots to S3 Glacier

Security Considerations​

Least Privilege Access​

All remediation actions use dedicated IAM roles with minimal permissions:

Role ssmAutomationRole = Role.Builder.create(this, "RemediationRole")
.assumedBy(new ServicePrincipal("ssm.amazonaws.com"))
.inlinePolicies(Map.of(
"RemediationPermissions",
PolicyDocument.Builder.create()
.statements(List.of(
PolicyStatement.Builder.create()
.effect(Effect.ALLOW)
.actions(List.of("iam:UpdateAccountPasswordPolicy"))
.resources(List.of("*"))
.build()
))
.build()
))
.build();

Audit Trail​

All compliance actions are logged:

  • CloudTrail: API calls and account activity
  • Config Timeline: Resource configuration changes
  • SSM Automation: Remediation execution history

Data Protection​

  • Encryption at Rest: S3-managed encryption (SSE-S3)
  • Encryption in Transit: TLS 1.2+ for all data transfer
  • Access Control: Bucket policies and IAM policies restrict access
  • Versioning: Immutable audit trail

Best Practices​

  1. Enable All Relevant Frameworks: Configure all compliance frameworks your organization must meet
  2. Monitor Regularly: Subscribe to Config rule notifications and review compliance dashboard weekly
  3. Test Before Production: Deploy to staging environment first to verify compliance settings
  4. Document Exceptions: If manual overrides are needed, document them for auditors
  5. Regular Audits: Review Config rule compliance quarterly
  6. Cost Monitoring: Track AWS Config and S3 storage costs using AWS Cost Explorer

Additional Resources​


Support​

For issues or questions: