Skip to content

CloudFront — Drift Coverage

Supported CloudTrail Events

Event Description Status
CreateDistribution Distribution created ✔
UpdateDistribution Distribution updated ✔
DeleteDistribution Distribution deleted ✔
CreateInvalidation Cache invalidation requested ✔
UpdateOriginRequestPolicy Origin request policy updated ✔
UpdateCachePolicy Cache policy updated ✔

Monitored Drift Attributes

Distribution

  • enabled
  • origins
  • domain_name
  • origin_path
  • custom_origin_config
    • http_port, https_port
    • origin_protocol_policy
    • origin_ssl_protocols
  • s3_origin_config
    • origin_access_identity
  • default_cache_behavior
  • target_origin_id
  • viewer_protocol_policy (allow-all / https-only / redirect-to-https)
  • allowed_methods
  • cached_methods
  • compress
  • cache_policy_id
  • origin_request_policy_id
  • viewer_certificate
  • acm_certificate_arn
  • minimum_protocol_version
  • ssl_support_method
  • aliases (custom domain names)
  • price_class
  • geo_restriction
  • restriction_type (whitelist / blacklist / none)
  • locations

Cache Policies

  • name
  • min_ttl, max_ttl, default_ttl
  • parameters_in_cache_key_and_forwarded_to_origin
  • headers_config
  • cookies_config
  • query_strings_config

Falco Rule Examples

rule: cloudfront_https_disabled
condition:
  cloud.service = "cloudfront" and evt.name = "UpdateDistribution" and
  drift.changes.viewer_protocol_policy in ("allow-all","http-only")
output: "CloudFront HTTPS Disabled (distribution=%resource user=%user)"
priority: critical

rule: cloudfront_origin_changed
condition:
  cloud.service = "cloudfront" and evt.name = "UpdateDistribution" and
  drift.changes.origins != null
output: "CloudFront Origin Modified (distribution=%resource origins=%drift.changes.origins user=%user)"
priority: warning

Example Log Output

{
  "service": "cloudfront",
  "event": "UpdateDistribution",
  "resource": "E1234567890ABC",
  "changes": {
    "viewer_protocol_policy": ["redirect-to-https", "allow-all"],
    "origins": {
      "modified": [
        {
          "id": "S3-my-bucket",
          "domain_name": ["my-bucket.s3.amazonaws.com", "my-bucket-new.s3.amazonaws.com"]
        }
      ]
    }
  },
  "user": "admin@example.com",
  "timestamp": "2025-12-06T07:30:00Z"
}

Grafana Dashboard Examples

Metrics

  • CloudFront distribution updates
  • HTTPS policy changes
  • Origin modifications
  • Cache policy updates

Alerts

  • HTTPS enforcement disabled
  • Unplanned origin changes
  • Geo-restriction removed
  • SSL certificate changes

Known Limitations

  • CloudFront distribution updates have eventual consistency (may take 15-20 minutes)
  • Real-time log configuration drift tracked separately
  • Lambda@Edge function association drift partial (v0.3.0 planned)
  • Field-level encryption drift not supported yet
  • Origin Shield configuration changes partial

Security Considerations

CloudFront drift detection is critical for security and performance: - HTTPS disabled → man-in-the-middle attack risk - Origin changed → content hijacking potential - Certificate changes → SSL/TLS downgrade risk - Geo-restriction removed → compliance violation

Recommendation: Set critical priority for viewer_protocol_policy and origin changes.

Release History

  • v0.2.0-beta: Core CloudFront distribution coverage (6 events)
  • v0.3.0 (planned): Lambda@Edge, Real-time Logs, Field-level Encryption