aws-cis-controls-assessment 1.0.7__py3-none-any.whl → 1.0.9__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.
@@ -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,