AWS Config Configuration
AWS Config continuously monitors and records resource configurations across an AWS account. It enables compliance auditing, configuration change tracking, and drift detection. This guide covers configuration recording, Config Rules, and integration with other security services.
Quick Start
Enable AWS Config with default settings:
# Create configuration recorder
aws configservice put-configuration-recorder \
--configuration-recorder name=default,roleARN=arn:aws:iam::ACCOUNT_ID:role/config-role \
--recording-group allSupported=true,includeGlobalResourceTypes=true
# Start recording
aws configservice start-configuration-recorder --configuration-recorder-name default AWS Config begins recording resource configurations immediately. A delivery channel (S3 bucket) is required before starting the recorder. See the AWS Config documentation for complete setup details.
Core Components
AWS Config consists of four main components:
Configuration Recorder
The configuration recorder tracks resource configurations:
resource "aws_config_configuration_recorder" "main" {
name = "config-recorder"
role_arn = aws_iam_role.config.arn
recording_group {
all_supported = true
include_global_resource_types = true
}
}
resource "aws_config_configuration_recorder_status" "main" {
name = aws_config_configuration_recorder.main.name
is_enabled = true
depends_on = [aws_config_delivery_channel.main]
} Recording Options
| Option | Description | Recommendation |
|---|---|---|
all_supported | Record all supported resource types | Enable for compliance |
include_global_resource_types | Include IAM users, groups, roles, policies | Enable in one region only |
resource_types | Specific resource types to record | Use for cost optimization |
include_global_resource_types in one region (typically the primary region). Enabling in multiple regions causes duplicate recordings and increased costs.
Delivery Channel
The delivery channel specifies where configuration data is stored:
resource "aws_config_delivery_channel" "main" {
name = "config-delivery"
s3_bucket_name = aws_s3_bucket.config_logs.id
sns_topic_arn = aws_sns_topic.config_notifications.arn
snapshot_delivery_properties {
delivery_frequency = "Six_Hours"
}
depends_on = [aws_config_configuration_recorder.main]
} Delivery Channel Requirements
Snapshot Delivery Frequency
| Frequency | Use Case |
|---|---|
| One_Hour | High-change environments requiring frequent snapshots |
| Three_Hours | Moderate-change environments |
| Six_Hours | Standard environments (recommended default) |
| Twelve_Hours | Stable environments with minimal changes |
| TwentyFour_Hours | Cost-optimized for low-change environments |
Config Rules
Config Rules evaluate resource configurations against desired state:
resource "aws_config_config_rule" "s3_bucket_public_read_prohibited" {
name = "s3-bucket-public-read-prohibited"
source {
owner = "AWS"
source_identifier = "S3_BUCKET_PUBLIC_READ_PROHIBITED"
}
depends_on = [aws_config_configuration_recorder.main]
} Rule Types
Common Managed Rules
| Rule | Description |
|---|---|
S3_BUCKET_PUBLIC_READ_PROHIBITED | S3 buckets do not allow public read access |
ENCRYPTED_VOLUMES | EBS volumes are encrypted |
ROOT_ACCOUNT_MFA_ENABLED | Root account has MFA enabled |
IAM_PASSWORD_POLICY | IAM password policy meets requirements |
VPC_FLOW_LOGS_ENABLED | VPC flow logs are enabled |
CLOUDTRAIL_ENABLED | CloudTrail is enabled in all regions |
Conformance Packs
Conformance packs group Config Rules for compliance frameworks:
| Conformance Pack | Rules | Use Case |
|---|---|---|
| CIS AWS Foundations Benchmark | ~50 | Industry-standard security baseline |
| AWS Operational Best Practices | ~100 | General AWS best practices |
| PCI DSS | ~120 | Payment card compliance |
| HIPAA | ~80 | Healthcare data compliance |
| NIST 800-53 | ~150 | Federal security requirements |
Multi-Account Setup
For AWS Organizations, use an aggregator to collect configuration data across accounts:
# Create organization aggregator
aws configservice put-configuration-aggregator \
--configuration-aggregator-name org-aggregator \
--organization-aggregation-source RoleArn=arn:aws:iam::ACCOUNT_ID:role/config-aggregator-role,AllAwsRegions=true Aggregator Architecture
- Aggregator Account: Central account collecting configuration data
- Source Accounts: Member accounts with Config enabled
- Cross-Region: Single aggregator can collect from all regions
Cost Considerations
AWS Config pricing is based on:
| Component | Pricing | Notes |
|---|---|---|
| Configuration items recorded | $0.003 per item | Each resource change creates an item |
| Config Rule evaluations | $0.001 per evaluation | Per rule per resource per region |
| Conformance pack evaluations | $0.001 per evaluation | Same as individual rules |
Cost Optimization
Integration Points
AWS Config integrates with other security services for comprehensive compliance monitoring:
Next Steps
- Enable CloudTrail for API activity context
- Configure Security Hub standards that use Config Rules
- Set up EventBridge rules for compliance change notifications
- Enable conformance packs aligned with compliance requirements