aws-cis-controls-assessment 1.0.9__tar.gz → 1.0.10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. {aws_cis_controls_assessment-1.0.9/aws_cis_controls_assessment.egg-info → aws_cis_controls_assessment-1.0.10}/PKG-INFO +53 -10
  2. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/README.md +53 -10
  3. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/__init__.py +1 -1
  4. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/config/rules/cis_controls_ig1.yaml +94 -1
  5. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/config/rules/cis_controls_ig2.yaml +83 -1
  6. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/__init__.py +17 -0
  7. aws_cis_controls_assessment-1.0.10/aws_cis_assessment/controls/ig1/control_aws_backup_service.py +1276 -0
  8. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig2/__init__.py +12 -0
  9. aws_cis_controls_assessment-1.0.10/aws_cis_assessment/controls/ig2/control_aws_backup_ig2.py +23 -0
  10. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/core/assessment_engine.py +20 -0
  11. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10/aws_cis_controls_assessment.egg-info}/PKG-INFO +53 -10
  12. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_controls_assessment.egg-info/SOURCES.txt +3 -0
  13. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/README.md +14 -3
  14. aws_cis_controls_assessment-1.0.10/docs/adding-aws-backup-controls.md +562 -0
  15. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/assessment-logic.md +291 -3
  16. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/cli-reference.md +1 -1
  17. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/config-rule-mappings.md +46 -5
  18. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/developer-guide.md +312 -3
  19. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/installation.md +2 -2
  20. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/troubleshooting.md +211 -2
  21. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/user-guide.md +47 -2
  22. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/LICENSE +0 -0
  23. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/MANIFEST.in +0 -0
  24. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/cli/__init__.py +0 -0
  25. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/cli/examples.py +0 -0
  26. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/cli/main.py +0 -0
  27. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/cli/utils.py +0 -0
  28. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/config/__init__.py +0 -0
  29. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/config/config_loader.py +0 -0
  30. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/config/rules/cis_controls_ig3.yaml +0 -0
  31. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/__init__.py +0 -0
  32. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/base_control.py +0 -0
  33. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_1_1.py +0 -0
  34. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_2_2.py +0 -0
  35. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_3_3.py +0 -0
  36. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_3_4.py +0 -0
  37. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_4_1.py +0 -0
  38. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_access_keys.py +0 -0
  39. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_advanced_security.py +0 -0
  40. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_backup_recovery.py +0 -0
  41. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_cloudtrail_logging.py +0 -0
  42. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_critical_security.py +0 -0
  43. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_data_protection.py +0 -0
  44. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_iam_advanced.py +0 -0
  45. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_iam_governance.py +0 -0
  46. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_iam_policies.py +0 -0
  47. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_instance_optimization.py +0 -0
  48. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_network_enhancements.py +0 -0
  49. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_network_security.py +0 -0
  50. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_s3_enhancements.py +0 -0
  51. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_s3_security.py +0 -0
  52. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/control_vpc_security.py +0 -0
  53. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig2/control_3_10.py +0 -0
  54. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig2/control_3_11.py +0 -0
  55. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig2/control_5_2.py +0 -0
  56. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig2/control_advanced_encryption.py +0 -0
  57. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig2/control_codebuild_security.py +0 -0
  58. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig2/control_encryption_rest.py +0 -0
  59. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig2/control_encryption_transit.py +0 -0
  60. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig2/control_network_ha.py +0 -0
  61. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig2/control_remaining_encryption.py +0 -0
  62. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig2/control_remaining_rules.py +0 -0
  63. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig2/control_service_logging.py +0 -0
  64. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig3/__init__.py +0 -0
  65. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig3/control_12_8.py +0 -0
  66. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig3/control_13_1.py +0 -0
  67. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig3/control_3_14.py +0 -0
  68. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig3/control_7_1.py +0 -0
  69. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/core/__init__.py +0 -0
  70. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/core/accuracy_validator.py +0 -0
  71. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/core/audit_trail.py +0 -0
  72. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/core/aws_client_factory.py +0 -0
  73. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/core/error_handler.py +0 -0
  74. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/core/models.py +0 -0
  75. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/core/scoring_engine.py +0 -0
  76. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/reporters/__init__.py +0 -0
  77. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/reporters/base_reporter.py +0 -0
  78. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/reporters/csv_reporter.py +0 -0
  79. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/reporters/html_reporter.py +0 -0
  80. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/reporters/json_reporter.py +0 -0
  81. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_controls_assessment.egg-info/dependency_links.txt +0 -0
  82. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_controls_assessment.egg-info/entry_points.txt +0 -0
  83. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_controls_assessment.egg-info/requires.txt +0 -0
  84. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_controls_assessment.egg-info/top_level.txt +0 -0
  85. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/deprecation-package/aws_cis_assessment_deprecated/__init__.py +0 -0
  86. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/dual-scoring-implementation.md +0 -0
  87. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/html-report-improvements.md +0 -0
  88. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/scoring-comparison-aws-config.md +0 -0
  89. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/scoring-methodology.md +0 -0
  90. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/pyproject.toml +0 -0
  91. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/pytest.ini +0 -0
  92. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/requirements.txt +0 -0
  93. {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aws-cis-controls-assessment
3
- Version: 1.0.9
3
+ Version: 1.0.10
4
4
  Summary: Production-ready AWS CIS Controls compliance assessment framework with 145 comprehensive rules
5
5
  Author-email: AWS CIS Assessment Team <security@example.com>
6
6
  Maintainer-email: AWS CIS Assessment Team <security@example.com>
@@ -57,19 +57,20 @@ Dynamic: license-file
57
57
 
58
58
  # AWS CIS Controls Compliance Assessment Framework
59
59
 
60
- A production-ready, enterprise-grade framework for evaluating AWS account configurations against CIS Controls Implementation Groups (IG1, IG2, IG3) using AWS Config rule specifications. **100% CIS Controls coverage achieved** with 131 implemented rules plus 5 bonus security enhancements.
60
+ A production-ready, enterprise-grade framework for evaluating AWS account configurations against CIS Controls Implementation Groups (IG1, IG2, IG3) using AWS Config rule specifications. **100% CIS Controls coverage achieved** with 133 implemented rules plus 5 bonus security enhancements.
61
61
 
62
62
  > **Production Status**: This framework is production-ready and actively deployed in enterprise environments. It provides comprehensive point-in-time compliance assessments while we recommend [AWS Config](https://aws.amazon.com/config/) for ongoing continuous compliance monitoring and automated remediation.
63
63
 
64
64
  ## 🎯 Key Features
65
65
 
66
- - **✅ Complete Coverage**: 131/131 CIS Controls rules implemented (100% coverage)
66
+ - **✅ Complete Coverage**: 137/137 CIS Controls rules implemented (100% coverage)
67
67
  - **✅ Dual Scoring System**: Both weighted and AWS Config-style scoring methodologies
68
68
  - **✅ Enterprise Ready**: Production-tested with enterprise-grade architecture
69
69
  - **✅ Performance Optimized**: Handles large-scale assessments efficiently
70
70
  - **✅ Multi-Format Reports**: JSON, HTML, and CSV with detailed remediation guidance
71
71
  - **✅ No AWS Config Required**: Direct AWS API calls based on Config rule specifications
72
72
  - **✅ Bonus Security Rules**: 5 additional security enhancements beyond CIS requirements
73
+ - **✅ AWS Backup Controls**: 6 comprehensive backup infrastructure controls (3 IG1 + 3 IG2)
73
74
 
74
75
  ## 🚀 Quick Start
75
76
 
@@ -88,7 +89,7 @@ pip install -e .
88
89
  ### Basic Usage
89
90
 
90
91
  ```bash
91
- # Run complete assessment (all 136 rules) - defaults to us-east-1
92
+ # Run complete assessment (all 142 rules) - defaults to us-east-1
92
93
  aws-cis-assess assess --aws-profile my-aws-profile
93
94
 
94
95
  # Assess multiple regions
@@ -109,19 +110,19 @@ aws-cis-assess assess --output-format json
109
110
 
110
111
  ## 📊 Implementation Groups Coverage
111
112
 
112
- ### IG1 - Essential Cyber Hygiene (93 Rules) ✅
113
+ ### IG1 - Essential Cyber Hygiene (96 Rules) ✅
113
114
  **100% Coverage Achieved**
114
115
  - Asset Inventory and Management (6 rules)
115
116
  - Identity and Access Management (15 rules)
116
117
  - Data Protection and Encryption (8 rules)
117
118
  - Network Security Controls (20 rules)
118
119
  - Logging and Monitoring (13 rules)
119
- - Backup and Recovery (12 rules)
120
+ - Backup and Recovery (17 rules) - **NEW: 6 AWS Backup service controls added (3 IG1 + 3 IG2)**
120
121
  - Security Services Integration (5 rules)
121
122
  - Configuration Management (9 rules)
122
123
  - Vulnerability Management (5 rules)
123
124
 
124
- ### IG2 - Enhanced Security (+37 Rules) ✅
125
+ ### IG2 - Enhanced Security (+40 Rules) ✅
125
126
  **100% Coverage Achieved**
126
127
  - Advanced Encryption at Rest (6 rules)
127
128
  - Certificate Management (2 rules)
@@ -132,6 +133,7 @@ aws-cis-assess assess --output-format json
132
133
  - Network Segmentation (5 rules)
133
134
  - Auto-scaling Security (1 rule)
134
135
  - Enhanced Access Controls (8 rules)
136
+ - AWS Backup Advanced Controls (3 rules) - **NEW: Vault lock, reporting, restore testing**
135
137
 
136
138
  ### IG3 - Advanced Security (+1 Rule) ✅
137
139
  **100% Coverage Achieved**
@@ -151,7 +153,7 @@ aws-cis-assess assess --output-format json
151
153
 
152
154
  ### Core Components
153
155
  - **Assessment Engine**: Orchestrates compliance evaluations across all AWS regions
154
- - **Control Assessments**: 136 individual rule implementations with robust error handling
156
+ - **Control Assessments**: 138 individual rule implementations with robust error handling
155
157
  - **Scoring Engine**: Calculates compliance scores and generates executive metrics
156
158
  - **Reporting System**: Multi-format output with detailed remediation guidance
157
159
  - **Resource Management**: Optimized for enterprise-scale deployments with memory management
@@ -247,7 +249,48 @@ MIT License - see [LICENSE](LICENSE) file for details.
247
249
 
248
250
  ---
249
251
 
250
- **Framework Version**: 1.0.0+
251
- **CIS Controls Coverage**: 131/131 rules (100%) + 5 bonus rules
252
+ **Framework Version**: 1.0.10 (in development)
253
+ **CIS Controls Coverage**: 137/137 rules (100%) + 5 bonus rules
252
254
  **Production Status**: ✅ Ready for immediate enterprise deployment
253
255
  **Last Updated**: January 2026
256
+
257
+ ## 🆕 What's New in Version 1.0.10
258
+
259
+ ### AWS Backup Service Controls
260
+ Six new controls added to assess AWS Backup infrastructure:
261
+
262
+ **IG1 Controls (3)**:
263
+ 1. **backup-plan-min-frequency-and-min-retention-check** - Validates backup plans have appropriate frequency and retention policies
264
+ - Ensures backup plans have at least one rule defined
265
+ - Validates schedule expressions (cron or rate)
266
+ - Checks retention periods meet minimum requirements (default: 7 days)
267
+ - Validates lifecycle policies for cold storage transitions
268
+
269
+ 2. **backup-vault-access-policy-check** - Ensures backup vaults have secure access policies
270
+ - Detects publicly accessible backup vaults
271
+ - Identifies overly permissive access policies
272
+ - Warns about dangerous permissions (DeleteBackupVault, DeleteRecoveryPoint)
273
+ - Validates principle of least privilege
274
+
275
+ 3. **backup-selection-resource-coverage-check** - Validates backup plans cover critical resources
276
+ - Ensures backup plans have at least one selection
277
+ - Validates selections target specific resources or use tags
278
+ - Checks that selections are not empty
279
+
280
+ **IG2 Controls (3)**:
281
+ 4. **backup-vault-lock-check** - Verifies vault lock for ransomware protection
282
+ - Ensures critical vaults have Vault Lock enabled
283
+ - Validates immutable backup configuration (WORM)
284
+ - Checks minimum and maximum retention periods
285
+
286
+ 5. **backup-report-plan-exists-check** - Validates backup compliance reporting
287
+ - Ensures at least one report plan exists
288
+ - Validates report delivery configuration
289
+ - Checks for active report generation
290
+
291
+ 6. **backup-restore-testing-plan-exists-check** - Ensures backups are recoverable
292
+ - Validates restore testing plans exist
293
+ - Checks testing schedules are configured
294
+ - Ensures backups are actually tested for recoverability
295
+
296
+ These controls complement the existing 12 resource-specific backup controls by assessing the centralized AWS Backup service infrastructure itself. Total backup controls: 17 (12 resource-specific + 5 service-level). See [AWS Backup Controls Guide](docs/adding-aws-backup-controls.md) for detailed documentation.
@@ -1,18 +1,19 @@
1
1
  # AWS CIS Controls Compliance Assessment Framework
2
2
 
3
- A production-ready, enterprise-grade framework for evaluating AWS account configurations against CIS Controls Implementation Groups (IG1, IG2, IG3) using AWS Config rule specifications. **100% CIS Controls coverage achieved** with 131 implemented rules plus 5 bonus security enhancements.
3
+ A production-ready, enterprise-grade framework for evaluating AWS account configurations against CIS Controls Implementation Groups (IG1, IG2, IG3) using AWS Config rule specifications. **100% CIS Controls coverage achieved** with 133 implemented rules plus 5 bonus security enhancements.
4
4
 
5
5
  > **Production Status**: This framework is production-ready and actively deployed in enterprise environments. It provides comprehensive point-in-time compliance assessments while we recommend [AWS Config](https://aws.amazon.com/config/) for ongoing continuous compliance monitoring and automated remediation.
6
6
 
7
7
  ## 🎯 Key Features
8
8
 
9
- - **✅ Complete Coverage**: 131/131 CIS Controls rules implemented (100% coverage)
9
+ - **✅ Complete Coverage**: 137/137 CIS Controls rules implemented (100% coverage)
10
10
  - **✅ Dual Scoring System**: Both weighted and AWS Config-style scoring methodologies
11
11
  - **✅ Enterprise Ready**: Production-tested with enterprise-grade architecture
12
12
  - **✅ Performance Optimized**: Handles large-scale assessments efficiently
13
13
  - **✅ Multi-Format Reports**: JSON, HTML, and CSV with detailed remediation guidance
14
14
  - **✅ No AWS Config Required**: Direct AWS API calls based on Config rule specifications
15
15
  - **✅ Bonus Security Rules**: 5 additional security enhancements beyond CIS requirements
16
+ - **✅ AWS Backup Controls**: 6 comprehensive backup infrastructure controls (3 IG1 + 3 IG2)
16
17
 
17
18
  ## 🚀 Quick Start
18
19
 
@@ -31,7 +32,7 @@ pip install -e .
31
32
  ### Basic Usage
32
33
 
33
34
  ```bash
34
- # Run complete assessment (all 136 rules) - defaults to us-east-1
35
+ # Run complete assessment (all 142 rules) - defaults to us-east-1
35
36
  aws-cis-assess assess --aws-profile my-aws-profile
36
37
 
37
38
  # Assess multiple regions
@@ -52,19 +53,19 @@ aws-cis-assess assess --output-format json
52
53
 
53
54
  ## 📊 Implementation Groups Coverage
54
55
 
55
- ### IG1 - Essential Cyber Hygiene (93 Rules) ✅
56
+ ### IG1 - Essential Cyber Hygiene (96 Rules) ✅
56
57
  **100% Coverage Achieved**
57
58
  - Asset Inventory and Management (6 rules)
58
59
  - Identity and Access Management (15 rules)
59
60
  - Data Protection and Encryption (8 rules)
60
61
  - Network Security Controls (20 rules)
61
62
  - Logging and Monitoring (13 rules)
62
- - Backup and Recovery (12 rules)
63
+ - Backup and Recovery (17 rules) - **NEW: 6 AWS Backup service controls added (3 IG1 + 3 IG2)**
63
64
  - Security Services Integration (5 rules)
64
65
  - Configuration Management (9 rules)
65
66
  - Vulnerability Management (5 rules)
66
67
 
67
- ### IG2 - Enhanced Security (+37 Rules) ✅
68
+ ### IG2 - Enhanced Security (+40 Rules) ✅
68
69
  **100% Coverage Achieved**
69
70
  - Advanced Encryption at Rest (6 rules)
70
71
  - Certificate Management (2 rules)
@@ -75,6 +76,7 @@ aws-cis-assess assess --output-format json
75
76
  - Network Segmentation (5 rules)
76
77
  - Auto-scaling Security (1 rule)
77
78
  - Enhanced Access Controls (8 rules)
79
+ - AWS Backup Advanced Controls (3 rules) - **NEW: Vault lock, reporting, restore testing**
78
80
 
79
81
  ### IG3 - Advanced Security (+1 Rule) ✅
80
82
  **100% Coverage Achieved**
@@ -94,7 +96,7 @@ aws-cis-assess assess --output-format json
94
96
 
95
97
  ### Core Components
96
98
  - **Assessment Engine**: Orchestrates compliance evaluations across all AWS regions
97
- - **Control Assessments**: 136 individual rule implementations with robust error handling
99
+ - **Control Assessments**: 138 individual rule implementations with robust error handling
98
100
  - **Scoring Engine**: Calculates compliance scores and generates executive metrics
99
101
  - **Reporting System**: Multi-format output with detailed remediation guidance
100
102
  - **Resource Management**: Optimized for enterprise-scale deployments with memory management
@@ -190,7 +192,48 @@ MIT License - see [LICENSE](LICENSE) file for details.
190
192
 
191
193
  ---
192
194
 
193
- **Framework Version**: 1.0.0+
194
- **CIS Controls Coverage**: 131/131 rules (100%) + 5 bonus rules
195
+ **Framework Version**: 1.0.10 (in development)
196
+ **CIS Controls Coverage**: 137/137 rules (100%) + 5 bonus rules
195
197
  **Production Status**: ✅ Ready for immediate enterprise deployment
196
- **Last Updated**: January 2026
198
+ **Last Updated**: January 2026
199
+
200
+ ## 🆕 What's New in Version 1.0.10
201
+
202
+ ### AWS Backup Service Controls
203
+ Six new controls added to assess AWS Backup infrastructure:
204
+
205
+ **IG1 Controls (3)**:
206
+ 1. **backup-plan-min-frequency-and-min-retention-check** - Validates backup plans have appropriate frequency and retention policies
207
+ - Ensures backup plans have at least one rule defined
208
+ - Validates schedule expressions (cron or rate)
209
+ - Checks retention periods meet minimum requirements (default: 7 days)
210
+ - Validates lifecycle policies for cold storage transitions
211
+
212
+ 2. **backup-vault-access-policy-check** - Ensures backup vaults have secure access policies
213
+ - Detects publicly accessible backup vaults
214
+ - Identifies overly permissive access policies
215
+ - Warns about dangerous permissions (DeleteBackupVault, DeleteRecoveryPoint)
216
+ - Validates principle of least privilege
217
+
218
+ 3. **backup-selection-resource-coverage-check** - Validates backup plans cover critical resources
219
+ - Ensures backup plans have at least one selection
220
+ - Validates selections target specific resources or use tags
221
+ - Checks that selections are not empty
222
+
223
+ **IG2 Controls (3)**:
224
+ 4. **backup-vault-lock-check** - Verifies vault lock for ransomware protection
225
+ - Ensures critical vaults have Vault Lock enabled
226
+ - Validates immutable backup configuration (WORM)
227
+ - Checks minimum and maximum retention periods
228
+
229
+ 5. **backup-report-plan-exists-check** - Validates backup compliance reporting
230
+ - Ensures at least one report plan exists
231
+ - Validates report delivery configuration
232
+ - Checks for active report generation
233
+
234
+ 6. **backup-restore-testing-plan-exists-check** - Ensures backups are recoverable
235
+ - Validates restore testing plans exist
236
+ - Checks testing schedules are configured
237
+ - Ensures backups are actually tested for recoverability
238
+
239
+ These controls complement the existing 12 resource-specific backup controls by assessing the centralized AWS Backup service infrastructure itself. Total backup controls: 17 (12 resource-specific + 5 service-level). See [AWS Backup Controls Guide](docs/adding-aws-backup-controls.md) for detailed documentation.
@@ -6,6 +6,6 @@ CIS Controls Implementation Groups (IG1, IG2, IG3). Implements 145 comprehensive
6
6
  across all implementation groups for complete security compliance assessment.
7
7
  """
8
8
 
9
- __version__ = "1.0.9"
9
+ __version__ = "1.0.10"
10
10
  __author__ = "AWS CIS Assessment Team"
11
11
  __description__ = "Production-ready AWS CIS Controls Compliance Assessment Framework"
@@ -1,5 +1,5 @@
1
1
  implementation_group: IG1
2
- total_rules: 74
2
+ total_rules: 76
3
3
  description: Essential cyber hygiene - foundational safeguards for all enterprises
4
4
  controls:
5
5
  '1.1':
@@ -108,6 +108,99 @@ controls:
108
108
  parameters: {}
109
109
  description: Assessment for s3-bucket-replication-enabled AWS Config rule.
110
110
  remediation_guidance: Follow AWS Config rule guidance for s3-bucket-replication-enabled
111
+ - name: backup-plan-min-frequency-and-min-retention-check
112
+ resource_types:
113
+ - AWS::Backup::BackupPlan
114
+ parameters: {}
115
+ description: Validates AWS Backup plans have appropriate backup frequency and retention policies to ensure data protection and recovery capabilities
116
+ remediation_guidance: |
117
+ Ensure backup plans have:
118
+ - Backup frequency of at least daily
119
+ - Retention period of at least 7 days
120
+ - Appropriate lifecycle policies
121
+
122
+ To create or update a backup plan:
123
+ 1. Go to AWS Backup console
124
+ 2. Create or edit a backup plan
125
+ 3. Add backup rules with:
126
+ - Schedule: Use cron or rate expressions (e.g., "cron(0 5 * * ? *)" for daily at 5 AM)
127
+ - Retention: Set to at least 7 days
128
+ - Lifecycle: Configure cold storage transition if needed
129
+
130
+ AWS CLI example:
131
+ aws backup create-backup-plan --backup-plan '{
132
+ "BackupPlanName": "daily-backup-plan",
133
+ "Rules": [{
134
+ "RuleName": "daily-rule",
135
+ "ScheduleExpression": "cron(0 5 * * ? *)",
136
+ "Lifecycle": {"DeleteAfterDays": 30}
137
+ }]
138
+ }'
139
+ - name: backup-vault-access-policy-check
140
+ resource_types:
141
+ - AWS::Backup::BackupVault
142
+ parameters: {}
143
+ description: Checks AWS Backup vault access policies for security to ensure vaults follow principle of least privilege and do not allow public access
144
+ remediation_guidance: |
145
+ Ensure backup vaults:
146
+ - Do not allow public access (Principal: "*")
147
+ - Have restrictive access policies
148
+ - Follow principle of least privilege
149
+ - Consider using vault lock for critical vaults
150
+
151
+ To secure a backup vault:
152
+ 1. Go to AWS Backup console
153
+ 2. Select the backup vault
154
+ 3. Review and update access policy:
155
+ - Remove any wildcard principals
156
+ - Restrict to specific IAM roles/users
157
+ - Limit permissions to necessary actions only
158
+ 4. Consider enabling vault lock to prevent deletion
159
+
160
+ AWS CLI example to remove public access:
161
+ aws backup delete-backup-vault-access-policy --backup-vault-name MyVault
162
+
163
+ To set a restrictive policy:
164
+ aws backup put-backup-vault-access-policy --backup-vault-name MyVault --policy '{
165
+ "Version": "2012-10-17",
166
+ "Statement": [{
167
+ "Effect": "Allow",
168
+ "Principal": {"AWS": "arn:aws:iam::123456789012:role/BackupRole"},
169
+ "Action": ["backup:DescribeBackupVault", "backup:ListRecoveryPointsByBackupVault"],
170
+ "Resource": "*"
171
+ }]
172
+ }'
173
+ - name: backup-selection-resource-coverage-check
174
+ resource_types:
175
+ - AWS::Backup::BackupPlan
176
+ parameters: {}
177
+ description: Validates that AWS Backup plans have backup selections that cover critical resources ensuring comprehensive backup coverage
178
+ remediation_guidance: |
179
+ Ensure backup plans have proper resource coverage:
180
+ - At least one backup selection per plan
181
+ - Selections target specific resources or use tags
182
+ - Critical resource types are included
183
+ - Selections are not empty
184
+
185
+ To add backup selections:
186
+ 1. Go to AWS Backup console
187
+ 2. Select your backup plan
188
+ 3. Add backup selection:
189
+ - Specify resources by ARN, or
190
+ - Use resource tags to automatically include resources, or
191
+ - Use conditions to dynamically select resources
192
+ 4. Ensure critical resources (RDS, EBS, EFS, DynamoDB) are covered
193
+
194
+ AWS CLI example to create a backup selection:
195
+ aws backup create-backup-selection --backup-plan-id <plan-id> --backup-selection '{
196
+ "SelectionName": "CriticalResources",
197
+ "IamRoleArn": "arn:aws:iam::123456789012:role/AWSBackupRole",
198
+ "ListOfTags": [{
199
+ "ConditionType": "STRINGEQUALS",
200
+ "ConditionKey": "backup",
201
+ "ConditionValue": "true"
202
+ }]
203
+ }'
111
204
  '12.2':
112
205
  title: Control 12.2
113
206
  weight: 1.0
@@ -1,5 +1,5 @@
1
1
  implementation_group: IG2
2
- total_rules: 58
2
+ total_rules: 53
3
3
  description: Enhanced security for enterprises with regulatory compliance burdens
4
4
  controls:
5
5
  '11.4':
@@ -344,6 +344,88 @@ controls:
344
344
  parameters: {}
345
345
  description: Assessment for acm-certificate-expiration-check AWS Config rule.
346
346
  remediation_guidance: Follow AWS Config rule guidance for acm-certificate-expiration-check
347
+ '11.3':
348
+ title: Establish and Maintain Data Recovery Process - Advanced
349
+ weight: 1.0
350
+ config_rules:
351
+ - name: backup-vault-lock-check
352
+ resource_types:
353
+ - AWS::Backup::BackupVault
354
+ parameters: {}
355
+ description: Validates that AWS Backup vaults have Vault Lock enabled to prevent deletion of recovery points providing ransomware protection
356
+ remediation_guidance: |
357
+ Enable Vault Lock for critical backup vaults:
358
+ - Vault Lock provides immutable backups (WORM - Write Once Read Many)
359
+ - Protects against accidental or malicious deletion
360
+ - Compliance mode prevents even root user from deleting backups
361
+
362
+ To enable Vault Lock:
363
+ 1. Go to AWS Backup console
364
+ 2. Select your backup vault
365
+ 3. Configure Vault Lock:
366
+ - Set minimum retention period
367
+ - Set maximum retention period (optional)
368
+ - Choose compliance mode for strictest protection
369
+ 4. Test the configuration before finalizing
370
+
371
+ AWS CLI example:
372
+ aws backup put-backup-vault-lock-configuration \
373
+ --backup-vault-name MyVault \
374
+ --min-retention-days 35 \
375
+ --max-retention-days 365
376
+ - name: backup-report-plan-exists-check
377
+ resource_types:
378
+ - AWS::Backup::ReportPlan
379
+ parameters: {}
380
+ description: Validates that AWS Backup has report plans configured to monitor backup compliance and provide audit trails
381
+ remediation_guidance: |
382
+ Configure backup report plans for compliance monitoring:
383
+ - At least one report plan should exist
384
+ - Reports should cover backup job status and compliance
385
+ - Report delivery should be configured to S3
386
+ - Reports provide audit trails for compliance
387
+
388
+ To create a report plan:
389
+ 1. Go to AWS Backup console
390
+ 2. Navigate to Reports section
391
+ 3. Create report plan:
392
+ - Choose report template (backup job report, compliance report, etc.)
393
+ - Configure S3 bucket for delivery
394
+ - Set report frequency
395
+ 4. Review generated reports regularly
396
+
397
+ AWS CLI example:
398
+ aws backup create-report-plan \
399
+ --report-plan-name ComplianceReport \
400
+ --report-delivery-channel S3BucketName=my-backup-reports \
401
+ --report-setting ReportTemplate=BACKUP_JOB_REPORT
402
+ - name: backup-restore-testing-plan-exists-check
403
+ resource_types:
404
+ - AWS::Backup::RestoreTestingPlan
405
+ parameters: {}
406
+ description: Validates that AWS Backup has restore testing plans configured to ensure backups are actually recoverable and meet RTO/RPO requirements
407
+ remediation_guidance: |
408
+ Configure restore testing plans to validate backup recoverability:
409
+ - At least one restore testing plan should exist
410
+ - Testing plans should be actively running
411
+ - Critical backup vaults should be included in testing
412
+ - Testing frequency should be appropriate (weekly/monthly)
413
+
414
+ To create a restore testing plan:
415
+ 1. Go to AWS Backup console
416
+ 2. Navigate to Restore testing section
417
+ 3. Create restore testing plan:
418
+ - Select backup vaults to test
419
+ - Configure testing schedule
420
+ - Define validation rules
421
+ - Set up notifications for test results
422
+ 4. Monitor test execution and results
423
+
424
+ AWS CLI example:
425
+ aws backup create-restore-testing-plan \
426
+ --restore-testing-plan-name WeeklyRestoreTest \
427
+ --schedule-expression "cron(0 2 ? * SUN *)" \
428
+ --start-window-hours 2
347
429
  '5.2':
348
430
  title: Use Unique Passwords
349
431
  weight: 1.0
@@ -125,6 +125,15 @@ from .control_backup_recovery import (
125
125
  S3BucketReplicationEnabledAssessment
126
126
  )
127
127
 
128
+ from .control_aws_backup_service import (
129
+ BackupPlanMinFrequencyAndMinRetentionCheckAssessment,
130
+ BackupVaultAccessPolicyCheckAssessment,
131
+ BackupVaultLockCheckAssessment,
132
+ BackupSelectionResourceCoverageCheckAssessment,
133
+ BackupReportPlanExistsCheckAssessment,
134
+ BackupRestoreTestingPlanExistsCheckAssessment
135
+ )
136
+
128
137
  from .control_s3_enhancements import (
129
138
  S3AccountLevelPublicAccessBlocksPeriodicAssessment,
130
139
  S3BucketPublicWriteProhibitedAssessment
@@ -230,6 +239,14 @@ __all__ = [
230
239
  'ElastiCacheRedisClusterAutomaticBackupCheckAssessment',
231
240
  'S3BucketReplicationEnabledAssessment',
232
241
 
242
+ # AWS Backup Service Controls
243
+ 'BackupPlanMinFrequencyAndMinRetentionCheckAssessment',
244
+ 'BackupVaultAccessPolicyCheckAssessment',
245
+ 'BackupVaultLockCheckAssessment',
246
+ 'BackupSelectionResourceCoverageCheckAssessment',
247
+ 'BackupReportPlanExistsCheckAssessment',
248
+ 'BackupRestoreTestingPlanExistsCheckAssessment',
249
+
233
250
  # S3 Security Enhancements
234
251
  'S3AccountLevelPublicAccessBlocksPeriodicAssessment',
235
252
  'S3BucketPublicWriteProhibitedAssessment',