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.
- {aws_cis_controls_assessment-1.0.9/aws_cis_controls_assessment.egg-info → aws_cis_controls_assessment-1.0.10}/PKG-INFO +53 -10
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/README.md +53 -10
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/__init__.py +1 -1
- {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
- {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
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig1/__init__.py +17 -0
- aws_cis_controls_assessment-1.0.10/aws_cis_assessment/controls/ig1/control_aws_backup_service.py +1276 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig2/__init__.py +12 -0
- aws_cis_controls_assessment-1.0.10/aws_cis_assessment/controls/ig2/control_aws_backup_ig2.py +23 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/core/assessment_engine.py +20 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10/aws_cis_controls_assessment.egg-info}/PKG-INFO +53 -10
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_controls_assessment.egg-info/SOURCES.txt +3 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/README.md +14 -3
- aws_cis_controls_assessment-1.0.10/docs/adding-aws-backup-controls.md +562 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/assessment-logic.md +291 -3
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/cli-reference.md +1 -1
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/config-rule-mappings.md +46 -5
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/developer-guide.md +312 -3
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/installation.md +2 -2
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/troubleshooting.md +211 -2
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/user-guide.md +47 -2
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/LICENSE +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/MANIFEST.in +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/cli/__init__.py +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/cli/examples.py +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/cli/main.py +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/cli/utils.py +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/config/__init__.py +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/config/config_loader.py +0 -0
- {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
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/__init__.py +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/base_control.py +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/controls/ig3/__init__.py +0 -0
- {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
- {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
- {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
- {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
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/core/__init__.py +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/core/accuracy_validator.py +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/core/audit_trail.py +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/core/aws_client_factory.py +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/core/error_handler.py +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/core/models.py +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/core/scoring_engine.py +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/reporters/__init__.py +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/reporters/base_reporter.py +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/reporters/csv_reporter.py +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/reporters/html_reporter.py +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_assessment/reporters/json_reporter.py +0 -0
- {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
- {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
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/aws_cis_controls_assessment.egg-info/requires.txt +0 -0
- {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
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/deprecation-package/aws_cis_assessment_deprecated/__init__.py +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/dual-scoring-implementation.md +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/html-report-improvements.md +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/scoring-comparison-aws-config.md +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/docs/scoring-methodology.md +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/pyproject.toml +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/pytest.ini +0 -0
- {aws_cis_controls_assessment-1.0.9 → aws_cis_controls_assessment-1.0.10}/requirements.txt +0 -0
- {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.
|
|
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
|
|
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**:
|
|
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
|
|
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 (
|
|
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 (
|
|
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 (+
|
|
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**:
|
|
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.
|
|
251
|
-
**CIS Controls Coverage**:
|
|
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
|
|
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**:
|
|
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
|
|
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 (
|
|
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 (
|
|
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 (+
|
|
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**:
|
|
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.
|
|
194
|
-
**CIS Controls Coverage**:
|
|
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
|
+
__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:
|
|
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:
|
|
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',
|