aws-cis-controls-assessment 1.1.2__tar.gz → 1.1.3__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.1.2/aws_cis_controls_assessment.egg-info → aws_cis_controls_assessment-1.1.3}/PKG-INFO +1 -1
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/__init__.py +1 -1
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_cloudtrail_logging.py +42 -6
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/reporters/html_reporter.py +11 -10
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3/aws_cis_controls_assessment.egg-info}/PKG-INFO +1 -1
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/LICENSE +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/MANIFEST.in +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/README.md +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/cli/__init__.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/cli/examples.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/cli/main.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/cli/utils.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/config/__init__.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/config/config_loader.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/config/rules/cis_controls_ig1.yaml +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/config/rules/cis_controls_ig2.yaml +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/config/rules/cis_controls_ig3.yaml +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/__init__.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/base_control.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/__init__.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_1_1.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_2_2.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_3_3.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_3_4.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_4_1.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_access_keys.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_advanced_security.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_aws_backup_service.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_backup_recovery.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_critical_security.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_data_protection.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_iam_advanced.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_iam_governance.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_iam_policies.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_instance_optimization.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_network_enhancements.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_network_security.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_s3_enhancements.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_s3_security.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig1/control_vpc_security.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig2/__init__.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig2/control_3_10.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig2/control_3_11.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig2/control_4_5_6_access_configuration.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig2/control_5_2.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig2/control_8_audit_logging.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig2/control_advanced_encryption.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig2/control_aws_backup_ig2.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig2/control_codebuild_security.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig2/control_encryption_rest.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig2/control_encryption_transit.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig2/control_network_ha.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig2/control_remaining_encryption.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig2/control_remaining_rules.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig2/control_service_logging.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig3/__init__.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig3/control_12_8.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig3/control_13_1.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig3/control_3_14.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/controls/ig3/control_7_1.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/core/__init__.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/core/accuracy_validator.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/core/assessment_engine.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/core/audit_trail.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/core/aws_client_factory.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/core/error_handler.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/core/models.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/core/scoring_engine.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/reporters/__init__.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/reporters/base_reporter.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/reporters/csv_reporter.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_assessment/reporters/json_reporter.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_controls_assessment.egg-info/SOURCES.txt +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_controls_assessment.egg-info/dependency_links.txt +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_controls_assessment.egg-info/entry_points.txt +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_controls_assessment.egg-info/requires.txt +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/aws_cis_controls_assessment.egg-info/top_level.txt +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/deprecation-package/aws_cis_assessment_deprecated/__init__.py +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/README.md +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/adding-aws-backup-controls.md +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/assessment-logic.md +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/cli-reference.md +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/config-rule-mappings.md +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/developer-guide.md +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/dual-scoring-implementation.md +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/html-report-improvements.md +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/installation.md +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/scoring-comparison-aws-config.md +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/scoring-methodology.md +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/troubleshooting.md +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/user-guide.md +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/pyproject.toml +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/pytest.ini +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/requirements.txt +0 -0
- {aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aws-cis-controls-assessment
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.3
|
|
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>
|
|
@@ -6,6 +6,6 @@ CIS Controls Implementation Groups (IG1, IG2, IG3). Implements 163 comprehensive
|
|
|
6
6
|
across all implementation groups for complete security compliance assessment.
|
|
7
7
|
"""
|
|
8
8
|
|
|
9
|
-
__version__ = "1.1.
|
|
9
|
+
__version__ = "1.1.3"
|
|
10
10
|
__author__ = "AWS CIS Assessment Team"
|
|
11
11
|
__description__ = "Production-ready AWS CIS Controls Compliance Assessment Framework"
|
|
@@ -39,8 +39,9 @@ class CloudTrailEnabledAssessment(BaseConfigRuleAssessment):
|
|
|
39
39
|
try:
|
|
40
40
|
cloudtrail_client = aws_factory.get_client('cloudtrail', region)
|
|
41
41
|
|
|
42
|
-
# Get all trails in this region
|
|
43
|
-
|
|
42
|
+
# Get all trails in this region, excluding shadow trails
|
|
43
|
+
# Shadow trails are replications from other regions or organization trails
|
|
44
|
+
response = cloudtrail_client.describe_trails(includeShadowTrails=False)
|
|
44
45
|
trails = response.get('trailList', [])
|
|
45
46
|
|
|
46
47
|
# Get trail status for each trail
|
|
@@ -48,6 +49,13 @@ class CloudTrailEnabledAssessment(BaseConfigRuleAssessment):
|
|
|
48
49
|
for trail in trails:
|
|
49
50
|
trail_name = trail.get('Name', '')
|
|
50
51
|
trail_arn = trail.get('TrailARN', '')
|
|
52
|
+
home_region = trail.get('HomeRegion', '')
|
|
53
|
+
|
|
54
|
+
# Skip shadow trails (trails from other regions or organization trails)
|
|
55
|
+
# These are indicated by HomeRegion being different from current region
|
|
56
|
+
if home_region and home_region != region:
|
|
57
|
+
logger.debug(f"Skipping shadow trail {trail_name} (home region: {home_region}, current region: {region})")
|
|
58
|
+
continue
|
|
51
59
|
|
|
52
60
|
try:
|
|
53
61
|
# Get trail status
|
|
@@ -66,14 +74,22 @@ class CloudTrailEnabledAssessment(BaseConfigRuleAssessment):
|
|
|
66
74
|
'TrailARN': trail_arn,
|
|
67
75
|
'IsLogging': is_logging,
|
|
68
76
|
'IsMultiRegionTrail': trail.get('IsMultiRegionTrail', False),
|
|
77
|
+
'IsOrganizationTrail': trail.get('IsOrganizationTrail', False),
|
|
69
78
|
'IncludeGlobalServiceEvents': trail.get('IncludeGlobalServiceEvents', False),
|
|
70
79
|
'S3BucketName': trail.get('S3BucketName', ''),
|
|
80
|
+
'HomeRegion': home_region,
|
|
71
81
|
'EventSelectors': event_selectors,
|
|
72
82
|
'Region': region
|
|
73
83
|
})
|
|
74
84
|
|
|
75
85
|
except ClientError as e:
|
|
76
|
-
|
|
86
|
+
error_code = e.response.get('Error', {}).get('Code', '')
|
|
87
|
+
|
|
88
|
+
# Only log warning for unexpected errors, not for shadow trails
|
|
89
|
+
if error_code == 'TrailNotFoundException':
|
|
90
|
+
logger.debug(f"Trail {trail_name} not found in {region} - likely a shadow trail or deleted trail")
|
|
91
|
+
else:
|
|
92
|
+
logger.warning(f"Error getting status for trail {trail_name}: {e}")
|
|
77
93
|
continue
|
|
78
94
|
|
|
79
95
|
# Return account-level resource with trail information
|
|
@@ -100,13 +116,33 @@ class CloudTrailEnabledAssessment(BaseConfigRuleAssessment):
|
|
|
100
116
|
if has_active_trails:
|
|
101
117
|
# Check for at least one properly configured trail
|
|
102
118
|
active_trails = [trail for trail in trails if trail['IsLogging']]
|
|
103
|
-
|
|
119
|
+
|
|
120
|
+
# Categorize trails
|
|
121
|
+
org_trails = [t for t in active_trails if t.get('IsOrganizationTrail', False)]
|
|
122
|
+
multi_region_trails = [t for t in active_trails if t.get('IsMultiRegionTrail', False)]
|
|
123
|
+
regional_trails = [t for t in active_trails if not t.get('IsMultiRegionTrail', False)]
|
|
124
|
+
|
|
125
|
+
# Build detailed reason
|
|
126
|
+
trail_details = []
|
|
127
|
+
for trail in active_trails:
|
|
128
|
+
trail_type = []
|
|
129
|
+
if trail.get('IsOrganizationTrail', False):
|
|
130
|
+
trail_type.append("organization")
|
|
131
|
+
if trail.get('IsMultiRegionTrail', False):
|
|
132
|
+
trail_type.append("multi-region")
|
|
133
|
+
else:
|
|
134
|
+
trail_type.append("regional")
|
|
135
|
+
|
|
136
|
+
trail_info = f"{trail['TrailName']} ({', '.join(trail_type)})"
|
|
137
|
+
trail_details.append(trail_info)
|
|
138
|
+
|
|
139
|
+
reason = f"CloudTrail is enabled with {len(active_trails)} active trail(s): {', '.join(trail_details)}"
|
|
104
140
|
|
|
105
141
|
return ComplianceResult(
|
|
106
142
|
resource_id=account_id,
|
|
107
143
|
resource_type="AWS::::Account",
|
|
108
144
|
compliance_status=ComplianceStatus.COMPLIANT,
|
|
109
|
-
evaluation_reason=
|
|
145
|
+
evaluation_reason=reason,
|
|
110
146
|
config_rule_name=self.rule_name,
|
|
111
147
|
region=region
|
|
112
148
|
)
|
|
@@ -115,7 +151,7 @@ class CloudTrailEnabledAssessment(BaseConfigRuleAssessment):
|
|
|
115
151
|
resource_id=account_id,
|
|
116
152
|
resource_type="AWS::::Account",
|
|
117
153
|
compliance_status=ComplianceStatus.NON_COMPLIANT,
|
|
118
|
-
evaluation_reason="CloudTrail is not enabled or no trails are actively logging",
|
|
154
|
+
evaluation_reason="CloudTrail is not enabled or no trails are actively logging in this region",
|
|
119
155
|
config_rule_name=self.rule_name,
|
|
120
156
|
region=region
|
|
121
157
|
)
|
|
@@ -1623,7 +1623,8 @@ class HTMLReporter(ReportGenerator):
|
|
|
1623
1623
|
}}
|
|
1624
1624
|
}});
|
|
1625
1625
|
|
|
1626
|
-
|
|
1626
|
+
// Add UTF-8 BOM to ensure proper encoding in Excel and other tools
|
|
1627
|
+
const blob = new Blob(['\ufeff' + csvContent], {{ type: 'text/csv;charset=utf-8;' }});
|
|
1627
1628
|
const url = window.URL.createObjectURL(blob);
|
|
1628
1629
|
const a = document.createElement('a');
|
|
1629
1630
|
a.href = url;
|
|
@@ -1955,7 +1956,7 @@ class HTMLReporter(ReportGenerator):
|
|
|
1955
1956
|
</div>
|
|
1956
1957
|
</div>
|
|
1957
1958
|
<div class="footer-bottom">
|
|
1958
|
-
<p>©
|
|
1959
|
+
<p>© {datetime.now().year} AWS CIS Assessment Tool. Generated with HTML Reporter v{html_data.get('report_version', '1.1.2')}</p>
|
|
1959
1960
|
</div>
|
|
1960
1961
|
</footer>
|
|
1961
1962
|
"""
|
|
@@ -2509,7 +2510,7 @@ class HTMLReporter(ReportGenerator):
|
|
|
2509
2510
|
resource_rows = ""
|
|
2510
2511
|
for resource in all_resources:
|
|
2511
2512
|
status_class = "compliant" if resource["compliance_status"] == "COMPLIANT" else "non_compliant"
|
|
2512
|
-
|
|
2513
|
+
status_text = "COMPLIANT" if resource["compliance_status"] == "COMPLIANT" else "NON_COMPLIANT"
|
|
2513
2514
|
|
|
2514
2515
|
# Construct pseudo-ARN for CSV export (v1.1.2)
|
|
2515
2516
|
# Format: arn:aws:service:region:account:resource-type/resource-id
|
|
@@ -2523,7 +2524,7 @@ class HTMLReporter(ReportGenerator):
|
|
|
2523
2524
|
<td>{resource['region']}</td>
|
|
2524
2525
|
<td>
|
|
2525
2526
|
<span class="badge {status_class}">
|
|
2526
|
-
{
|
|
2527
|
+
{status_text}
|
|
2527
2528
|
</span>
|
|
2528
2529
|
</td>
|
|
2529
2530
|
<td>{resource['control_id']}</td>
|
|
@@ -2626,12 +2627,12 @@ class HTMLReporter(ReportGenerator):
|
|
|
2626
2627
|
<table class="findings-table resource-table" id="resourceTable">
|
|
2627
2628
|
<thead>
|
|
2628
2629
|
<tr>
|
|
2629
|
-
<th onclick="sortResourceTable(0)">Resource ID
|
|
2630
|
-
<th onclick="sortResourceTable(1)">Resource Type
|
|
2631
|
-
<th onclick="sortResourceTable(2)">Region
|
|
2632
|
-
<th onclick="sortResourceTable(3)">Status
|
|
2633
|
-
<th onclick="sortResourceTable(4)">Control
|
|
2634
|
-
<th onclick="sortResourceTable(5)">Config Rule
|
|
2630
|
+
<th onclick="sortResourceTable(0)">Resource ID</th>
|
|
2631
|
+
<th onclick="sortResourceTable(1)">Resource Type</th>
|
|
2632
|
+
<th onclick="sortResourceTable(2)">Region</th>
|
|
2633
|
+
<th onclick="sortResourceTable(3)">Status</th>
|
|
2634
|
+
<th onclick="sortResourceTable(4)">Control</th>
|
|
2635
|
+
<th onclick="sortResourceTable(5)">Config Rule</th>
|
|
2635
2636
|
<th>Evaluation Details</th>
|
|
2636
2637
|
</tr>
|
|
2637
2638
|
</thead>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: aws-cis-controls-assessment
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.3
|
|
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>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/assessment-logic.md
RENAMED
|
File without changes
|
{aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/cli-reference.md
RENAMED
|
File without changes
|
{aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/config-rule-mappings.md
RENAMED
|
File without changes
|
{aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/developer-guide.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/installation.md
RENAMED
|
File without changes
|
|
File without changes
|
{aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/scoring-methodology.md
RENAMED
|
File without changes
|
{aws_cis_controls_assessment-1.1.2 → aws_cis_controls_assessment-1.1.3}/docs/troubleshooting.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|