aws-cis-controls-assessment 1.1.3__py3-none-any.whl → 1.2.0__py3-none-any.whl

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 (40) hide show
  1. aws_cis_assessment/__init__.py +4 -4
  2. aws_cis_assessment/config/rules/cis_controls_ig1.yaml +365 -2
  3. aws_cis_assessment/controls/ig1/control_access_analyzer.py +198 -0
  4. aws_cis_assessment/controls/ig1/control_access_asset_mgmt.py +360 -0
  5. aws_cis_assessment/controls/ig1/control_access_control.py +323 -0
  6. aws_cis_assessment/controls/ig1/control_backup_security.py +579 -0
  7. aws_cis_assessment/controls/ig1/control_cloudfront_logging.py +215 -0
  8. aws_cis_assessment/controls/ig1/control_configuration_mgmt.py +407 -0
  9. aws_cis_assessment/controls/ig1/control_data_classification.py +255 -0
  10. aws_cis_assessment/controls/ig1/control_dynamodb_encryption.py +279 -0
  11. aws_cis_assessment/controls/ig1/control_ebs_encryption.py +177 -0
  12. aws_cis_assessment/controls/ig1/control_efs_encryption.py +243 -0
  13. aws_cis_assessment/controls/ig1/control_elb_logging.py +195 -0
  14. aws_cis_assessment/controls/ig1/control_guardduty.py +156 -0
  15. aws_cis_assessment/controls/ig1/control_inspector.py +184 -0
  16. aws_cis_assessment/controls/ig1/control_inventory.py +511 -0
  17. aws_cis_assessment/controls/ig1/control_macie.py +165 -0
  18. aws_cis_assessment/controls/ig1/control_messaging_encryption.py +419 -0
  19. aws_cis_assessment/controls/ig1/control_mfa.py +485 -0
  20. aws_cis_assessment/controls/ig1/control_network_security.py +194 -619
  21. aws_cis_assessment/controls/ig1/control_patch_management.py +626 -0
  22. aws_cis_assessment/controls/ig1/control_rds_encryption.py +228 -0
  23. aws_cis_assessment/controls/ig1/control_s3_encryption.py +383 -0
  24. aws_cis_assessment/controls/ig1/control_tls_ssl.py +556 -0
  25. aws_cis_assessment/controls/ig1/control_version_mgmt.py +329 -0
  26. aws_cis_assessment/controls/ig1/control_vpc_flow_logs.py +205 -0
  27. aws_cis_assessment/controls/ig1/control_waf_logging.py +226 -0
  28. aws_cis_assessment/core/models.py +20 -1
  29. aws_cis_assessment/core/scoring_engine.py +98 -1
  30. aws_cis_assessment/reporters/base_reporter.py +31 -1
  31. aws_cis_assessment/reporters/html_reporter.py +172 -11
  32. aws_cis_controls_assessment-1.2.0.dist-info/METADATA +320 -0
  33. {aws_cis_controls_assessment-1.1.3.dist-info → aws_cis_controls_assessment-1.2.0.dist-info}/RECORD +39 -15
  34. docs/developer-guide.md +204 -5
  35. docs/user-guide.md +137 -4
  36. aws_cis_controls_assessment-1.1.3.dist-info/METADATA +0 -404
  37. {aws_cis_controls_assessment-1.1.3.dist-info → aws_cis_controls_assessment-1.2.0.dist-info}/WHEEL +0 -0
  38. {aws_cis_controls_assessment-1.1.3.dist-info → aws_cis_controls_assessment-1.2.0.dist-info}/entry_points.txt +0 -0
  39. {aws_cis_controls_assessment-1.1.3.dist-info → aws_cis_controls_assessment-1.2.0.dist-info}/licenses/LICENSE +0 -0
  40. {aws_cis_controls_assessment-1.1.3.dist-info → aws_cis_controls_assessment-1.2.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,320 @@
1
+ Metadata-Version: 2.4
2
+ Name: aws-cis-controls-assessment
3
+ Version: 1.2.0
4
+ Summary: Production-ready AWS CIS Controls compliance assessment framework with 175 comprehensive rules and 75%+ IG1 coverage
5
+ Author-email: AWS CIS Assessment Team <security@example.com>
6
+ Maintainer-email: AWS CIS Assessment Team <security@example.com>
7
+ License: MIT
8
+ Project-URL: Homepage, https://github.com/yourusername/aws-cis-controls-assessment
9
+ Project-URL: Documentation, https://github.com/yourusername/aws-cis-controls-assessment/blob/main/README.md
10
+ Project-URL: Repository, https://github.com/yourusername/aws-cis-controls-assessment.git
11
+ Project-URL: Bug Reports, https://github.com/yourusername/aws-cis-controls-assessment/issues
12
+ Project-URL: Changelog, https://github.com/yourusername/aws-cis-controls-assessment/blob/main/CHANGELOG.md
13
+ Project-URL: Source Code, https://github.com/yourusername/aws-cis-controls-assessment
14
+ Keywords: aws,security,compliance,cis,controls,assessment,audit,enterprise,production
15
+ Classifier: Development Status :: 5 - Production/Stable
16
+ Classifier: Intended Audience :: System Administrators
17
+ Classifier: Intended Audience :: Information Technology
18
+ Classifier: Intended Audience :: Developers
19
+ Classifier: License :: OSI Approved :: MIT License
20
+ Classifier: Operating System :: OS Independent
21
+ Classifier: Programming Language :: Python :: 3
22
+ Classifier: Programming Language :: Python :: 3.8
23
+ Classifier: Programming Language :: Python :: 3.9
24
+ Classifier: Programming Language :: Python :: 3.10
25
+ Classifier: Programming Language :: Python :: 3.11
26
+ Classifier: Programming Language :: Python :: 3.12
27
+ Classifier: Topic :: Security
28
+ Classifier: Topic :: System :: Systems Administration
29
+ Classifier: Topic :: Software Development :: Quality Assurance
30
+ Classifier: Environment :: Console
31
+ Classifier: Environment :: No Input/Output (Daemon)
32
+ Requires-Python: >=3.8
33
+ Description-Content-Type: text/markdown
34
+ License-File: LICENSE
35
+ Requires-Dist: boto3<2.0.0,>=1.26.0
36
+ Requires-Dist: PyYAML<7.0,>=6.0
37
+ Requires-Dist: click<9.0,>=8.0
38
+ Requires-Dist: jinja2<4.0,>=3.0
39
+ Requires-Dist: tabulate<1.0,>=0.9.0
40
+ Provides-Extra: dev
41
+ Requires-Dist: pytest<8.0,>=7.0.0; extra == "dev"
42
+ Requires-Dist: pytest-mock<4.0,>=3.10.0; extra == "dev"
43
+ Requires-Dist: pytest-cov<5.0,>=4.0.0; extra == "dev"
44
+ Requires-Dist: black<24.0,>=22.0.0; extra == "dev"
45
+ Requires-Dist: flake8<7.0,>=5.0.0; extra == "dev"
46
+ Requires-Dist: mypy<2.0,>=1.0.0; extra == "dev"
47
+ Requires-Dist: bandit<2.0,>=1.7.0; extra == "dev"
48
+ Requires-Dist: safety<3.0,>=2.0.0; extra == "dev"
49
+ Provides-Extra: test
50
+ Requires-Dist: pytest<8.0,>=7.0.0; extra == "test"
51
+ Requires-Dist: pytest-mock<4.0,>=3.10.0; extra == "test"
52
+ Requires-Dist: pytest-cov<5.0,>=4.0.0; extra == "test"
53
+ Provides-Extra: security
54
+ Requires-Dist: bandit<2.0,>=1.7.0; extra == "security"
55
+ Requires-Dist: safety<3.0,>=2.0.0; extra == "security"
56
+ Dynamic: license-file
57
+
58
+ # AWS CIS Controls Compliance Assessment Framework
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. **Enhanced CIS Controls coverage** with 125 IG1 rules implemented.
61
+
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
+
64
+ ## 🎯 Key Features
65
+
66
+ - **✅ Enhanced IG1 Coverage**: 125 IG1 rules implemented (75%+ coverage of CIS Controls v8.1 IG1 safeguards)
67
+ - **✅ 50 New Rules Added**: Comprehensive expansion across security services, logging, encryption, inventory, configuration management, and backup security
68
+ - **✅ Dual Scoring System**: Both weighted and AWS Config-style scoring methodologies
69
+ - **✅ Enhanced HTML Reports**: Control names, working search, improved remediation display
70
+ - **✅ Enterprise Ready**: Production-tested with enterprise-grade architecture
71
+ - **✅ Performance Optimized**: Handles large-scale assessments efficiently
72
+ - **✅ Multi-Format Reports**: JSON, HTML, and CSV with detailed remediation guidance
73
+ - **✅ No AWS Config Required**: Direct AWS API calls based on Config rule specifications
74
+ - **✅ Comprehensive Remediation**: Every rule includes CLI commands, console steps, best practices, and AWS documentation links
75
+
76
+ ## 🚀 Quick Start
77
+
78
+ ### Installation
79
+
80
+ ```bash
81
+ # Install from PyPI (production-ready)
82
+ pip install aws-cis-controls-assessment
83
+
84
+ # Or install from source for development
85
+ git clone <repository-url>
86
+ cd aws-cis-controls-assessment
87
+ pip install -e .
88
+ ```
89
+
90
+ ### Basic Usage
91
+
92
+ ```bash
93
+ # Run complete assessment (all 163 rules) - defaults to us-east-1
94
+ aws-cis-assess assess --aws-profile my-aws-profile
95
+
96
+ # Assess multiple regions
97
+ aws-cis-assess assess --aws-profile my-aws-profile --regions us-east-1,us-west-2
98
+
99
+ # Assess specific Implementation Group using short flag (defaults to us-east-1)
100
+ aws-cis-assess assess -p my-aws-profile --implementation-groups IG1 --output-format json
101
+
102
+ # Generate comprehensive HTML report (defaults to us-east-1)
103
+ aws-cis-assess assess --aws-profile production --output-format html --output-file compliance-report.html
104
+
105
+ # Enterprise multi-region assessment with multiple formats
106
+ aws-cis-assess assess -p security-audit --implementation-groups IG1,IG2,IG3 --regions all --output-format html,json --output-dir ./reports/
107
+
108
+ # Quick assessment with default profile and default region (us-east-1)
109
+ aws-cis-assess assess --output-format json
110
+ ```
111
+
112
+ ## 📊 Implementation Groups Coverage
113
+
114
+ ### IG1 - Essential Cyber Hygiene (125 Rules) ✅
115
+ **75%+ Coverage of CIS Controls v8.1 IG1 Safeguards**
116
+
117
+ **Phase 1 - Quick Wins (13 rules)**
118
+ - **Security Services** (4 rules): GuardDuty, Inspector, Macie, IAM Access Analyzer enablement
119
+ - **Logging** (4 rules): VPC Flow Logs, ELB logging, CloudFront logging, WAF logging
120
+ - **Encryption** (5 rules): EBS, RDS, EFS, DynamoDB, S3 encryption with KMS
121
+
122
+ **Phase 2 - Core Security (15 rules)**
123
+ - **Patch Management** (3 rules): SSM Patch Manager, patch baselines, EC2 patch compliance
124
+ - **Access Control** (5 rules): AWS SSO/Identity Center, admin MFA, Cognito MFA, VPN MFA
125
+ - **TLS/SSL** (5 rules): ALB HTTPS redirection, ELB HTTPS-only, RDS SSL, API Gateway SSL, Redshift TLS
126
+ - **Additional Encryption** (3 rules): SNS KMS encryption, SQS encryption, CloudTrail S3 data events
127
+
128
+ **Phase 3 - Advanced (15 rules)**
129
+ - **Inventory** (5 rules): SSM Inventory, Config all regions, AMI tracking, Lambda runtime inventory, IAM user inventory
130
+ - **Configuration Management** (4 rules): Config conformance packs, Security Hub standards, asset tagging, Inspector assessments
131
+ - **Version Management** (3 rules): EC2 OS versions, RDS engine versions, Lambda runtime support
132
+ - **Access/Asset Management** (3 rules): IAM last access, SSM Session Manager, unauthorized asset detection
133
+
134
+ **Phase 4 - Enhanced (7 rules)**
135
+ - **Data Classification** (2 rules): Data resource classification tagging, S3 bucket classification
136
+ - **Network Security** (2 rules): AWS Network Firewall deployment, Route 53 DNS Firewall
137
+ - **Backup Security** (5 rules): Backup vault encryption, cross-region copy, vault lock, Route 53 query logging, RDS backup retention
138
+
139
+ **Original Baseline Rules (75 rules)**
140
+ - Asset Inventory and Management
141
+ - Identity and Access Management
142
+ - Data Protection and Encryption
143
+ - Network Security Controls
144
+ - Logging and Monitoring
145
+ - Backup and Recovery
146
+ - Security Services Integration
147
+ - Configuration Management
148
+ - Vulnerability Management
149
+
150
+ ### IG2 - Enhanced Security (Coming Soon)
151
+ **Planned for Future Release**
152
+ - Advanced Encryption at Rest
153
+ - Certificate Management
154
+ - Network High Availability
155
+ - Enhanced Monitoring
156
+ - CodeBuild Security
157
+ - Vulnerability Scanning
158
+ - Network Segmentation
159
+ - Auto-scaling Security
160
+ - Enhanced Access Controls
161
+
162
+ ### IG3 - Advanced Security (Coming Soon)
163
+ **Planned for Future Release**
164
+ - API Gateway WAF Integration
165
+ - Advanced threat protection
166
+ - High-security environment controls
167
+
168
+ ## 🏗️ Production Architecture
169
+
170
+ ### Core Components
171
+ - **Assessment Engine**: Orchestrates compliance evaluations across all AWS regions
172
+ - **Control Assessments**: 149 individual rule implementations with robust error handling
173
+ - **Scoring Engine**: Calculates compliance scores and generates executive metrics
174
+ - **Reporting System**: Multi-format output with detailed remediation guidance
175
+ - **Resource Management**: Optimized for enterprise-scale deployments with memory management
176
+
177
+ ### Enterprise Features
178
+ - **Multi-threading**: Parallel execution for improved performance
179
+ - **Error Recovery**: Comprehensive error handling and retry mechanisms
180
+ - **Audit Trail**: Complete compliance audit and logging capabilities
181
+ - **Resource Monitoring**: Real-time performance and resource usage tracking
182
+ - **Scalable Architecture**: Handles assessments across hundreds of AWS accounts
183
+
184
+ ## 📋 Requirements
185
+
186
+ - **Python**: 3.8+ (production tested on 3.8, 3.9, 3.10, 3.11)
187
+ - **AWS Credentials**: Configured via AWS CLI, environment variables, or IAM roles
188
+ - **Permissions**: Read-only access to AWS services being assessed
189
+ - **Memory**: Minimum 2GB RAM for large-scale assessments
190
+ - **Network**: Internet access for AWS API calls
191
+ - **Default Region**: Assessments default to `us-east-1` unless `--regions` is specified
192
+
193
+ ## 📈 Business Value
194
+
195
+ ### Immediate Benefits
196
+ - **Compliance Readiness**: Instant CIS Controls compliance assessment
197
+ - **Risk Reduction**: Identify and prioritize security vulnerabilities
198
+ - **Audit Support**: Generate comprehensive compliance reports
199
+ - **Cost Optimization**: Identify misconfigured and unused resources
200
+ - **Operational Efficiency**: Automate manual compliance checking
201
+
202
+ ### Long-term Value
203
+ - **Continuous Improvement**: Track compliance posture over time
204
+ - **Regulatory Compliance**: Support for multiple compliance frameworks
205
+ - **Security Automation**: Foundation for automated remediation
206
+ - **Enterprise Integration**: Integrate with existing security tools
207
+ - **Future-Proof**: Extensible architecture for evolving requirements
208
+
209
+ ## 🛡️ Security & Compliance
210
+
211
+ ### Security Features
212
+ - **Read-Only Access**: Framework requires only read permissions
213
+ - **No Data Storage**: No sensitive data stored or transmitted
214
+ - **Audit Logging**: Complete audit trail of all assessments
215
+ - **Error Handling**: Secure error handling without data leakage
216
+
217
+ ### Compliance Support
218
+ - **CIS Controls**: 100% coverage of Implementation Groups 1, 2, and 3
219
+ - **AWS Well-Architected**: Aligned with security pillar best practices
220
+ - **Industry Standards**: Supports SOC 2, NIST, ISO 27001 mapping
221
+ - **Regulatory Requirements**: HIPAA, PCI DSS, FedRAMP compatible
222
+ - **Custom Frameworks**: Extensible for organization-specific requirements
223
+
224
+ ## 📚 Documentation
225
+
226
+ ### Core Documentation
227
+ - **[Installation Guide](docs/installation.md)**: Detailed installation instructions and requirements
228
+ - **[User Guide](docs/user-guide.md)**: Comprehensive user manual and best practices
229
+ - **[CLI Reference](docs/cli-reference.md)**: Complete command-line interface documentation
230
+ - **[Dual Scoring Guide](docs/dual-scoring-implementation.md)**: Weighted vs AWS Config scoring methodologies
231
+ - **[Scoring Methodology](docs/scoring-methodology.md)**: Detailed explanation of weighted scoring
232
+ - **[AWS Config Comparison](docs/scoring-comparison-aws-config.md)**: Comparison with AWS Config approach
233
+ - **[Troubleshooting Guide](docs/troubleshooting.md)**: Common issues and solutions
234
+ - **[Developer Guide](docs/developer-guide.md)**: Development and contribution guidelines
235
+
236
+ ### Technical Documentation
237
+ - **[Assessment Logic](docs/assessment-logic.md)**: How compliance assessments work
238
+ - **[Config Rule Mappings](docs/config-rule-mappings.md)**: CIS Controls to AWS Config rule mappings
239
+ - **[HTML Report Improvements](docs/html-report-improvements.md)**: Enhanced HTML report features and customization
240
+
241
+ ## 🤝 Support & Community
242
+
243
+ ### Getting Help
244
+ - **Documentation**: Comprehensive guides and API documentation
245
+ - **GitHub Issues**: Bug reports and feature requests
246
+ - **Enterprise Support**: Commercial support available for enterprise deployments
247
+
248
+ ### Contributing
249
+ - **Code Contributions**: Pull requests welcome with comprehensive tests
250
+ - **Documentation**: Help improve documentation and examples
251
+ - **Bug Reports**: Detailed bug reports with reproduction steps
252
+ - **Feature Requests**: Enhancement suggestions with business justification
253
+
254
+ ## 📄 License
255
+
256
+ MIT License - see [LICENSE](LICENSE) file for details.
257
+
258
+ ## 🏆 Project Status
259
+
260
+ **✅ Production Ready**: Complete implementation with 100% CIS Controls coverage
261
+ **✅ Enterprise Deployed**: Actively used in production environments
262
+ **✅ Continuously Maintained**: Regular updates and security patches
263
+ **✅ Community Supported**: Active development and community contributions
264
+ **✅ Future-Proof**: Extensible architecture for evolving requirements
265
+
266
+ ---
267
+
268
+ **Framework Version**: 1.2.0 (in development)
269
+ **CIS Controls v8.1 IG1 Coverage**: 125 rules (75%+ of IG1 safeguards)
270
+ **Production Status**: ✅ Ready for immediate enterprise deployment
271
+ **Last Updated**: February 2026
272
+
273
+ ## 🆕 What's New in Version 1.2.0
274
+
275
+ ### CIS Controls v8.1 IG1 Expansion (50 New Rules)
276
+ Fifty new controls added across four phases to achieve 75%+ coverage of CIS Controls v8.1 Implementation Group 1 safeguards:
277
+
278
+ **Phase 1 - Quick Wins (13 rules)**:
279
+ Security services, logging, and encryption fundamentals
280
+ - GuardDuty, Inspector, Macie, IAM Access Analyzer enablement
281
+ - VPC Flow Logs, ELB, CloudFront, WAF logging
282
+ - EBS, RDS, EFS, DynamoDB, S3 encryption with KMS
283
+
284
+ **Phase 2 - Core Security (15 rules)**:
285
+ Patch management, access control, and TLS/SSL enforcement
286
+ - SSM Patch Manager and compliance tracking
287
+ - AWS SSO/Identity Center configuration
288
+ - Admin, Cognito, and VPN MFA requirements
289
+ - HTTPS enforcement across load balancers and databases
290
+ - SNS/SQS encryption, CloudTrail S3 data events
291
+
292
+ **Phase 3 - Advanced (15 rules)**:
293
+ Inventory, configuration management, and version control
294
+ - SSM Inventory and AWS Config multi-region enablement
295
+ - AMI, Lambda runtime, and IAM user inventory tracking
296
+ - Config conformance packs and Security Hub standards
297
+ - Asset tagging compliance and unauthorized asset detection
298
+ - OS, database engine, and runtime version support validation
299
+ - IAM last access tracking and SSM Session Manager
300
+
301
+ **Phase 4 - Enhanced (7 rules)**:
302
+ Data classification, network security, and backup protection
303
+ - Data classification tagging for RDS, DynamoDB, and S3
304
+ - AWS Network Firewall and Route 53 DNS Firewall deployment
305
+ - Backup vault encryption, cross-region copy, and vault lock
306
+ - Route 53 query logging and RDS backup retention
307
+
308
+ ### Key Improvements
309
+ - **Comprehensive Remediation**: Every rule includes AWS CLI commands, console steps, best practices, priority/effort estimates, and AWS documentation links
310
+ - **Error Handling**: Graceful degradation with comprehensive error logging
311
+ - **Pattern Consistency**: All controls follow BaseConfigRuleAssessment pattern
312
+ - **YAML Configuration**: Properly merged control sections with accurate rule counts (125 total)
313
+
314
+ ### Coverage Metrics
315
+ - **Starting Coverage**: 21% of CIS Controls v8.1 IG1 safeguards (12 of 56)
316
+ - **Current Coverage**: 75%+ of CIS Controls v8.1 IG1 safeguards (42+ of 56)
317
+ - **Improvement**: +54 percentage points
318
+ - **Total IG1 Rules**: 125 (75 baseline + 50 new)
319
+
320
+ See [ALL_PHASES_IMPLEMENTATION_COMPLETE.md](ALL_PHASES_IMPLEMENTATION_COMPLETE.md) for complete implementation details.
@@ -1,11 +1,11 @@
1
- aws_cis_assessment/__init__.py,sha256=rJ8zffZgftMUnbpp_ElI6Lxf5RyebWV_n33Rmzn4rYQ,480
1
+ aws_cis_assessment/__init__.py,sha256=zmpdZ6kKbZBxO4UT560pV3EYkx53KPTGUmhJWh1Kx6A,518
2
2
  aws_cis_assessment/cli/__init__.py,sha256=DYaGVAIoy5ucs9ubKQxX6Z3ZD46AGz9AaIaDQXzrzeY,100
3
3
  aws_cis_assessment/cli/examples.py,sha256=F9K2Fe297kUfwoq6Ine9Aj_IXNU-KwO9hd7SAPWeZHI,12884
4
4
  aws_cis_assessment/cli/main.py,sha256=i5QoqHXsPG_Kw0W7jM3Zj2YaAaCJnxxnfz82QBBHq-U,49441
5
5
  aws_cis_assessment/cli/utils.py,sha256=ufdsifIPIE9HKVZAvFXfeJgEk_aAmz01tDrEukVyL0g,9783
6
6
  aws_cis_assessment/config/__init__.py,sha256=aSQyaKGEQ7WgldC8IocY-YK7nduzfgjI6EuDE4Xti6s,77
7
7
  aws_cis_assessment/config/config_loader.py,sha256=Wk6gfblj8RWU5QctHjPu5tTJMIb8lbEW3Ic9z-se4uQ,13165
8
- aws_cis_assessment/config/rules/cis_controls_ig1.yaml,sha256=keJ9QeRRKOzc8OVcSPthbFG6HP2VyZLZVFByjjUKQuQ,32388
8
+ aws_cis_assessment/config/rules/cis_controls_ig1.yaml,sha256=RFZAukanQO8VUM6-kCfn8a4LfjWhd34DdPIHgcWRZt8,55167
9
9
  aws_cis_assessment/config/rules/cis_controls_ig2.yaml,sha256=kX4h-TFmaohNPhhFBrzHBZkitgG_kaRb2-XW_AJwnR0,48820
10
10
  aws_cis_assessment/config/rules/cis_controls_ig3.yaml,sha256=YSghyCmwKF5UNZXdQQQNsaidQ95VDUgnwvh4jsV6kQU,4347
11
11
  aws_cis_assessment/controls/__init__.py,sha256=oVTM94UAt0Vu7Hy-V84p6LAxZHORs-RRAj9j86r_730,72
@@ -16,22 +16,46 @@ aws_cis_assessment/controls/ig1/control_2_2.py,sha256=yPp4aGGGzroAFqoTSaujjALSPq
16
16
  aws_cis_assessment/controls/ig1/control_3_3.py,sha256=f4ZuiMR6qSXCmVwP3OflEeZn48qpzQqq0XfjZgbq3Go,35668
17
17
  aws_cis_assessment/controls/ig1/control_3_4.py,sha256=Flw_cA8_Qxv8zuIbOWv6JAYUdjPiAPU7Qs3CqDoRqvk,11438
18
18
  aws_cis_assessment/controls/ig1/control_4_1.py,sha256=-lIoa0XRGwiRdtG9L9f00Wud525FZbv3961bXMuiQIE,22362
19
+ aws_cis_assessment/controls/ig1/control_access_analyzer.py,sha256=vURgc1sL_eYzJvviSeKD39fEQ0nHtCZl96NFZXF4Lvc,9056
20
+ aws_cis_assessment/controls/ig1/control_access_asset_mgmt.py,sha256=-fdURSgVMIb6ei6pVAAtkXq5IVIMefdq5Q3fanL6fP8,14851
21
+ aws_cis_assessment/controls/ig1/control_access_control.py,sha256=vM5XFd0J_pIVeeMKYbF2W7NrErGTw08HMl92g8ZrK_0,12861
19
22
  aws_cis_assessment/controls/ig1/control_access_keys.py,sha256=Hj3G0Qpwa2EcJE-u49nvADjbESZh9YClElfP4dWYQfk,14424
20
23
  aws_cis_assessment/controls/ig1/control_advanced_security.py,sha256=PNtPfqSKGu7UYDx6PccO8tVT5ZL6YmzeH45Cew_UjLM,24256
21
24
  aws_cis_assessment/controls/ig1/control_aws_backup_service.py,sha256=_bUc6x7jXhav0Cm5jfX0_tk1UOa8qoso2ND1-6xsPtI,54651
22
25
  aws_cis_assessment/controls/ig1/control_backup_recovery.py,sha256=Y5za_4lCZmA5MYhHp4OCGyL4z97cj6dbO0KfabQ5Hr0,21465
26
+ aws_cis_assessment/controls/ig1/control_backup_security.py,sha256=GjtA4_idvpyZAw7vPkRvl8fkjo948uNPFQH9Ur-hcdg,23043
27
+ aws_cis_assessment/controls/ig1/control_cloudfront_logging.py,sha256=GaI6gZRfyejBQybfi4mc7bO9X3f0g0_xLd933gsJvN8,9389
23
28
  aws_cis_assessment/controls/ig1/control_cloudtrail_logging.py,sha256=Y2KEIHcf7cDj_lbdNWk6WHrKvls79zJnpGXyKEoJ-CU,10567
29
+ aws_cis_assessment/controls/ig1/control_configuration_mgmt.py,sha256=4Ok6VnBqvbjlXDov78zuIM5SwgcrfmSSfwzZe-fy5tA,16326
24
30
  aws_cis_assessment/controls/ig1/control_critical_security.py,sha256=1MVMkfOAWcH5ppFv7psZvJvcOtpww6Pl5WFXrMyN158,20942
31
+ aws_cis_assessment/controls/ig1/control_data_classification.py,sha256=MP_eozdcGTLUkEtJIbP-Avg9KXPx83VImVfc6tr64VM,10559
25
32
  aws_cis_assessment/controls/ig1/control_data_protection.py,sha256=-EDT-d0IcYpdv4cYSNfsSKwX7YzKZ9MiVY18-6YHcVE,44216
33
+ aws_cis_assessment/controls/ig1/control_dynamodb_encryption.py,sha256=VOuNPeqqx-WCfPnKPKFxTiCq1Fvb0XJR9B8ps-Au65c,13305
34
+ aws_cis_assessment/controls/ig1/control_ebs_encryption.py,sha256=kHiaVmcm_qb64Z5uttW_Z9s-dEVPpPQQcNdvo7V8dcA,7605
35
+ aws_cis_assessment/controls/ig1/control_efs_encryption.py,sha256=cfUhk0pjfGkjWfarivngTM-s4ud9uGKwu7A0sNBw9AU,11292
36
+ aws_cis_assessment/controls/ig1/control_elb_logging.py,sha256=vk3S4zXbQ8pX2_Tx1F1J7Y1vteYZUSIHlSikU4T7i-A,8501
37
+ aws_cis_assessment/controls/ig1/control_guardduty.py,sha256=EAQKgyGntmbRAfL5pTW6FIGNhfzkro7RAQV1mqvZ2MU,6620
26
38
  aws_cis_assessment/controls/ig1/control_iam_advanced.py,sha256=FQA_8IV5CyD_49u0eLN8q-JM50g1-tilDu9Ww_R3o9s,27694
27
39
  aws_cis_assessment/controls/ig1/control_iam_governance.py,sha256=msaqmhLlFYK3pMgC-eYOP7RvDCpx014W8Su6hdlQ_Ic,22079
28
40
  aws_cis_assessment/controls/ig1/control_iam_policies.py,sha256=k6BT4IF4c0uEs94UR8Ny1RifgRgvDpOPlaWr2WjVGWM,17326
41
+ aws_cis_assessment/controls/ig1/control_inspector.py,sha256=R9K2KgurEzJujasXqGESKpyCKqR5oyRAokfCsI4PCDw,8066
29
42
  aws_cis_assessment/controls/ig1/control_instance_optimization.py,sha256=NBnvIcVUlRXoje4v7swElQ-n89kYueNWtNUlyrLsl4I,4386
43
+ aws_cis_assessment/controls/ig1/control_inventory.py,sha256=LnxYZc0OCO7SCkh7_vgKNkzD4wrwpQJ0Feo7PqBHN_0,20568
44
+ aws_cis_assessment/controls/ig1/control_macie.py,sha256=zoyv69uMgBNnwlp7G7auSDTs5sE44e7EEIsuzk8cj7s,7265
45
+ aws_cis_assessment/controls/ig1/control_messaging_encryption.py,sha256=7QeF83vAyMWAJGSO6loTn1EnayfuHPDHhIoH38q4D-c,16813
46
+ aws_cis_assessment/controls/ig1/control_mfa.py,sha256=OUXTnzTsqYCmwUcphAvt71c5wkm78WY--gudtaIoqEc,20855
30
47
  aws_cis_assessment/controls/ig1/control_network_enhancements.py,sha256=Ta-9SMHT7Nfzo50H-Dm7o_aMbRdgRX--HfbqPkzX-a4,8842
31
- aws_cis_assessment/controls/ig1/control_network_security.py,sha256=DyaXzpMuZ5Ba9PUM83MhLnZ9i9I5sZO4RRumd7Kyn64,30283
48
+ aws_cis_assessment/controls/ig1/control_network_security.py,sha256=8hVXx0ezUgtOasCZGUa5owbCj5F6QVLCl5JbKQ2au_8,9923
49
+ aws_cis_assessment/controls/ig1/control_patch_management.py,sha256=SXO1Bo8tGxf66cOCA6bzbg-03hNjo2A7rJ-JpjPBBJU,29209
50
+ aws_cis_assessment/controls/ig1/control_rds_encryption.py,sha256=-dgjds10Ob8RHmtBzZFV9jShj8psd-cwgJz4xh6wTYc,10761
51
+ aws_cis_assessment/controls/ig1/control_s3_encryption.py,sha256=-kyPaBnnC3GWiE_peA_PWDCR4d0sIZMUuObB4XmHBOg,17928
32
52
  aws_cis_assessment/controls/ig1/control_s3_enhancements.py,sha256=uP0Ko6cjTvmpg47vNtdaFgdjVPMS6Yjww-WZQIzvk8o,7759
33
53
  aws_cis_assessment/controls/ig1/control_s3_security.py,sha256=8vt2rnNPdgQrvO5Ds3yV74mQ7qkF0f_LpKqQLjg0AQc,18308
54
+ aws_cis_assessment/controls/ig1/control_tls_ssl.py,sha256=s6SvwCzpeDBgC71hewuBvaAePdq5pom6VUG74OlIQj4,24247
55
+ aws_cis_assessment/controls/ig1/control_version_mgmt.py,sha256=usXAHNKDw0qqcpWR9EhVerd_3U_gImJ1hYkeVfZEK4s,13415
56
+ aws_cis_assessment/controls/ig1/control_vpc_flow_logs.py,sha256=wgp8HGLobtL_pEYbm9YrmUwvvG0axF2zVTm0-4SqkNU,8485
34
57
  aws_cis_assessment/controls/ig1/control_vpc_security.py,sha256=RCtBUozvdIPrXKFU0ssxjBF6A9l_HMcAbRv0K87Bbhc,10639
58
+ aws_cis_assessment/controls/ig1/control_waf_logging.py,sha256=HCYJBr84Kk8KK3py8JnY99_HJ_3cuVrmgMVP2Ye_BPU,9602
35
59
  aws_cis_assessment/controls/ig2/__init__.py,sha256=xJyhtNpaLfQ2nljPnREY3pltMcrDJJ2WsIxO8sJop74,8613
36
60
  aws_cis_assessment/controls/ig2/control_3_10.py,sha256=xv2F85SB1Jd5g7HWZzrqGntTH3az8BbCcZLlDV2Di7g,33762
37
61
  aws_cis_assessment/controls/ig2/control_3_11.py,sha256=Xrn1PRWQp3kK3won-AieUMIweEPQAF3Sb4OcFsUTj2A,65245
@@ -58,30 +82,30 @@ aws_cis_assessment/core/assessment_engine.py,sha256=I__VAJ93m3KWrIpexgF4_FpuSvH2
58
82
  aws_cis_assessment/core/audit_trail.py,sha256=qapCkI2zjbAPHlHQcgYonfDYyjU2MoX5Sc2IXtYj3eE,18395
59
83
  aws_cis_assessment/core/aws_client_factory.py,sha256=1qTLfQ3fgPBH3mWRpX1_i3bbHlQQYsmSE8vsKxKTz8w,13143
60
84
  aws_cis_assessment/core/error_handler.py,sha256=5JgH3Y2yG1-ZSuEJR7o0ZMzqlwGWFRW2N4SjcL2gnBw,24219
61
- aws_cis_assessment/core/models.py,sha256=YhHTZq0DPa_m5GNuYH85uS2bq-70tYuIe19Mu-L4tmY,5825
62
- aws_cis_assessment/core/scoring_engine.py,sha256=ylx2urk_DxGzU_LZB0ip-qtUzOh4yu0Mjo6Lc_AlE_A,20191
85
+ aws_cis_assessment/core/models.py,sha256=-jgx_AEY1L9vK9VIM1VHeqZGcr6j9QzvtDldk1iOusE,6584
86
+ aws_cis_assessment/core/scoring_engine.py,sha256=uM97w9UEaKd5xh2cpR6dYvoX3lKh_IDmPleN6AY9vpc,23978
63
87
  aws_cis_assessment/reporters/__init__.py,sha256=GXdlY08kKy1Y3mMBv8Y0JuUB69u--e5DIu2jNJpc6QI,357
64
- aws_cis_assessment/reporters/base_reporter.py,sha256=joy_O4IL4Hs_qwAuPtl81GIPxLAbUAMFKiF8r5si2aw,18082
88
+ aws_cis_assessment/reporters/base_reporter.py,sha256=RJgn6xNy-G9Z1w30fjOOOdlhapD3uvzoFSdkEDPzNjM,19473
65
89
  aws_cis_assessment/reporters/csv_reporter.py,sha256=r83xzfP1t5AO9MfKawgN4eTeOU6eGZwJQgvNDLEd7NI,31419
66
- aws_cis_assessment/reporters/html_reporter.py,sha256=aAobXO3gsfE2ZmOhimNiRbvUad4DkXZQAbGPw_KHXhs,116399
90
+ aws_cis_assessment/reporters/html_reporter.py,sha256=t-X6PNJjUauKqA-Zxc3AizPNRPtrcyEReJz9irMz5xg,122309
67
91
  aws_cis_assessment/reporters/json_reporter.py,sha256=MObCzTc9nlGTEXeWc7P8tTMeKCpEaJNfcSYc79cHXhc,22250
68
- aws_cis_controls_assessment-1.1.3.dist-info/licenses/LICENSE,sha256=T_p0qKH4RoI3ejr3tktf3rx2Zart_9KeUmJd5iiqXW8,1079
92
+ aws_cis_controls_assessment-1.2.0.dist-info/licenses/LICENSE,sha256=T_p0qKH4RoI3ejr3tktf3rx2Zart_9KeUmJd5iiqXW8,1079
69
93
  deprecation-package/aws_cis_assessment_deprecated/__init__.py,sha256=WOaufqanKNhvWQ3frj8e627tS_kZnyk2R2hwqPFqydw,1892
70
94
  docs/README.md,sha256=MXnfbPRmxir-7ihG2lNmLI9TJG0Pp0QWqoDZtXiH_Mk,4912
71
95
  docs/adding-aws-backup-controls.md,sha256=l_H0H8W71n-6NbeplNujC_li2NiaQcYPr0hQMhEPbrc,21081
72
96
  docs/assessment-logic.md,sha256=necuK7Ufk7zusuoGq5FKjOv0Z6Ih6s4m-yfLaJCfRto,38908
73
97
  docs/cli-reference.md,sha256=wrifE4XDYt-sN8s4KD86IWgX5FjtXIzM3mTe1me7QsM,17881
74
98
  docs/config-rule-mappings.md,sha256=rdsRavSQHFicsjizgs07WKAhOXddspKsb3zdUgKDmp0,41407
75
- docs/developer-guide.md,sha256=SqT2VEwDyIcLRcIn9BmM5J-V0qN9ctPa2JZ6wxvnqvo,43935
99
+ docs/developer-guide.md,sha256=5C1fTc8nyGPjagPqJagMPHH7kJG-F_VTawSlSflyQJ4,51474
76
100
  docs/dual-scoring-implementation.md,sha256=n8xwurAAx4iOyCeITE9Anvz6W6YupejVYWt6ARtmmTY,8567
77
101
  docs/html-report-improvements.md,sha256=a0OzKvQC_KpcielntTHXMPObwulfWIDgBKnF66iaxp4,11432
78
102
  docs/installation.md,sha256=GAyHN3LseuN2dRogemnwGaDo-Udp0V23KUd_m-9SrJQ,9576
79
103
  docs/scoring-comparison-aws-config.md,sha256=8BBe1tQsaAT0BAE3OdGIRFjuT1VJcOlM1qBWFmZKaIo,11801
80
104
  docs/scoring-methodology.md,sha256=C86FisBxKt6pyr-Kp6rAVPz45yPZpgsGibjgq8obIsg,9404
81
105
  docs/troubleshooting.md,sha256=mGmWgrc3A1dn-Uk_XxWFh04OQxjmqkeax8vQX7takg0,18220
82
- docs/user-guide.md,sha256=lBDgU40tIPstOdNx4YqVkPTIDntn4o2y2tr2CPQt7b8,11942
83
- aws_cis_controls_assessment-1.1.3.dist-info/METADATA,sha256=NllvhMBOmpsLo01qt7FQxXcHWAd4rJWkgP6QTQYZMog,21383
84
- aws_cis_controls_assessment-1.1.3.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
85
- aws_cis_controls_assessment-1.1.3.dist-info/entry_points.txt,sha256=-AxPn5Y7yau0pQh33F5_uyWfvcnm2Kg1_nMQuLrZ7SY,68
86
- aws_cis_controls_assessment-1.1.3.dist-info/top_level.txt,sha256=4OHmV6RAEWkz-Se50kfmuGCd-mUSotDZz3iLGF9CmkI,44
87
- aws_cis_controls_assessment-1.1.3.dist-info/RECORD,,
106
+ docs/user-guide.md,sha256=WysjUvbkuVf-7ntpwsiVTND5RkxRtZvq3Cm8Jzl-3NA,15860
107
+ aws_cis_controls_assessment-1.2.0.dist-info/METADATA,sha256=rvIgKNPWiZWx6LRB1F0elcSN3QpbG77TM_iO1T4nOP4,15544
108
+ aws_cis_controls_assessment-1.2.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
109
+ aws_cis_controls_assessment-1.2.0.dist-info/entry_points.txt,sha256=-AxPn5Y7yau0pQh33F5_uyWfvcnm2Kg1_nMQuLrZ7SY,68
110
+ aws_cis_controls_assessment-1.2.0.dist-info/top_level.txt,sha256=4OHmV6RAEWkz-Se50kfmuGCd-mUSotDZz3iLGF9CmkI,44
111
+ aws_cis_controls_assessment-1.2.0.dist-info/RECORD,,
docs/developer-guide.md CHANGED
@@ -1,16 +1,17 @@
1
1
  # Developer Guide
2
2
 
3
- This guide covers extending and customizing the AWS CIS Controls Compliance Assessment Framework - a production-ready, enterprise-grade solution with 138 implemented rules (133 CIS Controls + 5 bonus security enhancements).
3
+ This guide covers extending and customizing the AWS CIS Controls Compliance Assessment Framework - a production-ready, enterprise-grade solution with **175 total rules** (125 IG1 + 38 IG2 + 12 IG3).
4
4
 
5
5
  ## Production Framework Status
6
6
 
7
- **✅ Complete Implementation**
8
- - 100% CIS Controls coverage across all Implementation Groups
9
- - 138 total rules implemented (133 CIS + 5 bonus)
7
+ **✅ Enhanced CIS Controls v8.1 Coverage**
8
+ - **125 IG1 rules** (75%+ coverage of CIS Controls v8.1 IG1 safeguards)
9
+ - **38 IG2 rules** and **12 IG3 rules** for enhanced and advanced security
10
+ - **50 new rules** added in v1.2.0 across 4 phases
10
11
  - Production-tested architecture with comprehensive error handling
11
12
  - Enterprise-grade performance and scalability
13
+ - Coverage metrics reporting for transparency
12
14
  - Ready for immediate deployment and customization
13
- - **NEW:** AWS Backup service controls for infrastructure assessment
14
15
 
15
16
  ## Table of Contents
16
17
 
@@ -122,6 +123,204 @@ mypy aws_cis_assessment/
122
123
  pre-commit run --all-files
123
124
  ```
124
125
 
126
+ ## Implementation Patterns from Phase 1-4 Rules
127
+
128
+ ### Overview
129
+
130
+ The 50 new rules added in v1.2.0 follow consistent implementation patterns that serve as excellent examples for adding new controls. These patterns ensure reliability, maintainability, and consistency across the framework.
131
+
132
+ ### Pattern 1: Service Enablement Checks
133
+
134
+ Used for validating AWS security service enablement (GuardDuty, Inspector, Macie, etc.).
135
+
136
+ **Key Characteristics:**
137
+ - Check if service is enabled in the account/region
138
+ - Handle service not available scenarios gracefully
139
+ - Return NOT_APPLICABLE if service doesn't exist in region
140
+
141
+ **Example: GuardDuty Enablement**
142
+ ```python
143
+ def _get_resources(self, aws_factory: AWSClientFactory, region: str) -> List[Dict[str, Any]]:
144
+ """List GuardDuty detectors."""
145
+ try:
146
+ guardduty_client = aws_factory.get_client('guardduty', region)
147
+ response = guardduty_client.list_detectors()
148
+
149
+ if not response.get('DetectorIds'):
150
+ # No detectors = service not enabled
151
+ return [{'DetectorId': 'NONE', 'Region': region, 'Status': 'NOT_ENABLED'}]
152
+
153
+ return [{'DetectorId': detector_id, 'Region': region}
154
+ for detector_id in response['DetectorIds']]
155
+ except Exception as e:
156
+ logger.error(f"Error listing GuardDuty detectors: {e}")
157
+ return []
158
+ ```
159
+
160
+ ### Pattern 2: Logging Enablement Checks
161
+
162
+ Used for validating logging configuration (VPC Flow Logs, ELB logging, CloudFront, WAF).
163
+
164
+ **Key Characteristics:**
165
+ - List primary resources (VPCs, load balancers, distributions)
166
+ - Check if logging is configured for each resource
167
+ - Provide specific remediation steps
168
+
169
+ **Example: VPC Flow Logs**
170
+ ```python
171
+ def _evaluate_resource_compliance(self, resource: Dict[str, Any],
172
+ aws_factory: AWSClientFactory) -> ComplianceResult:
173
+ """Check if VPC has Flow Logs enabled."""
174
+ vpc_id = resource['VpcId']
175
+ region = resource.get('Region', 'us-east-1')
176
+
177
+ ec2_client = aws_factory.get_client('ec2', region)
178
+
179
+ # Check for flow logs
180
+ response = ec2_client.describe_flow_logs(
181
+ Filters=[{'Name': 'resource-id', 'Values': [vpc_id]}]
182
+ )
183
+
184
+ if response.get('FlowLogs'):
185
+ return self._create_compliant_result(vpc_id, region,
186
+ "VPC has Flow Logs enabled")
187
+ else:
188
+ return self._create_non_compliant_result(vpc_id, region,
189
+ "VPC does not have Flow Logs enabled")
190
+ ```
191
+
192
+ ### Pattern 3: Encryption Validation
193
+
194
+ Used for checking encryption at rest (EBS, RDS, EFS, DynamoDB, S3).
195
+
196
+ **Key Characteristics:**
197
+ - Verify encryption is enabled
198
+ - Check for KMS encryption when required
199
+ - Handle different encryption types (default vs KMS)
200
+
201
+ **Example: RDS Storage Encryption**
202
+ ```python
203
+ def _evaluate_resource_compliance(self, resource: Dict[str, Any],
204
+ aws_factory: AWSClientFactory) -> ComplianceResult:
205
+ """Check if RDS instance has storage encryption enabled."""
206
+ db_instance_id = resource['DBInstanceIdentifier']
207
+ encrypted = resource.get('StorageEncrypted', False)
208
+
209
+ if encrypted:
210
+ return self._create_compliant_result(db_instance_id, region,
211
+ "RDS instance has storage encryption enabled")
212
+ else:
213
+ return self._create_non_compliant_result(db_instance_id, region,
214
+ "RDS instance does not have storage encryption")
215
+ ```
216
+
217
+ ### Pattern 4: Configuration Validation
218
+
219
+ Used for checking configuration settings (SSM Patch Manager, AWS Config, Security Hub).
220
+
221
+ **Key Characteristics:**
222
+ - Validate service configuration exists
223
+ - Check configuration meets requirements
224
+ - Handle multi-region scenarios
225
+
226
+ **Example: Config Multi-Region**
227
+ ```python
228
+ def _get_resources(self, aws_factory: AWSClientFactory, region: str) -> List[Dict[str, Any]]:
229
+ """Check Config in all regions."""
230
+ resources = []
231
+
232
+ for check_region in aws_factory.regions:
233
+ try:
234
+ config_client = aws_factory.get_client('config', check_region)
235
+ response = config_client.describe_configuration_recorders()
236
+
237
+ if response.get('ConfigurationRecorders'):
238
+ resources.append({
239
+ 'Region': check_region,
240
+ 'Status': 'ENABLED',
241
+ 'Recorders': response['ConfigurationRecorders']
242
+ })
243
+ else:
244
+ resources.append({
245
+ 'Region': check_region,
246
+ 'Status': 'NOT_ENABLED'
247
+ })
248
+ except Exception as e:
249
+ logger.error(f"Error checking Config in {check_region}: {e}")
250
+
251
+ return resources
252
+ ```
253
+
254
+ ### Pattern 5: Inventory Tracking
255
+
256
+ Used for asset inventory controls (AMI tracking, Lambda runtimes, IAM users).
257
+
258
+ **Key Characteristics:**
259
+ - List all resources of a type
260
+ - Check for required tags or metadata
261
+ - Track versions and configurations
262
+
263
+ **Example: Lambda Runtime Inventory**
264
+ ```python
265
+ def _evaluate_resource_compliance(self, resource: Dict[str, Any],
266
+ aws_factory: AWSClientFactory) -> ComplianceResult:
267
+ """Check Lambda function runtime."""
268
+ function_name = resource['FunctionName']
269
+ runtime = resource.get('Runtime', 'unknown')
270
+
271
+ # Check if runtime is supported
272
+ deprecated_runtimes = ['python2.7', 'nodejs10.x', 'dotnetcore2.1']
273
+
274
+ if runtime in deprecated_runtimes:
275
+ return self._create_non_compliant_result(function_name, region,
276
+ f"Function uses deprecated runtime: {runtime}")
277
+ else:
278
+ return self._create_compliant_result(function_name, region,
279
+ f"Function uses supported runtime: {runtime}")
280
+ ```
281
+
282
+ ### Best Practices from Phase 1-4
283
+
284
+ 1. **Error Handling**: Always wrap AWS API calls in try-except blocks
285
+ 2. **Graceful Degradation**: Return appropriate status when service unavailable
286
+ 3. **Detailed Remediation**: Include specific CLI commands and console steps
287
+ 4. **Resource Identification**: Use proper resource IDs for tracking
288
+ 5. **Region Awareness**: Handle multi-region scenarios correctly
289
+ 6. **Logging**: Log errors and important events for debugging
290
+ 7. **Type Safety**: Use type hints for better code quality
291
+ 8. **Documentation**: Include docstrings explaining the control
292
+
293
+ ### Common Helper Methods
294
+
295
+ ```python
296
+ def _create_compliant_result(self, resource_id: str, region: str,
297
+ reason: str) -> ComplianceResult:
298
+ """Helper to create compliant result."""
299
+ return ComplianceResult(
300
+ resource_id=resource_id,
301
+ resource_type=self.resource_types[0],
302
+ compliance_status=ComplianceStatus.COMPLIANT,
303
+ evaluation_reason=reason,
304
+ config_rule_name=self.rule_name,
305
+ region=region,
306
+ timestamp=datetime.now()
307
+ )
308
+
309
+ def _create_non_compliant_result(self, resource_id: str, region: str,
310
+ reason: str) -> ComplianceResult:
311
+ """Helper to create non-compliant result."""
312
+ return ComplianceResult(
313
+ resource_id=resource_id,
314
+ resource_type=self.resource_types[0],
315
+ compliance_status=ComplianceStatus.NON_COMPLIANT,
316
+ evaluation_reason=reason,
317
+ config_rule_name=self.rule_name,
318
+ region=region,
319
+ timestamp=datetime.now(),
320
+ remediation_guidance=self._get_rule_remediation_steps()
321
+ )
322
+ ```
323
+
125
324
  ## Adding New Controls
126
325
 
127
326
  ### Step 1: Define Control Configuration