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.
- aws_cis_assessment/__init__.py +11 -0
- aws_cis_assessment/cli/__init__.py +3 -0
- aws_cis_assessment/cli/examples.py +274 -0
- aws_cis_assessment/cli/main.py +1259 -0
- aws_cis_assessment/cli/utils.py +356 -0
- aws_cis_assessment/config/__init__.py +1 -0
- aws_cis_assessment/config/config_loader.py +328 -0
- aws_cis_assessment/config/rules/cis_controls_ig1.yaml +590 -0
- aws_cis_assessment/config/rules/cis_controls_ig2.yaml +412 -0
- aws_cis_assessment/config/rules/cis_controls_ig3.yaml +100 -0
- aws_cis_assessment/controls/__init__.py +1 -0
- aws_cis_assessment/controls/base_control.py +400 -0
- aws_cis_assessment/controls/ig1/__init__.py +239 -0
- aws_cis_assessment/controls/ig1/control_1_1.py +586 -0
- aws_cis_assessment/controls/ig1/control_2_2.py +231 -0
- aws_cis_assessment/controls/ig1/control_3_3.py +718 -0
- aws_cis_assessment/controls/ig1/control_3_4.py +235 -0
- aws_cis_assessment/controls/ig1/control_4_1.py +461 -0
- aws_cis_assessment/controls/ig1/control_access_keys.py +310 -0
- aws_cis_assessment/controls/ig1/control_advanced_security.py +512 -0
- aws_cis_assessment/controls/ig1/control_backup_recovery.py +510 -0
- aws_cis_assessment/controls/ig1/control_cloudtrail_logging.py +197 -0
- aws_cis_assessment/controls/ig1/control_critical_security.py +422 -0
- aws_cis_assessment/controls/ig1/control_data_protection.py +898 -0
- aws_cis_assessment/controls/ig1/control_iam_advanced.py +573 -0
- aws_cis_assessment/controls/ig1/control_iam_governance.py +493 -0
- aws_cis_assessment/controls/ig1/control_iam_policies.py +383 -0
- aws_cis_assessment/controls/ig1/control_instance_optimization.py +100 -0
- aws_cis_assessment/controls/ig1/control_network_enhancements.py +203 -0
- aws_cis_assessment/controls/ig1/control_network_security.py +672 -0
- aws_cis_assessment/controls/ig1/control_s3_enhancements.py +173 -0
- aws_cis_assessment/controls/ig1/control_s3_security.py +422 -0
- aws_cis_assessment/controls/ig1/control_vpc_security.py +235 -0
- aws_cis_assessment/controls/ig2/__init__.py +172 -0
- aws_cis_assessment/controls/ig2/control_3_10.py +698 -0
- aws_cis_assessment/controls/ig2/control_3_11.py +1330 -0
- aws_cis_assessment/controls/ig2/control_5_2.py +393 -0
- aws_cis_assessment/controls/ig2/control_advanced_encryption.py +355 -0
- aws_cis_assessment/controls/ig2/control_codebuild_security.py +263 -0
- aws_cis_assessment/controls/ig2/control_encryption_rest.py +382 -0
- aws_cis_assessment/controls/ig2/control_encryption_transit.py +382 -0
- aws_cis_assessment/controls/ig2/control_network_ha.py +467 -0
- aws_cis_assessment/controls/ig2/control_remaining_encryption.py +426 -0
- aws_cis_assessment/controls/ig2/control_remaining_rules.py +363 -0
- aws_cis_assessment/controls/ig2/control_service_logging.py +402 -0
- aws_cis_assessment/controls/ig3/__init__.py +49 -0
- aws_cis_assessment/controls/ig3/control_12_8.py +395 -0
- aws_cis_assessment/controls/ig3/control_13_1.py +467 -0
- aws_cis_assessment/controls/ig3/control_3_14.py +523 -0
- aws_cis_assessment/controls/ig3/control_7_1.py +359 -0
- aws_cis_assessment/core/__init__.py +1 -0
- aws_cis_assessment/core/accuracy_validator.py +425 -0
- aws_cis_assessment/core/assessment_engine.py +1266 -0
- aws_cis_assessment/core/audit_trail.py +491 -0
- aws_cis_assessment/core/aws_client_factory.py +313 -0
- aws_cis_assessment/core/error_handler.py +607 -0
- aws_cis_assessment/core/models.py +166 -0
- aws_cis_assessment/core/scoring_engine.py +459 -0
- aws_cis_assessment/reporters/__init__.py +8 -0
- aws_cis_assessment/reporters/base_reporter.py +454 -0
- aws_cis_assessment/reporters/csv_reporter.py +835 -0
- aws_cis_assessment/reporters/html_reporter.py +2162 -0
- aws_cis_assessment/reporters/json_reporter.py +561 -0
- aws_cis_controls_assessment-1.0.3.dist-info/METADATA +248 -0
- aws_cis_controls_assessment-1.0.3.dist-info/RECORD +77 -0
- aws_cis_controls_assessment-1.0.3.dist-info/WHEEL +5 -0
- aws_cis_controls_assessment-1.0.3.dist-info/entry_points.txt +2 -0
- aws_cis_controls_assessment-1.0.3.dist-info/licenses/LICENSE +21 -0
- aws_cis_controls_assessment-1.0.3.dist-info/top_level.txt +2 -0
- docs/README.md +94 -0
- docs/assessment-logic.md +766 -0
- docs/cli-reference.md +698 -0
- docs/config-rule-mappings.md +393 -0
- docs/developer-guide.md +858 -0
- docs/installation.md +299 -0
- docs/troubleshooting.md +634 -0
- 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.
|