aws-cis-controls-assessment 1.0.8__py3-none-any.whl → 1.0.10__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.
- aws_cis_assessment/__init__.py +1 -1
- aws_cis_assessment/config/rules/cis_controls_ig1.yaml +94 -1
- aws_cis_assessment/config/rules/cis_controls_ig2.yaml +83 -1
- aws_cis_assessment/controls/ig1/__init__.py +17 -0
- aws_cis_assessment/controls/ig1/control_aws_backup_service.py +1276 -0
- aws_cis_assessment/controls/ig2/__init__.py +12 -0
- aws_cis_assessment/controls/ig2/control_aws_backup_ig2.py +23 -0
- aws_cis_assessment/core/assessment_engine.py +24 -0
- aws_cis_assessment/core/models.py +1 -0
- aws_cis_assessment/core/scoring_engine.py +30 -0
- aws_cis_assessment/reporters/base_reporter.py +2 -0
- aws_cis_assessment/reporters/html_reporter.py +279 -7
- {aws_cis_controls_assessment-1.0.8.dist-info → aws_cis_controls_assessment-1.0.10.dist-info}/METADATA +57 -10
- {aws_cis_controls_assessment-1.0.8.dist-info → aws_cis_controls_assessment-1.0.10.dist-info}/RECORD +30 -24
- docs/README.md +14 -3
- docs/adding-aws-backup-controls.md +562 -0
- docs/assessment-logic.md +291 -3
- docs/cli-reference.md +1 -1
- docs/config-rule-mappings.md +46 -5
- docs/developer-guide.md +312 -3
- docs/dual-scoring-implementation.md +303 -0
- docs/installation.md +2 -2
- docs/scoring-comparison-aws-config.md +379 -0
- docs/scoring-methodology.md +350 -0
- docs/troubleshooting.md +211 -2
- docs/user-guide.md +47 -2
- {aws_cis_controls_assessment-1.0.8.dist-info → aws_cis_controls_assessment-1.0.10.dist-info}/WHEEL +0 -0
- {aws_cis_controls_assessment-1.0.8.dist-info → aws_cis_controls_assessment-1.0.10.dist-info}/entry_points.txt +0 -0
- {aws_cis_controls_assessment-1.0.8.dist-info → aws_cis_controls_assessment-1.0.10.dist-info}/licenses/LICENSE +0 -0
- {aws_cis_controls_assessment-1.0.8.dist-info → aws_cis_controls_assessment-1.0.10.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
# Compliance Scoring Methodology
|
|
2
|
+
|
|
3
|
+
This document explains how compliance scores are calculated in the AWS CIS Controls Assessment Framework.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The scoring system uses a **weighted, hierarchical approach** that calculates compliance at three levels:
|
|
8
|
+
1. **Control Level** - Individual CIS Control compliance
|
|
9
|
+
2. **Implementation Group Level** - IG1, IG2, IG3 compliance
|
|
10
|
+
3. **Overall Score** - Aggregate compliance across all IGs
|
|
11
|
+
|
|
12
|
+
## Scoring Hierarchy
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
Overall Score (0-100%)
|
|
16
|
+
├── IG1 Score (weight: 1.0)
|
|
17
|
+
│ ├── Control 1.1 (weight: 1.0)
|
|
18
|
+
│ ├── Control 3.3 (weight: 1.5)
|
|
19
|
+
│ └── ... (74 controls)
|
|
20
|
+
├── IG2 Score (weight: 1.5)
|
|
21
|
+
│ ├── Control 3.10 (weight: 1.4)
|
|
22
|
+
│ ├── Control 3.11 (weight: 1.4)
|
|
23
|
+
│ └── ... (58 additional controls)
|
|
24
|
+
└── IG3 Score (weight: 2.0)
|
|
25
|
+
└── ... (13 additional controls)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## 1. Control-Level Scoring
|
|
29
|
+
|
|
30
|
+
### Basic Calculation
|
|
31
|
+
|
|
32
|
+
For each CIS Control, the compliance percentage is calculated as:
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
Control Compliance % = (Compliant Resources / Total Resources) × 100
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Example:**
|
|
39
|
+
- Control 3.3 (Data Access Control)
|
|
40
|
+
- Total Resources Evaluated: 50
|
|
41
|
+
- Compliant Resources: 40
|
|
42
|
+
- Non-Compliant Resources: 10
|
|
43
|
+
- **Control Compliance: 80%**
|
|
44
|
+
|
|
45
|
+
### Resource Status Classification
|
|
46
|
+
|
|
47
|
+
Resources are classified into these statuses:
|
|
48
|
+
|
|
49
|
+
| Status | Description | Counted in Score? |
|
|
50
|
+
|--------|-------------|-------------------|
|
|
51
|
+
| **COMPLIANT** | Resource meets requirements | ✅ Yes (numerator) |
|
|
52
|
+
| **NON_COMPLIANT** | Resource fails requirements | ✅ Yes (denominator only) |
|
|
53
|
+
| **NOT_APPLICABLE** | Rule doesn't apply to resource | ✅ Yes (excluded from both) |
|
|
54
|
+
| **ERROR** | Assessment error occurred | ❌ No (excluded from scoring) |
|
|
55
|
+
|
|
56
|
+
### Control Weighting
|
|
57
|
+
|
|
58
|
+
Controls are weighted based on their security criticality:
|
|
59
|
+
|
|
60
|
+
| Control ID | Weight | Rationale |
|
|
61
|
+
|------------|--------|-----------|
|
|
62
|
+
| 3.3 | 1.5 | Data Access Control - Critical |
|
|
63
|
+
| 3.10 | 1.4 | Encryption in Transit - Critical |
|
|
64
|
+
| 3.11 | 1.4 | Encryption at Rest - Critical |
|
|
65
|
+
| 5.2 | 1.3 | Password Management - Important |
|
|
66
|
+
| 12.8 | 1.3 | Network Segmentation - Important |
|
|
67
|
+
| 4.1 | 1.2 | Secure Configuration - Important |
|
|
68
|
+
| 3.14 | 1.2 | Sensitive Data Logging - Important |
|
|
69
|
+
| 13.1 | 1.2 | Network Monitoring - Important |
|
|
70
|
+
| 7.1 | 1.1 | Vulnerability Management - Important |
|
|
71
|
+
| 1.1 | 1.0 | Asset Inventory - Foundational |
|
|
72
|
+
| Others | 1.0 | Standard weight |
|
|
73
|
+
|
|
74
|
+
**Weighted Control Score:**
|
|
75
|
+
```
|
|
76
|
+
Weighted Control Score = Control Compliance % × Control Weight
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## 2. Implementation Group (IG) Scoring
|
|
80
|
+
|
|
81
|
+
### IG Compliance Calculation
|
|
82
|
+
|
|
83
|
+
The IG score is a **weighted average** of all control scores within that IG:
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
IG Compliance % = Σ(Control Compliance % × Control Weight) / Σ(Control Weights)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Example - IG1 with 3 controls:**
|
|
90
|
+
- Control 1.1: 90% × 1.0 = 90
|
|
91
|
+
- Control 3.3: 80% × 1.5 = 120
|
|
92
|
+
- Control 4.1: 75% × 1.2 = 90
|
|
93
|
+
- **Total Weighted Score: 300**
|
|
94
|
+
- **Total Weight: 3.7**
|
|
95
|
+
- **IG1 Compliance: 300 / 3.7 = 81.1%**
|
|
96
|
+
|
|
97
|
+
### Control Compliance Threshold
|
|
98
|
+
|
|
99
|
+
A control is considered "compliant" if it achieves **≥80% compliance**. This is used for the "compliant controls" count but doesn't affect the percentage calculation.
|
|
100
|
+
|
|
101
|
+
### IG Weighting
|
|
102
|
+
|
|
103
|
+
Implementation Groups have different weights reflecting their security maturity:
|
|
104
|
+
|
|
105
|
+
| IG | Weight | Description |
|
|
106
|
+
|----|--------|-------------|
|
|
107
|
+
| **IG1** | 1.0 | Essential Cyber Hygiene (baseline) |
|
|
108
|
+
| **IG2** | 1.5 | Enhanced Security (50% more weight) |
|
|
109
|
+
| **IG3** | 2.0 | Advanced Security (2x weight) |
|
|
110
|
+
|
|
111
|
+
## 3. Overall Compliance Score
|
|
112
|
+
|
|
113
|
+
The overall score is a **weighted average** across all assessed Implementation Groups:
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
Overall Score = Σ(IG Compliance % × IG Weight) / Σ(IG Weights)
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Scenario Examples
|
|
120
|
+
|
|
121
|
+
#### Scenario 1: All IGs Assessed
|
|
122
|
+
```
|
|
123
|
+
IG1: 85% × 1.0 = 85
|
|
124
|
+
IG2: 75% × 1.5 = 112.5
|
|
125
|
+
IG3: 60% × 2.0 = 120
|
|
126
|
+
Total: 317.5 / 4.5 = 70.6%
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
#### Scenario 2: Only IG1 Assessed
|
|
130
|
+
```
|
|
131
|
+
IG1: 85% × 1.0 = 85
|
|
132
|
+
Total: 85 / 1.0 = 85%
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
#### Scenario 3: IG1 + IG2 Assessed
|
|
136
|
+
```
|
|
137
|
+
IG1: 85% × 1.0 = 85
|
|
138
|
+
IG2: 75% × 1.5 = 112.5
|
|
139
|
+
Total: 197.5 / 2.5 = 79%
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## Scoring Formula Summary
|
|
143
|
+
|
|
144
|
+
### Complete Formula
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
Overall Score =
|
|
148
|
+
Σ(IG in [IG1, IG2, IG3]) [
|
|
149
|
+
IG_Weight(IG) × (
|
|
150
|
+
Σ(Control in IG) [
|
|
151
|
+
Control_Weight(Control) × (
|
|
152
|
+
Count(Compliant Resources) / Count(Total Scorable Resources)
|
|
153
|
+
)
|
|
154
|
+
] / Σ(Control_Weights in IG)
|
|
155
|
+
)
|
|
156
|
+
] / Σ(IG_Weights)
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Simplified View
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
Overall = Weighted Average of IGs
|
|
163
|
+
├─ IG Score = Weighted Average of Controls
|
|
164
|
+
│ └─ Control Score = Compliant / Total Resources
|
|
165
|
+
└─ Weights applied at both levels
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Compliance Ratings
|
|
169
|
+
|
|
170
|
+
Scores are typically interpreted as:
|
|
171
|
+
|
|
172
|
+
| Score Range | Rating | Interpretation |
|
|
173
|
+
|-------------|--------|----------------|
|
|
174
|
+
| 90-100% | **Excellent** | Strong security posture |
|
|
175
|
+
| 80-89% | **Good** | Solid compliance, minor gaps |
|
|
176
|
+
| 70-79% | **Fair** | Moderate compliance, improvement needed |
|
|
177
|
+
| 60-69% | **Poor** | Significant gaps, action required |
|
|
178
|
+
| 0-59% | **Critical** | Major security risks, urgent action needed |
|
|
179
|
+
|
|
180
|
+
## Risk Area Identification
|
|
181
|
+
|
|
182
|
+
The scoring engine identifies top risk areas by:
|
|
183
|
+
|
|
184
|
+
1. **Sorting controls** by compliance percentage (lowest first)
|
|
185
|
+
2. **Filtering** controls with <80% compliance
|
|
186
|
+
3. **Selecting top 5** lowest-scoring controls
|
|
187
|
+
4. **Reporting** with control ID, title, and compliance percentage
|
|
188
|
+
|
|
189
|
+
**Example Risk Areas:**
|
|
190
|
+
```
|
|
191
|
+
1. Control 3.11 (Encryption at Rest): 45.2% compliant
|
|
192
|
+
2. Control 5.2 (Password Management): 52.8% compliant
|
|
193
|
+
3. Control 12.8 (Network Segmentation): 61.3% compliant
|
|
194
|
+
4. Control 3.10 (Encryption in Transit): 68.7% compliant
|
|
195
|
+
5. Control 13.1 (Network Monitoring): 72.4% compliant
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## Remediation Prioritization
|
|
199
|
+
|
|
200
|
+
Remediation priorities are calculated using:
|
|
201
|
+
|
|
202
|
+
### Priority Calculation
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
Priority = f(Control Weight, Affected Resources, Rule Complexity)
|
|
206
|
+
|
|
207
|
+
HIGH: Control Weight ≥ 1.4 OR Affected Resources ≥ 10
|
|
208
|
+
MEDIUM: Control Weight ≥ 1.2 OR Affected Resources ≥ 5
|
|
209
|
+
LOW: All others
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Effort Estimation
|
|
213
|
+
|
|
214
|
+
```
|
|
215
|
+
Effort = f(Affected Resources, Rule Complexity)
|
|
216
|
+
|
|
217
|
+
Base Effort:
|
|
218
|
+
- Low: ≤5 resources
|
|
219
|
+
- Medium: 6-20 resources
|
|
220
|
+
- High: >20 resources
|
|
221
|
+
|
|
222
|
+
Adjusted for complex rules:
|
|
223
|
+
- IAM password policies
|
|
224
|
+
- VPC security group rules
|
|
225
|
+
- Multi-region CloudTrail
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Example: Complete Scoring Walkthrough
|
|
229
|
+
|
|
230
|
+
### Input Data
|
|
231
|
+
```
|
|
232
|
+
Assessment of IG1 with 3 controls:
|
|
233
|
+
|
|
234
|
+
Control 1.1 (Asset Inventory):
|
|
235
|
+
- 100 resources evaluated
|
|
236
|
+
- 90 compliant
|
|
237
|
+
- 10 non-compliant
|
|
238
|
+
- Weight: 1.0
|
|
239
|
+
|
|
240
|
+
Control 3.3 (Data Access Control):
|
|
241
|
+
- 50 resources evaluated
|
|
242
|
+
- 40 compliant
|
|
243
|
+
- 10 non-compliant
|
|
244
|
+
- Weight: 1.5
|
|
245
|
+
|
|
246
|
+
Control 4.1 (Secure Configuration):
|
|
247
|
+
- 75 resources evaluated
|
|
248
|
+
- 60 compliant
|
|
249
|
+
- 15 non-compliant
|
|
250
|
+
- Weight: 1.2
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### Step 1: Calculate Control Scores
|
|
254
|
+
```
|
|
255
|
+
Control 1.1: 90/100 = 90%
|
|
256
|
+
Control 3.3: 40/50 = 80%
|
|
257
|
+
Control 4.1: 60/75 = 80%
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### Step 2: Apply Control Weights
|
|
261
|
+
```
|
|
262
|
+
Control 1.1: 90% × 1.0 = 90
|
|
263
|
+
Control 3.3: 80% × 1.5 = 120
|
|
264
|
+
Control 4.1: 80% × 1.2 = 96
|
|
265
|
+
Total Weighted: 306
|
|
266
|
+
Total Weight: 3.7
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### Step 3: Calculate IG1 Score
|
|
270
|
+
```
|
|
271
|
+
IG1 Score = 306 / 3.7 = 82.7%
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### Step 4: Calculate Overall Score
|
|
275
|
+
```
|
|
276
|
+
(Only IG1 assessed)
|
|
277
|
+
Overall Score = 82.7% × 1.0 / 1.0 = 82.7%
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Result
|
|
281
|
+
```
|
|
282
|
+
Overall Compliance: 82.7% (Good)
|
|
283
|
+
IG1 Compliance: 82.7%
|
|
284
|
+
Compliant Controls: 2/3 (Controls 3.3 and 4.1 ≥80%)
|
|
285
|
+
Total Resources: 225
|
|
286
|
+
Compliant Resources: 190
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
## Customization
|
|
290
|
+
|
|
291
|
+
### Custom Control Weights
|
|
292
|
+
|
|
293
|
+
You can customize control weights when initializing the scoring engine:
|
|
294
|
+
|
|
295
|
+
```python
|
|
296
|
+
from aws_cis_assessment.core.scoring_engine import ScoringEngine
|
|
297
|
+
|
|
298
|
+
custom_weights = {
|
|
299
|
+
'3.3': 2.0, # Increase data access control importance
|
|
300
|
+
'1.1': 0.5, # Decrease asset inventory importance
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
scoring_engine = ScoringEngine(control_weights=custom_weights)
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### Custom IG Weights
|
|
307
|
+
|
|
308
|
+
Similarly, you can adjust IG weights:
|
|
309
|
+
|
|
310
|
+
```python
|
|
311
|
+
custom_ig_weights = {
|
|
312
|
+
'IG1': 1.0,
|
|
313
|
+
'IG2': 1.2, # Reduce IG2 weight
|
|
314
|
+
'IG3': 1.5, # Reduce IG3 weight
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
scoring_engine = ScoringEngine(ig_weights=custom_ig_weights)
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
## Scoring Best Practices
|
|
321
|
+
|
|
322
|
+
1. **Focus on weighted scores** - They reflect security priorities
|
|
323
|
+
2. **Track trends over time** - Compare scores across assessments
|
|
324
|
+
3. **Prioritize high-weight controls** - Maximum security impact
|
|
325
|
+
4. **Address ≥80% threshold** - Get controls to "compliant" status
|
|
326
|
+
5. **Review risk areas** - Focus remediation on lowest scores
|
|
327
|
+
6. **Consider resource counts** - High resource counts = higher impact
|
|
328
|
+
|
|
329
|
+
## Limitations
|
|
330
|
+
|
|
331
|
+
1. **No historical trending** - Current implementation doesn't track score changes over time
|
|
332
|
+
2. **Static weights** - Weights don't adapt to organizational priorities automatically
|
|
333
|
+
3. **Equal resource weighting** - All resources within a control are weighted equally
|
|
334
|
+
4. **No severity levels** - Non-compliance is binary (pass/fail)
|
|
335
|
+
|
|
336
|
+
## Future Enhancements
|
|
337
|
+
|
|
338
|
+
Potential improvements to the scoring system:
|
|
339
|
+
|
|
340
|
+
- **Historical trending** - Track compliance changes over time
|
|
341
|
+
- **Severity-based scoring** - Weight findings by severity (critical, high, medium, low)
|
|
342
|
+
- **Resource criticality** - Weight production resources higher than dev/test
|
|
343
|
+
- **Custom scoring profiles** - Industry-specific weight profiles (finance, healthcare, etc.)
|
|
344
|
+
- **Benchmark comparisons** - Compare scores against industry averages
|
|
345
|
+
- **Predictive scoring** - Estimate future compliance based on trends
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
**Last Updated**: January 26, 2026
|
|
350
|
+
**Version**: 1.0.8
|
docs/troubleshooting.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Troubleshooting Guide
|
|
2
2
|
|
|
3
|
-
This guide helps you diagnose and resolve common issues with the AWS CIS Controls Compliance Assessment Framework - a production-ready, enterprise-grade solution with
|
|
3
|
+
This guide helps you diagnose and resolve common issues with the AWS CIS Controls Compliance Assessment Framework - a production-ready, enterprise-grade solution with 138 implemented rules.
|
|
4
4
|
|
|
5
5
|
## Production Framework Status
|
|
6
6
|
|
|
@@ -631,4 +631,213 @@ When reporting issues, include:
|
|
|
631
631
|
For enterprise users:
|
|
632
632
|
- **AWS Support**: For AWS service-related issues
|
|
633
633
|
- **Professional Services**: For implementation assistance
|
|
634
|
-
- **Training**: For team education and best practices
|
|
634
|
+
- **Training**: For team education and best practices
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
## AWS Backup Controls Issues
|
|
638
|
+
|
|
639
|
+
### Problem: Backup Plan Assessment Failures
|
|
640
|
+
|
|
641
|
+
**Error Message:**
|
|
642
|
+
```
|
|
643
|
+
AccessDenied: User is not authorized to perform: backup:ListBackupPlans
|
|
644
|
+
```
|
|
645
|
+
|
|
646
|
+
**Solutions:**
|
|
647
|
+
|
|
648
|
+
1. **Add Backup permissions:**
|
|
649
|
+
```bash
|
|
650
|
+
# Ensure IAM policy includes Backup permissions
|
|
651
|
+
aws iam attach-user-policy \
|
|
652
|
+
--user-name your-user \
|
|
653
|
+
--policy-arn arn:aws:iam::aws:policy/AWSBackupReadOnlyAccess
|
|
654
|
+
```
|
|
655
|
+
|
|
656
|
+
2. **Verify Backup service availability:**
|
|
657
|
+
```bash
|
|
658
|
+
# Check if Backup service is available in region
|
|
659
|
+
aws backup list-backup-plans --region us-east-1
|
|
660
|
+
```
|
|
661
|
+
|
|
662
|
+
3. **Check for Backup plans:**
|
|
663
|
+
```bash
|
|
664
|
+
# List existing backup plans
|
|
665
|
+
aws backup list-backup-plans --query 'BackupPlansList[*].[BackupPlanName,BackupPlanId]' --output table
|
|
666
|
+
```
|
|
667
|
+
|
|
668
|
+
### Problem: Backup Vault Access Policy Check Failures
|
|
669
|
+
|
|
670
|
+
**Error Message:**
|
|
671
|
+
```
|
|
672
|
+
ResourceNotFoundException: Backup vault not found
|
|
673
|
+
```
|
|
674
|
+
|
|
675
|
+
**Solutions:**
|
|
676
|
+
|
|
677
|
+
1. **Verify backup vaults exist:**
|
|
678
|
+
```bash
|
|
679
|
+
# List backup vaults in region
|
|
680
|
+
aws backup list-backup-vaults --region us-east-1
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
2. **Check vault access policy:**
|
|
684
|
+
```bash
|
|
685
|
+
# Get vault access policy
|
|
686
|
+
aws backup get-backup-vault-access-policy --backup-vault-name MyVault
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
3. **Create backup vault if needed:**
|
|
690
|
+
```bash
|
|
691
|
+
# Create a backup vault
|
|
692
|
+
aws backup create-backup-vault --backup-vault-name MyVault
|
|
693
|
+
```
|
|
694
|
+
|
|
695
|
+
### Problem: Backup Plan Frequency/Retention Validation
|
|
696
|
+
|
|
697
|
+
**Symptoms:**
|
|
698
|
+
- Backup plans marked as non-compliant
|
|
699
|
+
- Frequency or retention requirements not met
|
|
700
|
+
- Assessment shows "Backup plan does not meet minimum requirements"
|
|
701
|
+
|
|
702
|
+
**Solutions:**
|
|
703
|
+
|
|
704
|
+
1. **Review backup plan rules:**
|
|
705
|
+
```bash
|
|
706
|
+
# Get backup plan details
|
|
707
|
+
aws backup get-backup-plan --backup-plan-id <plan-id>
|
|
708
|
+
```
|
|
709
|
+
|
|
710
|
+
2. **Check schedule expression:**
|
|
711
|
+
```bash
|
|
712
|
+
# Verify cron/rate expression meets requirements
|
|
713
|
+
# Minimum daily frequency: cron(0 0 * * ? *) or rate(1 day)
|
|
714
|
+
```
|
|
715
|
+
|
|
716
|
+
3. **Verify retention settings:**
|
|
717
|
+
```bash
|
|
718
|
+
# Ensure DeleteAfterDays >= 35 days (5 weeks)
|
|
719
|
+
# Check lifecycle settings in backup plan rules
|
|
720
|
+
```
|
|
721
|
+
|
|
722
|
+
4. **Update backup plan:**
|
|
723
|
+
```bash
|
|
724
|
+
# Update plan to meet requirements
|
|
725
|
+
aws backup update-backup-plan \
|
|
726
|
+
--backup-plan-id <plan-id> \
|
|
727
|
+
--backup-plan file://updated-plan.json
|
|
728
|
+
```
|
|
729
|
+
|
|
730
|
+
### Problem: No Backup Resources Found
|
|
731
|
+
|
|
732
|
+
**Symptoms:**
|
|
733
|
+
- Assessment shows "No backup plans found"
|
|
734
|
+
- Zero backup-related resources discovered
|
|
735
|
+
- All backup controls show NOT_APPLICABLE
|
|
736
|
+
|
|
737
|
+
**Solutions:**
|
|
738
|
+
|
|
739
|
+
1. **Enable AWS Backup:**
|
|
740
|
+
```bash
|
|
741
|
+
# Create your first backup plan
|
|
742
|
+
aws backup create-backup-plan --backup-plan file://backup-plan.json
|
|
743
|
+
```
|
|
744
|
+
|
|
745
|
+
2. **Check region scope:**
|
|
746
|
+
```bash
|
|
747
|
+
# Backup resources are regional
|
|
748
|
+
# Ensure you're checking the correct regions
|
|
749
|
+
aws-cis-assess assess --regions us-east-1,us-west-2 --verbose
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
3. **Verify service availability:**
|
|
753
|
+
```bash
|
|
754
|
+
# Check if Backup service is enabled in your account
|
|
755
|
+
aws backup describe-global-settings
|
|
756
|
+
```
|
|
757
|
+
|
|
758
|
+
### Problem: Backup Vault Policy Validation
|
|
759
|
+
|
|
760
|
+
**Symptoms:**
|
|
761
|
+
- Vault policy marked as non-compliant
|
|
762
|
+
- "Vault allows public access" or "Vault policy too permissive"
|
|
763
|
+
- Policy validation failures
|
|
764
|
+
|
|
765
|
+
**Solutions:**
|
|
766
|
+
|
|
767
|
+
1. **Review vault policy:**
|
|
768
|
+
```bash
|
|
769
|
+
# Get current vault policy
|
|
770
|
+
aws backup get-backup-vault-access-policy \
|
|
771
|
+
--backup-vault-name MyVault \
|
|
772
|
+
--query 'Policy' \
|
|
773
|
+
--output text | jq .
|
|
774
|
+
```
|
|
775
|
+
|
|
776
|
+
2. **Check for overly permissive principals:**
|
|
777
|
+
```json
|
|
778
|
+
{
|
|
779
|
+
"Statement": [{
|
|
780
|
+
"Principal": "*", // ❌ Too permissive
|
|
781
|
+
"Effect": "Allow",
|
|
782
|
+
"Action": "backup:*"
|
|
783
|
+
}]
|
|
784
|
+
}
|
|
785
|
+
```
|
|
786
|
+
|
|
787
|
+
3. **Update vault policy:**
|
|
788
|
+
```bash
|
|
789
|
+
# Apply restrictive policy
|
|
790
|
+
aws backup put-backup-vault-access-policy \
|
|
791
|
+
--backup-vault-name MyVault \
|
|
792
|
+
--policy file://restrictive-policy.json
|
|
793
|
+
```
|
|
794
|
+
|
|
795
|
+
4. **Best practice policy example:**
|
|
796
|
+
```json
|
|
797
|
+
{
|
|
798
|
+
"Version": "2012-10-17",
|
|
799
|
+
"Statement": [{
|
|
800
|
+
"Effect": "Allow",
|
|
801
|
+
"Principal": {
|
|
802
|
+
"AWS": "arn:aws:iam::123456789012:role/BackupRole"
|
|
803
|
+
},
|
|
804
|
+
"Action": [
|
|
805
|
+
"backup:DescribeBackupVault",
|
|
806
|
+
"backup:ListRecoveryPointsByBackupVault"
|
|
807
|
+
],
|
|
808
|
+
"Resource": "*"
|
|
809
|
+
}]
|
|
810
|
+
}
|
|
811
|
+
```
|
|
812
|
+
|
|
813
|
+
### Problem: Backup Assessment Performance
|
|
814
|
+
|
|
815
|
+
**Symptoms:**
|
|
816
|
+
- Backup control assessments take too long
|
|
817
|
+
- Timeout errors during backup plan evaluation
|
|
818
|
+
- High API call volume to Backup service
|
|
819
|
+
|
|
820
|
+
**Solutions:**
|
|
821
|
+
|
|
822
|
+
1. **Limit assessment scope:**
|
|
823
|
+
```bash
|
|
824
|
+
# Assess only specific backup controls
|
|
825
|
+
aws-cis-assess assess --controls 11.1,11.2 --regions us-east-1
|
|
826
|
+
```
|
|
827
|
+
|
|
828
|
+
2. **Reduce parallel workers:**
|
|
829
|
+
```bash
|
|
830
|
+
# Lower concurrency for Backup API calls
|
|
831
|
+
aws-cis-assess assess --max-workers 2
|
|
832
|
+
```
|
|
833
|
+
|
|
834
|
+
3. **Check for large number of backup plans:**
|
|
835
|
+
```bash
|
|
836
|
+
# Count backup plans
|
|
837
|
+
aws backup list-backup-plans --query 'length(BackupPlansList)'
|
|
838
|
+
```
|
|
839
|
+
|
|
840
|
+
4. **Optimize backup plan structure:**
|
|
841
|
+
- Consolidate multiple small plans into fewer comprehensive plans
|
|
842
|
+
- Use backup selections to target specific resources
|
|
843
|
+
- Avoid creating excessive backup plans per region
|
docs/user-guide.md
CHANGED
|
@@ -5,10 +5,11 @@ This comprehensive guide covers how to use the AWS CIS Controls Compliance Asses
|
|
|
5
5
|
## Production Framework Overview
|
|
6
6
|
|
|
7
7
|
**✅ Complete Implementation**
|
|
8
|
-
-
|
|
8
|
+
- 138 AWS Config rules implemented (133 CIS Controls + 5 bonus security rules)
|
|
9
9
|
- 100% coverage across all Implementation Groups (IG1, IG2, IG3)
|
|
10
10
|
- Production-tested architecture with enterprise-grade error handling
|
|
11
11
|
- Ready for immediate deployment in production environments
|
|
12
|
+
- **NEW:** AWS Backup service controls for infrastructure assessment
|
|
12
13
|
|
|
13
14
|
## Table of Contents
|
|
14
15
|
|
|
@@ -490,4 +491,48 @@ Each non-compliant finding includes:
|
|
|
490
491
|
- **Configuration Guide**: Learn about customizing assessments
|
|
491
492
|
- **Troubleshooting Guide**: Resolve common issues
|
|
492
493
|
- **CLI Reference**: Complete command reference
|
|
493
|
-
- **Developer Guide**: Extend and customize the tool
|
|
494
|
+
- **Developer Guide**: Extend and customize the tool
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
## AWS Backup Controls (New in v1.0.10)
|
|
498
|
+
|
|
499
|
+
### Overview
|
|
500
|
+
|
|
501
|
+
Two new controls have been added to assess AWS Backup service infrastructure:
|
|
502
|
+
|
|
503
|
+
1. **backup-plan-min-frequency-and-min-retention-check**
|
|
504
|
+
- Validates backup plans have appropriate frequency and retention policies
|
|
505
|
+
- Ensures backups happen regularly (daily minimum)
|
|
506
|
+
- Checks retention periods meet minimum requirements (7 days default)
|
|
507
|
+
- Validates lifecycle policies for cold storage transitions
|
|
508
|
+
|
|
509
|
+
2. **backup-vault-access-policy-check**
|
|
510
|
+
- Ensures backup vaults have secure access policies
|
|
511
|
+
- Detects publicly accessible backup vaults
|
|
512
|
+
- Identifies overly permissive access policies
|
|
513
|
+
- Warns about dangerous permissions
|
|
514
|
+
|
|
515
|
+
### Usage
|
|
516
|
+
|
|
517
|
+
These controls are automatically included in IG1 assessments:
|
|
518
|
+
|
|
519
|
+
```bash
|
|
520
|
+
# Run assessment including new backup controls
|
|
521
|
+
aws-cis-assess assess --implementation-groups IG1
|
|
522
|
+
|
|
523
|
+
# Focus on backup-related controls
|
|
524
|
+
aws-cis-assess assess --controls 11.2
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
### Benefits
|
|
528
|
+
|
|
529
|
+
- **Comprehensive Coverage**: Assesses both resource protection AND backup infrastructure
|
|
530
|
+
- **Security Validation**: Ensures backup vaults aren't publicly accessible
|
|
531
|
+
- **Compliance Checking**: Validates backup policies meet organizational requirements
|
|
532
|
+
- **Ransomware Protection**: Helps identify backup vulnerabilities
|
|
533
|
+
|
|
534
|
+
### Documentation
|
|
535
|
+
|
|
536
|
+
For detailed information about AWS Backup controls, see:
|
|
537
|
+
- [AWS Backup Controls Implementation Guide](adding-aws-backup-controls.md)
|
|
538
|
+
- [AWS Backup Controls Summary](../AWS_BACKUP_CONTROLS_IMPLEMENTATION_SUMMARY.md)
|
{aws_cis_controls_assessment-1.0.8.dist-info → aws_cis_controls_assessment-1.0.10.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|