aws-cis-controls-assessment 1.0.3__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 (77) hide show
  1. aws_cis_assessment/__init__.py +11 -0
  2. aws_cis_assessment/cli/__init__.py +3 -0
  3. aws_cis_assessment/cli/examples.py +274 -0
  4. aws_cis_assessment/cli/main.py +1259 -0
  5. aws_cis_assessment/cli/utils.py +356 -0
  6. aws_cis_assessment/config/__init__.py +1 -0
  7. aws_cis_assessment/config/config_loader.py +328 -0
  8. aws_cis_assessment/config/rules/cis_controls_ig1.yaml +590 -0
  9. aws_cis_assessment/config/rules/cis_controls_ig2.yaml +412 -0
  10. aws_cis_assessment/config/rules/cis_controls_ig3.yaml +100 -0
  11. aws_cis_assessment/controls/__init__.py +1 -0
  12. aws_cis_assessment/controls/base_control.py +400 -0
  13. aws_cis_assessment/controls/ig1/__init__.py +239 -0
  14. aws_cis_assessment/controls/ig1/control_1_1.py +586 -0
  15. aws_cis_assessment/controls/ig1/control_2_2.py +231 -0
  16. aws_cis_assessment/controls/ig1/control_3_3.py +718 -0
  17. aws_cis_assessment/controls/ig1/control_3_4.py +235 -0
  18. aws_cis_assessment/controls/ig1/control_4_1.py +461 -0
  19. aws_cis_assessment/controls/ig1/control_access_keys.py +310 -0
  20. aws_cis_assessment/controls/ig1/control_advanced_security.py +512 -0
  21. aws_cis_assessment/controls/ig1/control_backup_recovery.py +510 -0
  22. aws_cis_assessment/controls/ig1/control_cloudtrail_logging.py +197 -0
  23. aws_cis_assessment/controls/ig1/control_critical_security.py +422 -0
  24. aws_cis_assessment/controls/ig1/control_data_protection.py +898 -0
  25. aws_cis_assessment/controls/ig1/control_iam_advanced.py +573 -0
  26. aws_cis_assessment/controls/ig1/control_iam_governance.py +493 -0
  27. aws_cis_assessment/controls/ig1/control_iam_policies.py +383 -0
  28. aws_cis_assessment/controls/ig1/control_instance_optimization.py +100 -0
  29. aws_cis_assessment/controls/ig1/control_network_enhancements.py +203 -0
  30. aws_cis_assessment/controls/ig1/control_network_security.py +672 -0
  31. aws_cis_assessment/controls/ig1/control_s3_enhancements.py +173 -0
  32. aws_cis_assessment/controls/ig1/control_s3_security.py +422 -0
  33. aws_cis_assessment/controls/ig1/control_vpc_security.py +235 -0
  34. aws_cis_assessment/controls/ig2/__init__.py +172 -0
  35. aws_cis_assessment/controls/ig2/control_3_10.py +698 -0
  36. aws_cis_assessment/controls/ig2/control_3_11.py +1330 -0
  37. aws_cis_assessment/controls/ig2/control_5_2.py +393 -0
  38. aws_cis_assessment/controls/ig2/control_advanced_encryption.py +355 -0
  39. aws_cis_assessment/controls/ig2/control_codebuild_security.py +263 -0
  40. aws_cis_assessment/controls/ig2/control_encryption_rest.py +382 -0
  41. aws_cis_assessment/controls/ig2/control_encryption_transit.py +382 -0
  42. aws_cis_assessment/controls/ig2/control_network_ha.py +467 -0
  43. aws_cis_assessment/controls/ig2/control_remaining_encryption.py +426 -0
  44. aws_cis_assessment/controls/ig2/control_remaining_rules.py +363 -0
  45. aws_cis_assessment/controls/ig2/control_service_logging.py +402 -0
  46. aws_cis_assessment/controls/ig3/__init__.py +49 -0
  47. aws_cis_assessment/controls/ig3/control_12_8.py +395 -0
  48. aws_cis_assessment/controls/ig3/control_13_1.py +467 -0
  49. aws_cis_assessment/controls/ig3/control_3_14.py +523 -0
  50. aws_cis_assessment/controls/ig3/control_7_1.py +359 -0
  51. aws_cis_assessment/core/__init__.py +1 -0
  52. aws_cis_assessment/core/accuracy_validator.py +425 -0
  53. aws_cis_assessment/core/assessment_engine.py +1266 -0
  54. aws_cis_assessment/core/audit_trail.py +491 -0
  55. aws_cis_assessment/core/aws_client_factory.py +313 -0
  56. aws_cis_assessment/core/error_handler.py +607 -0
  57. aws_cis_assessment/core/models.py +166 -0
  58. aws_cis_assessment/core/scoring_engine.py +459 -0
  59. aws_cis_assessment/reporters/__init__.py +8 -0
  60. aws_cis_assessment/reporters/base_reporter.py +454 -0
  61. aws_cis_assessment/reporters/csv_reporter.py +835 -0
  62. aws_cis_assessment/reporters/html_reporter.py +2162 -0
  63. aws_cis_assessment/reporters/json_reporter.py +561 -0
  64. aws_cis_controls_assessment-1.0.3.dist-info/METADATA +248 -0
  65. aws_cis_controls_assessment-1.0.3.dist-info/RECORD +77 -0
  66. aws_cis_controls_assessment-1.0.3.dist-info/WHEEL +5 -0
  67. aws_cis_controls_assessment-1.0.3.dist-info/entry_points.txt +2 -0
  68. aws_cis_controls_assessment-1.0.3.dist-info/licenses/LICENSE +21 -0
  69. aws_cis_controls_assessment-1.0.3.dist-info/top_level.txt +2 -0
  70. docs/README.md +94 -0
  71. docs/assessment-logic.md +766 -0
  72. docs/cli-reference.md +698 -0
  73. docs/config-rule-mappings.md +393 -0
  74. docs/developer-guide.md +858 -0
  75. docs/installation.md +299 -0
  76. docs/troubleshooting.md +634 -0
  77. docs/user-guide.md +487 -0
@@ -0,0 +1,393 @@
1
+ # Config Rule Mappings
2
+
3
+ This document provides a comprehensive mapping of CIS Controls to AWS Config rules used by the assessment tool.
4
+
5
+ ## Table of Contents
6
+
7
+ 1. [Overview](#overview)
8
+ 2. [IG1 - Essential Cyber Hygiene](#ig1---essential-cyber-hygiene)
9
+ 3. [IG2 - Enhanced Security](#ig2---enhanced-security)
10
+ 4. [IG3 - Advanced Security](#ig3---advanced-security)
11
+ 5. [Config Rule Details](#config-rule-details)
12
+ 6. [Resource Type Coverage](#resource-type-coverage)
13
+ 7. [Assessment Logic](#assessment-logic)
14
+
15
+ ## Overview
16
+
17
+ The AWS CIS Controls Compliance Assessment Framework uses AWS Config rule specifications as the foundation for evaluating compliance. Each CIS Control is mapped to one or more AWS Config rules that assess specific AWS resources and configurations.
18
+
19
+ **Production Status**: This framework has achieved 100% coverage of all CIS Controls requirements with 136 implemented rules (131 CIS Controls + 5 bonus security enhancements).
20
+
21
+ ### Mapping Methodology
22
+
23
+ 1. **Direct Mapping**: CIS Controls directly correspond to existing AWS Config rules
24
+ 2. **Composite Mapping**: Multiple Config rules combine to assess a single CIS Control
25
+ 3. **Custom Logic**: Additional assessment logic based on Config rule specifications
26
+ 4. **Resource Coverage**: All applicable AWS resource types are evaluated
27
+
28
+ ### Implementation Groups Hierarchy
29
+
30
+ - **IG1**: 93 Config rules covering essential cyber hygiene
31
+ - **IG2**: +37 Config rules for enhanced security (includes all IG1 rules)
32
+ - **IG3**: +1 Config rule for advanced security (includes all IG1+IG2 rules)
33
+ - **Bonus**: +5 additional security rules beyond CIS requirements
34
+ - **Total**: 136 Config rules implemented (131 CIS + 5 bonus)
35
+
36
+ ## IG1 - Essential Cyber Hygiene
37
+
38
+ ### Control 1.1: Establish and Maintain Detailed Enterprise Asset Inventory
39
+
40
+ **Purpose**: Maintain an accurate and up-to-date inventory of all enterprise assets.
41
+
42
+ | Config Rule | Resource Types | Description |
43
+ |-------------|----------------|-------------|
44
+ | `eip-attached` | AWS::EC2::EIP | Ensures Elastic IPs are attached to EC2 instances or ENIs |
45
+ | `ec2-stopped-instance` | AWS::EC2::Instance | Checks for EC2 instances stopped for more than allowed days |
46
+ | `vpc-network-acl-unused-check` | AWS::EC2::NetworkAcl | Ensures VPC network ACLs are in use |
47
+ | `ec2-instance-managed-by-systems-manager` | AWS::EC2::Instance, AWS::SSM::ManagedInstanceInventory | Ensures EC2 instances are managed by Systems Manager |
48
+ | `ec2-security-group-attached-to-eni` | AWS::EC2::SecurityGroup | Ensures security groups are attached to network interfaces |
49
+
50
+ **Assessment Logic**:
51
+ - Discovers all EC2 instances, EIPs, security groups, and network ACLs
52
+ - Validates that resources are properly managed and not orphaned
53
+ - Checks Systems Manager agent installation and registration
54
+
55
+ ### Control 2.2: Ensure Authorized Software is Currently Supported
56
+
57
+ **Purpose**: Ensure that only authorized and supported software is installed and running.
58
+
59
+ | Config Rule | Resource Types | Description |
60
+ |-------------|----------------|-------------|
61
+ | `elastic-beanstalk-managed-updates-enabled` | AWS::ElasticBeanstalk::Environment | Ensures Elastic Beanstalk environments have managed updates enabled |
62
+ | `lambda-function-settings-check` | AWS::Lambda::Function | Validates Lambda function runtime and configuration settings |
63
+ | `ec2-imdsv2-check` | AWS::EC2::Instance | Ensures EC2 instances use IMDSv2 for metadata access |
64
+
65
+ **Assessment Logic**:
66
+ - Validates that compute services use supported and current software versions
67
+ - Checks for automatic update mechanisms where available
68
+ - Ensures secure configuration of runtime environments
69
+
70
+ ### Control 3.3: Configure Data Access Control Lists
71
+
72
+ **Purpose**: Configure data access control lists on network shares and databases.
73
+
74
+ | Config Rule | Resource Types | Description |
75
+ |-------------|----------------|-------------|
76
+ | `iam-password-policy` | AWS::IAM::AccountPasswordPolicy | Ensures IAM password policy meets security requirements |
77
+ | `iam-user-mfa-enabled` | AWS::IAM::User | Ensures IAM users have MFA enabled |
78
+ | `iam-root-access-key-check` | AWS::IAM::User | Ensures root account access keys are not present |
79
+ | `s3-bucket-public-read-prohibited` | AWS::S3::Bucket | Ensures S3 buckets do not allow public read access |
80
+ | `s3-bucket-public-write-prohibited` | AWS::S3::Bucket | Ensures S3 buckets do not allow public write access |
81
+ | `ec2-instance-no-public-ip` | AWS::EC2::Instance | Ensures EC2 instances do not have public IP addresses |
82
+ | `rds-instance-public-access-check` | AWS::RDS::DBInstance | Ensures RDS instances are not publicly accessible |
83
+ | `redshift-cluster-public-access-check` | AWS::Redshift::Cluster | Ensures Redshift clusters are not publicly accessible |
84
+ | `dms-replication-not-public` | AWS::DMS::ReplicationInstance | Ensures DMS replication instances are not public |
85
+ | `ec2-instance-profile-attached` | AWS::EC2::Instance | Ensures EC2 instances have IAM instance profiles attached |
86
+
87
+ **Assessment Logic**:
88
+ - Evaluates IAM policies and access controls
89
+ - Checks for public accessibility of data stores
90
+ - Validates proper authentication and authorization mechanisms
91
+
92
+ ### Control 4.1: Establish and Maintain a Secure Configuration Process
93
+
94
+ **Purpose**: Establish and maintain a secure configuration process for enterprise assets.
95
+
96
+ | Config Rule | Resource Types | Description |
97
+ |-------------|----------------|-------------|
98
+ | `account-part-of-organizations` | AWS::Organizations::Account | Ensures AWS account is part of AWS Organizations |
99
+ | `ec2-volume-inuse-check` | AWS::EC2::Volume | Ensures EBS volumes are attached to EC2 instances |
100
+ | `redshift-cluster-maintenancesettings-check` | AWS::Redshift::Cluster | Validates Redshift cluster maintenance settings |
101
+ | `secretsmanager-rotation-enabled-check` | AWS::SecretsManager::Secret | Ensures Secrets Manager secrets have rotation enabled |
102
+ | `rds-automatic-minor-version-upgrade-enabled` | AWS::RDS::DBInstance | Ensures RDS instances have automatic minor version upgrades |
103
+
104
+ **Assessment Logic**:
105
+ - Validates organizational governance structures
106
+ - Checks for proper resource utilization and maintenance
107
+ - Ensures automatic security updates and rotation policies
108
+
109
+ ### Control 5.2: Use Unique Passwords
110
+
111
+ **Purpose**: Use unique passwords for all enterprise assets.
112
+
113
+ | Config Rule | Resource Types | Description |
114
+ |-------------|----------------|-------------|
115
+ | `iam-password-policy` | AWS::IAM::AccountPasswordPolicy | Enhanced password policy validation |
116
+ | `mfa-enabled-for-iam-console-access` | AWS::IAM::User | Ensures MFA is enabled for console access |
117
+ | `root-account-mfa-enabled` | AWS::IAM::User | Ensures root account has MFA enabled |
118
+ | `iam-user-unused-credentials-check` | AWS::IAM::User | Identifies unused IAM user credentials |
119
+
120
+ **Assessment Logic**:
121
+ - Validates password complexity requirements
122
+ - Checks for MFA enforcement
123
+ - Identifies stale or unused credentials
124
+
125
+ ## IG2 - Enhanced Security
126
+
127
+ ### Control 3.10: Encrypt Sensitive Data in Transit
128
+
129
+ **Purpose**: Encrypt sensitive data in transit between network locations.
130
+
131
+ | Config Rule | Resource Types | Description |
132
+ |-------------|----------------|-------------|
133
+ | `api-gw-ssl-enabled` | AWS::ApiGateway::Stage | Ensures API Gateway stages use SSL/TLS |
134
+ | `alb-http-to-https-redirection-check` | AWS::ElasticLoadBalancingV2::LoadBalancer | Ensures ALB redirects HTTP to HTTPS |
135
+ | `elb-tls-https-listeners-only` | AWS::ElasticLoadBalancing::LoadBalancer | Ensures ELB uses only TLS/HTTPS listeners |
136
+ | `s3-bucket-ssl-requests-only` | AWS::S3::Bucket | Ensures S3 buckets require SSL requests |
137
+ | `redshift-require-tls-ssl` | AWS::Redshift::Cluster | Ensures Redshift requires TLS/SSL connections |
138
+ | `elasticsearch-https-required` | AWS::Elasticsearch::Domain | Ensures Elasticsearch domains require HTTPS |
139
+ | `cloudfront-viewer-policy-https` | AWS::CloudFront::Distribution | Ensures CloudFront uses HTTPS viewer policy |
140
+
141
+ **Assessment Logic**:
142
+ - Validates SSL/TLS configuration across all services
143
+ - Checks for proper certificate management
144
+ - Ensures encryption in transit for data flows
145
+
146
+ ### Control 3.11: Encrypt Sensitive Data at Rest
147
+
148
+ **Purpose**: Encrypt sensitive data at rest on all enterprise assets.
149
+
150
+ | Config Rule | Resource Types | Description |
151
+ |-------------|----------------|-------------|
152
+ | `encrypted-volumes` | AWS::EC2::Volume | Ensures EBS volumes are encrypted |
153
+ | `rds-storage-encrypted` | AWS::RDS::DBInstance | Ensures RDS instances have encrypted storage |
154
+ | `s3-default-encryption-kms` | AWS::S3::Bucket | Ensures S3 buckets have default KMS encryption |
155
+ | `dynamodb-table-encrypted-kms` | AWS::DynamoDB::Table | Ensures DynamoDB tables are encrypted with KMS |
156
+ | `backup-recovery-point-encrypted` | AWS::Backup::RecoveryPoint | Ensures backup recovery points are encrypted |
157
+ | `elasticsearch-encrypted-at-rest` | AWS::Elasticsearch::Domain | Ensures Elasticsearch domains are encrypted at rest |
158
+ | `redshift-cluster-kms-enabled` | AWS::Redshift::Cluster | Ensures Redshift clusters use KMS encryption |
159
+ | `secretsmanager-secret-encrypted-with-kms-key` | AWS::SecretsManager::Secret | Ensures secrets are encrypted with KMS |
160
+
161
+ **Assessment Logic**:
162
+ - Validates encryption configuration for all data stores
163
+ - Checks for proper KMS key usage
164
+ - Ensures encryption at rest for backups and snapshots
165
+
166
+ ### Control 7.1: Establish and Maintain a Vulnerability Management Process
167
+
168
+ **Purpose**: Establish and maintain a vulnerability management process.
169
+
170
+ | Config Rule | Resource Types | Description |
171
+ |-------------|----------------|-------------|
172
+ | `ecr-private-image-scanning-enabled` | AWS::ECR::Repository | Ensures ECR repositories have image scanning enabled |
173
+ | `guardduty-enabled-centralized` | AWS::GuardDuty::Detector | Ensures GuardDuty is enabled and centralized |
174
+ | `ec2-managedinstance-patch-compliance-status-check` | AWS::EC2::Instance | Ensures EC2 instances are compliant with patch management |
175
+ | `inspector-assessment-target-exists` | AWS::Inspector::AssessmentTarget | Ensures Inspector assessment targets exist |
176
+
177
+ **Assessment Logic**:
178
+ - Validates vulnerability scanning capabilities
179
+ - Checks for threat detection services
180
+ - Ensures patch management compliance
181
+
182
+ ## IG3 - Advanced Security
183
+
184
+ ### Control 3.14: Log Sensitive Data Access
185
+
186
+ **Purpose**: Log sensitive data access including modification and disposal.
187
+
188
+ | Config Rule | Resource Types | Description |
189
+ |-------------|----------------|-------------|
190
+ | `api-gw-execution-logging-enabled` | AWS::ApiGateway::Stage | Ensures API Gateway execution logging is enabled |
191
+ | `cloudtrail-s3-dataevents-enabled` | AWS::CloudTrail::Trail | Ensures CloudTrail logs S3 data events |
192
+ | `multi-region-cloudtrail-enabled` | AWS::CloudTrail::Trail | Ensures multi-region CloudTrail is enabled |
193
+ | `cloud-trail-cloud-watch-logs-enabled` | AWS::CloudTrail::Trail | Ensures CloudTrail sends logs to CloudWatch |
194
+ | `s3-bucket-logging-enabled` | AWS::S3::Bucket | Ensures S3 bucket access logging is enabled |
195
+ | `vpc-flow-logs-enabled` | AWS::EC2::VPC | Ensures VPC Flow Logs are enabled |
196
+
197
+ **Assessment Logic**:
198
+ - Validates comprehensive logging configuration
199
+ - Checks for data access event logging
200
+ - Ensures log centralization and retention
201
+
202
+ ### Control 12.8: Establish and Maintain Network Segmentation
203
+
204
+ **Purpose**: Establish and maintain network segmentation for all enterprise assets.
205
+
206
+ | Config Rule | Resource Types | Description |
207
+ |-------------|----------------|-------------|
208
+ | `api-gw-associated-with-waf` | AWS::ApiGateway::Stage | Ensures API Gateway is associated with WAF |
209
+ | `vpc-sg-open-only-to-authorized-ports` | AWS::EC2::SecurityGroup | Ensures security groups open only authorized ports |
210
+ | `no-unrestricted-route-to-igw` | AWS::EC2::RouteTable | Ensures no unrestricted routes to Internet Gateway |
211
+ | `subnet-auto-assign-public-ip-disabled` | AWS::EC2::Subnet | Ensures subnets don't auto-assign public IPs |
212
+ | `nacl-no-unrestricted-ssh-rdp` | AWS::EC2::NetworkAcl | Ensures NACLs don't allow unrestricted SSH/RDP |
213
+
214
+ **Assessment Logic**:
215
+ - Validates network segmentation controls
216
+ - Checks for proper firewall configurations
217
+ - Ensures restricted network access patterns
218
+
219
+ ### Control 13.1: Centralize Security Event Alerting
220
+
221
+ **Purpose**: Centralize security event alerting across the enterprise.
222
+
223
+ | Config Rule | Resource Types | Description |
224
+ |-------------|----------------|-------------|
225
+ | `restricted-incoming-traffic` | AWS::EC2::SecurityGroup | Ensures security groups restrict incoming traffic |
226
+ | `incoming-ssh-disabled` | AWS::EC2::SecurityGroup | Ensures SSH access is properly restricted |
227
+ | `guardduty-non-archived-findings` | AWS::GuardDuty::Detector | Ensures GuardDuty findings are not archived |
228
+ | `securityhub-enabled` | AWS::SecurityHub::Hub | Ensures Security Hub is enabled for centralization |
229
+
230
+ **Assessment Logic**:
231
+ - Validates centralized security monitoring
232
+ - Checks for proper alerting mechanisms
233
+ - Ensures security event correlation
234
+
235
+ ## Bonus Security Rules
236
+
237
+ Beyond the required 131 CIS Controls rules, the framework includes 5 additional security enhancements:
238
+
239
+ ### Enhanced Logging Security
240
+ | Config Rule | Resource Types | Description |
241
+ |-------------|----------------|-------------|
242
+ | `cloudwatch-log-group-encrypted` | AWS::Logs::LogGroup | Ensures CloudWatch log groups are encrypted |
243
+
244
+ ### Network Security Enhancements
245
+ | Config Rule | Resource Types | Description |
246
+ |-------------|----------------|-------------|
247
+ | `incoming-ssh-disabled` | AWS::EC2::SecurityGroup | Enhanced SSH access restrictions |
248
+ | `restricted-incoming-traffic` | AWS::EC2::SecurityGroup | Advanced network access controls |
249
+
250
+ ### Data Encryption Enhancements
251
+ | Config Rule | Resource Types | Description |
252
+ |-------------|----------------|-------------|
253
+ | `kinesis-stream-encrypted` | AWS::Kinesis::Stream | Ensures Kinesis streams are encrypted |
254
+ | `sqs-queue-encrypted-kms` | AWS::SQS::Queue | Ensures SQS queues use KMS encryption |
255
+
256
+ **Business Value**: These bonus rules provide additional security value beyond CIS Controls requirements, enhancing the overall security posture with minimal additional overhead.
257
+
258
+ ## Config Rule Details
259
+
260
+ ### Rule Parameters
261
+
262
+ Many Config rules accept parameters that customize their behavior:
263
+
264
+ ```yaml
265
+ # Example: IAM Password Policy
266
+ iam-password-policy:
267
+ parameters:
268
+ RequireUppercaseCharacters: true
269
+ RequireLowercaseCharacters: true
270
+ RequireNumbers: true
271
+ RequireSymbols: true
272
+ MinimumPasswordLength: 14
273
+ PasswordReusePrevention: 24
274
+ MaxPasswordAge: 90
275
+ ```
276
+
277
+ ### Evaluation Triggers
278
+
279
+ Config rules are triggered by:
280
+ - **Configuration Changes**: When resource configurations change
281
+ - **Periodic**: At regular intervals (24 hours by default)
282
+ - **On-Demand**: When manually triggered
283
+
284
+ ### Compliance Status
285
+
286
+ Each resource evaluation results in one of these statuses:
287
+ - **COMPLIANT**: Resource meets the rule requirements
288
+ - **NON_COMPLIANT**: Resource violates the rule requirements
289
+ - **NOT_APPLICABLE**: Rule doesn't apply to this resource
290
+ - **INSUFFICIENT_DATA**: Not enough information to evaluate
291
+
292
+ ## Resource Type Coverage
293
+
294
+ ### Compute Services
295
+ - **EC2**: Instances, volumes, security groups, network interfaces
296
+ - **Lambda**: Functions, layers, event source mappings
297
+ - **Elastic Beanstalk**: Applications, environments
298
+
299
+ ### Storage Services
300
+ - **S3**: Buckets, bucket policies, access points
301
+ - **EBS**: Volumes, snapshots
302
+ - **EFS**: File systems, mount targets
303
+
304
+ ### Database Services
305
+ - **RDS**: DB instances, clusters, snapshots
306
+ - **DynamoDB**: Tables, global tables
307
+ - **Redshift**: Clusters, parameter groups
308
+ - **ElastiCache**: Clusters, replication groups
309
+
310
+ ### Networking Services
311
+ - **VPC**: VPCs, subnets, route tables, NACLs
312
+ - **ELB**: Classic load balancers, application load balancers
313
+ - **CloudFront**: Distributions, origins
314
+ - **API Gateway**: APIs, stages, deployments
315
+
316
+ ### Security Services
317
+ - **IAM**: Users, roles, policies, groups
318
+ - **KMS**: Keys, aliases, grants
319
+ - **Secrets Manager**: Secrets, rotation configurations
320
+ - **GuardDuty**: Detectors, findings
321
+ - **Security Hub**: Hubs, standards subscriptions
322
+
323
+ ### Management Services
324
+ - **CloudTrail**: Trails, event data stores
325
+ - **CloudWatch**: Alarms, log groups, metrics
326
+ - **Systems Manager**: Managed instances, patch compliance
327
+ - **Organizations**: Accounts, organizational units
328
+
329
+ ## Assessment Logic
330
+
331
+ ### Resource Discovery
332
+
333
+ For each Config rule, the assessment tool:
334
+
335
+ 1. **Identifies Resource Types**: Determines which AWS resource types to evaluate
336
+ 2. **Discovers Resources**: Uses AWS APIs to find all resources of the specified types
337
+ 3. **Filters by Region**: Evaluates resources in the specified regions
338
+ 4. **Applies Rule Logic**: Executes the Config rule evaluation logic
339
+
340
+ ### Evaluation Process
341
+
342
+ ```python
343
+ def evaluate_config_rule(rule_name, resource_type, region):
344
+ # 1. Discover resources
345
+ resources = discover_resources(resource_type, region)
346
+
347
+ # 2. For each resource
348
+ for resource in resources:
349
+ # 3. Apply rule logic
350
+ compliance_result = apply_rule_logic(rule_name, resource)
351
+
352
+ # 4. Generate result
353
+ yield ComplianceResult(
354
+ resource_id=resource.id,
355
+ resource_type=resource_type,
356
+ compliance_status=compliance_result.status,
357
+ evaluation_reason=compliance_result.reason,
358
+ config_rule_name=rule_name,
359
+ region=region,
360
+ timestamp=datetime.now()
361
+ )
362
+ ```
363
+
364
+ ### Scoring Calculation
365
+
366
+ Compliance scores are calculated as:
367
+
368
+ ```
369
+ Control Score = (Compliant Resources / Total Resources) × 100
370
+ IG Score = Weighted Average of Control Scores
371
+ Overall Score = Weighted Average of IG Scores
372
+ ```
373
+
374
+ ### Error Handling
375
+
376
+ The assessment tool handles various error conditions:
377
+
378
+ - **Permission Errors**: Mark as "INSUFFICIENT_PERMISSIONS"
379
+ - **Service Unavailable**: Mark as "ERROR" with details
380
+ - **Resource Not Found**: Mark as "NOT_APPLICABLE"
381
+ - **API Throttling**: Implement exponential backoff and retry
382
+
383
+ ### Remediation Guidance
384
+
385
+ Each non-compliant finding includes:
386
+
387
+ 1. **Specific Steps**: Detailed remediation instructions
388
+ 2. **AWS CLI Commands**: Ready-to-use command examples
389
+ 3. **Console Links**: Direct links to AWS Console
390
+ 4. **Documentation**: Links to relevant AWS documentation
391
+ 5. **Priority**: Risk-based priority (HIGH, MEDIUM, LOW)
392
+
393
+ This comprehensive mapping ensures that the assessment tool provides accurate, actionable compliance evaluation based on AWS Config rule specifications while maintaining independence from the AWS Config service itself.