aws-cis-controls-assessment 1.0.7__tar.gz → 1.0.9__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 (90) hide show
  1. {aws_cis_controls_assessment-1.0.7/aws_cis_controls_assessment.egg-info → aws_cis_controls_assessment-1.0.9}/PKG-INFO +6 -1
  2. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/README.md +5 -0
  3. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/__init__.py +1 -1
  4. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_advanced_security.py +2 -2
  5. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/core/assessment_engine.py +4 -0
  6. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/core/models.py +1 -0
  7. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/core/scoring_engine.py +30 -0
  8. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/reporters/base_reporter.py +2 -0
  9. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/reporters/html_reporter.py +826 -45
  10. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9/aws_cis_controls_assessment.egg-info}/PKG-INFO +6 -1
  11. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_controls_assessment.egg-info/SOURCES.txt +4 -0
  12. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/docs/README.md +1 -0
  13. aws_cis_controls_assessment-1.0.9/docs/dual-scoring-implementation.md +303 -0
  14. aws_cis_controls_assessment-1.0.9/docs/html-report-improvements.md +422 -0
  15. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/docs/installation.md +78 -27
  16. aws_cis_controls_assessment-1.0.9/docs/scoring-comparison-aws-config.md +379 -0
  17. aws_cis_controls_assessment-1.0.9/docs/scoring-methodology.md +350 -0
  18. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/docs/user-guide.md +7 -1
  19. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/LICENSE +0 -0
  20. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/MANIFEST.in +0 -0
  21. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/cli/__init__.py +0 -0
  22. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/cli/examples.py +0 -0
  23. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/cli/main.py +0 -0
  24. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/cli/utils.py +0 -0
  25. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/config/__init__.py +0 -0
  26. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/config/config_loader.py +0 -0
  27. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/config/rules/cis_controls_ig1.yaml +0 -0
  28. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/config/rules/cis_controls_ig2.yaml +0 -0
  29. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/config/rules/cis_controls_ig3.yaml +0 -0
  30. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/__init__.py +0 -0
  31. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/base_control.py +0 -0
  32. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/__init__.py +0 -0
  33. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_1_1.py +0 -0
  34. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_2_2.py +0 -0
  35. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_3_3.py +0 -0
  36. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_3_4.py +0 -0
  37. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_4_1.py +0 -0
  38. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_access_keys.py +0 -0
  39. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_backup_recovery.py +0 -0
  40. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_cloudtrail_logging.py +0 -0
  41. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_critical_security.py +0 -0
  42. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_data_protection.py +0 -0
  43. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_iam_advanced.py +0 -0
  44. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_iam_governance.py +0 -0
  45. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_iam_policies.py +0 -0
  46. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_instance_optimization.py +0 -0
  47. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_network_enhancements.py +0 -0
  48. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_network_security.py +0 -0
  49. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_s3_enhancements.py +0 -0
  50. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_s3_security.py +0 -0
  51. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig1/control_vpc_security.py +0 -0
  52. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig2/__init__.py +0 -0
  53. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig2/control_3_10.py +0 -0
  54. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig2/control_3_11.py +0 -0
  55. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig2/control_5_2.py +0 -0
  56. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig2/control_advanced_encryption.py +0 -0
  57. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig2/control_codebuild_security.py +0 -0
  58. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig2/control_encryption_rest.py +0 -0
  59. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig2/control_encryption_transit.py +0 -0
  60. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig2/control_network_ha.py +0 -0
  61. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig2/control_remaining_encryption.py +0 -0
  62. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig2/control_remaining_rules.py +0 -0
  63. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig2/control_service_logging.py +0 -0
  64. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig3/__init__.py +0 -0
  65. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig3/control_12_8.py +0 -0
  66. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig3/control_13_1.py +0 -0
  67. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig3/control_3_14.py +0 -0
  68. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/controls/ig3/control_7_1.py +0 -0
  69. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/core/__init__.py +0 -0
  70. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/core/accuracy_validator.py +0 -0
  71. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/core/audit_trail.py +0 -0
  72. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/core/aws_client_factory.py +0 -0
  73. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/core/error_handler.py +0 -0
  74. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/reporters/__init__.py +0 -0
  75. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/reporters/csv_reporter.py +0 -0
  76. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_assessment/reporters/json_reporter.py +0 -0
  77. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_controls_assessment.egg-info/dependency_links.txt +0 -0
  78. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_controls_assessment.egg-info/entry_points.txt +0 -0
  79. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_controls_assessment.egg-info/requires.txt +0 -0
  80. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/aws_cis_controls_assessment.egg-info/top_level.txt +0 -0
  81. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/deprecation-package/aws_cis_assessment_deprecated/__init__.py +0 -0
  82. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/docs/assessment-logic.md +0 -0
  83. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/docs/cli-reference.md +0 -0
  84. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/docs/config-rule-mappings.md +0 -0
  85. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/docs/developer-guide.md +0 -0
  86. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/docs/troubleshooting.md +0 -0
  87. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/pyproject.toml +0 -0
  88. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/pytest.ini +0 -0
  89. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/requirements.txt +0 -0
  90. {aws_cis_controls_assessment-1.0.7 → aws_cis_controls_assessment-1.0.9}/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.7
3
+ Version: 1.0.9
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>
@@ -64,6 +64,7 @@ A production-ready, enterprise-grade framework for evaluating AWS account config
64
64
  ## 🎯 Key Features
65
65
 
66
66
  - **✅ Complete Coverage**: 131/131 CIS Controls rules implemented (100% coverage)
67
+ - **✅ Dual Scoring System**: Both weighted and AWS Config-style scoring methodologies
67
68
  - **✅ Enterprise Ready**: Production-tested with enterprise-grade architecture
68
69
  - **✅ Performance Optimized**: Handles large-scale assessments efficiently
69
70
  - **✅ Multi-Format Reports**: JSON, HTML, and CSV with detailed remediation guidance
@@ -208,12 +209,16 @@ aws-cis-assess assess --output-format json
208
209
  - **[Installation Guide](docs/installation.md)**: Detailed installation instructions and requirements
209
210
  - **[User Guide](docs/user-guide.md)**: Comprehensive user manual and best practices
210
211
  - **[CLI Reference](docs/cli-reference.md)**: Complete command-line interface documentation
212
+ - **[Dual Scoring Guide](docs/dual-scoring-implementation.md)**: Weighted vs AWS Config scoring methodologies
213
+ - **[Scoring Methodology](docs/scoring-methodology.md)**: Detailed explanation of weighted scoring
214
+ - **[AWS Config Comparison](docs/scoring-comparison-aws-config.md)**: Comparison with AWS Config approach
211
215
  - **[Troubleshooting Guide](docs/troubleshooting.md)**: Common issues and solutions
212
216
  - **[Developer Guide](docs/developer-guide.md)**: Development and contribution guidelines
213
217
 
214
218
  ### Technical Documentation
215
219
  - **[Assessment Logic](docs/assessment-logic.md)**: How compliance assessments work
216
220
  - **[Config Rule Mappings](docs/config-rule-mappings.md)**: CIS Controls to AWS Config rule mappings
221
+ - **[HTML Report Improvements](docs/html-report-improvements.md)**: Enhanced HTML report features and customization
217
222
 
218
223
  ## 🤝 Support & Community
219
224
 
@@ -7,6 +7,7 @@ A production-ready, enterprise-grade framework for evaluating AWS account config
7
7
  ## 🎯 Key Features
8
8
 
9
9
  - **✅ Complete Coverage**: 131/131 CIS Controls rules implemented (100% coverage)
10
+ - **✅ Dual Scoring System**: Both weighted and AWS Config-style scoring methodologies
10
11
  - **✅ Enterprise Ready**: Production-tested with enterprise-grade architecture
11
12
  - **✅ Performance Optimized**: Handles large-scale assessments efficiently
12
13
  - **✅ Multi-Format Reports**: JSON, HTML, and CSV with detailed remediation guidance
@@ -151,12 +152,16 @@ aws-cis-assess assess --output-format json
151
152
  - **[Installation Guide](docs/installation.md)**: Detailed installation instructions and requirements
152
153
  - **[User Guide](docs/user-guide.md)**: Comprehensive user manual and best practices
153
154
  - **[CLI Reference](docs/cli-reference.md)**: Complete command-line interface documentation
155
+ - **[Dual Scoring Guide](docs/dual-scoring-implementation.md)**: Weighted vs AWS Config scoring methodologies
156
+ - **[Scoring Methodology](docs/scoring-methodology.md)**: Detailed explanation of weighted scoring
157
+ - **[AWS Config Comparison](docs/scoring-comparison-aws-config.md)**: Comparison with AWS Config approach
154
158
  - **[Troubleshooting Guide](docs/troubleshooting.md)**: Common issues and solutions
155
159
  - **[Developer Guide](docs/developer-guide.md)**: Development and contribution guidelines
156
160
 
157
161
  ### Technical Documentation
158
162
  - **[Assessment Logic](docs/assessment-logic.md)**: How compliance assessments work
159
163
  - **[Config Rule Mappings](docs/config-rule-mappings.md)**: CIS Controls to AWS Config rule mappings
164
+ - **[HTML Report Improvements](docs/html-report-improvements.md)**: Enhanced HTML report features and customization
160
165
 
161
166
  ## 🤝 Support & Community
162
167
 
@@ -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.7"
9
+ __version__ = "1.0.9"
10
10
  __author__ = "AWS CIS Assessment Team"
11
11
  __description__ = "Production-ready AWS CIS Controls Compliance Assessment Framework"
@@ -68,8 +68,8 @@ class EC2ManagedInstanceAssociationComplianceStatusCheckAssessment(BaseConfigRul
68
68
  # Get association compliance status
69
69
  try:
70
70
  compliance_response = ssm_client.list_compliance_items(
71
- ResourceId=instance_id,
72
- ResourceType='ManagedInstance'
71
+ ResourceIds=[instance_id],
72
+ ResourceTypes=['ManagedInstance']
73
73
  )
74
74
 
75
75
  compliance_items = compliance_response.get('ComplianceItems', [])
@@ -702,12 +702,16 @@ class AssessmentEngine:
702
702
  # Calculate overall score using scoring engine
703
703
  overall_score = self.scoring_engine.calculate_overall_score(ig_scores)
704
704
 
705
+ # Calculate AWS Config-style unweighted score
706
+ aws_config_score = self.scoring_engine.calculate_aws_config_style_score(ig_scores)
707
+
705
708
  # Create final assessment result
706
709
  assessment_result = AssessmentResult(
707
710
  account_id=account_id,
708
711
  regions_assessed=self.aws_factory.regions.copy(),
709
712
  timestamp=datetime.now(),
710
713
  overall_score=overall_score,
714
+ aws_config_score=aws_config_score, # Add AWS Config score
711
715
  ig_scores=ig_scores,
712
716
  total_resources_evaluated=len(all_results),
713
717
  assessment_duration=self.progress.elapsed_time
@@ -126,6 +126,7 @@ class AssessmentResult:
126
126
  regions_assessed: List[str]
127
127
  timestamp: datetime
128
128
  overall_score: float
129
+ aws_config_score: float = 0.0 # AWS Config Conformance Pack style score
129
130
  ig_scores: Dict[str, IGScore] = field(default_factory=dict)
130
131
  total_resources_evaluated: int = 0
131
132
  assessment_duration: Optional[timedelta] = None
@@ -47,6 +47,36 @@ class ScoringEngine:
47
47
 
48
48
  logger.info("ScoringEngine initialized with control and IG weights")
49
49
 
50
+ def calculate_aws_config_style_score(self, ig_scores: Dict[str, IGScore]) -> float:
51
+ """Calculate compliance score using AWS Config Conformance Pack approach.
52
+
53
+ This is a simple unweighted calculation:
54
+ Score = Total Compliant Resources / Total Resources
55
+
56
+ Args:
57
+ ig_scores: Dictionary of IG scores
58
+
59
+ Returns:
60
+ Unweighted compliance percentage (0-100)
61
+ """
62
+ total_compliant = 0
63
+ total_resources = 0
64
+
65
+ # Sum all compliant and total resources across all IGs and controls
66
+ for ig_score in ig_scores.values():
67
+ for control_score in ig_score.control_scores.values():
68
+ total_compliant += control_score.compliant_resources
69
+ total_resources += control_score.total_resources
70
+
71
+ if total_resources > 0:
72
+ aws_config_score = (total_compliant / total_resources) * 100
73
+ else:
74
+ aws_config_score = 0.0
75
+
76
+ logger.info(f"AWS Config style score: {aws_config_score:.1f}% "
77
+ f"({total_compliant}/{total_resources} resources compliant)")
78
+ return aws_config_score
79
+
50
80
  def calculate_control_score(self, control_id: str, rule_results: List[ComplianceResult],
51
81
  control_title: str = "", implementation_group: str = "") -> ControlScore:
52
82
  """Calculate compliance score for individual CIS Control.
@@ -110,6 +110,8 @@ class ReportGenerator(ABC):
110
110
  },
111
111
  'executive_summary': {
112
112
  'overall_compliance_percentage': compliance_summary.overall_compliance_percentage,
113
+ 'aws_config_style_score': assessment_result.aws_config_score, # Add AWS Config score
114
+ 'score_difference': compliance_summary.overall_compliance_percentage - assessment_result.aws_config_score, # Show difference
113
115
  'ig1_compliance_percentage': compliance_summary.ig1_compliance_percentage,
114
116
  'ig2_compliance_percentage': compliance_summary.ig2_compliance_percentage,
115
117
  'ig3_compliance_percentage': compliance_summary.ig3_compliance_percentage,