Skip to content

VPC — Drift Coverage

Supported CloudTrail Events

Event Description Status
CreateVpc VPC created ✔
DeleteVpc VPC deleted ✔
CreateSubnet Subnet created ✔
DeleteSubnet Subnet deleted ✔
ModifySubnetAttribute Subnet attribute modified ✔
CreateSecurityGroup Security group created ✔
DeleteSecurityGroup Security group deleted ✔
AuthorizeSecurityGroupIngress Ingress rule added ✔
AuthorizeSecurityGroupEgress Egress rule added ✔
RevokeSecurityGroupIngress Ingress rule removed ✔
RevokeSecurityGroupEgress Egress rule removed ✔
CreateRouteTable Route table created ✔
CreateRoute Route added ✔
DeleteRoute Route deleted ✔
AssociateRouteTable Route table associated ✔
CreateInternetGateway IGW created ✔
AttachInternetGateway IGW attached to VPC ✔
CreateNatGateway NAT Gateway created ✔
DeleteNatGateway NAT Gateway deleted ✔

Monitored Drift Attributes

VPC

  • cidr_block
  • enable_dns_hostnames
  • enable_dns_support
  • instance_tenancy
  • tags

Subnet

  • cidr_block
  • availability_zone
  • map_public_ip_on_launch
  • tags

Security Group

  • name
  • description
  • vpc_id
  • ingress rules
  • from_port, to_port, protocol
  • cidr_blocks, ipv6_cidr_blocks
  • source_security_group_id
  • egress rules

Route Table

  • routes
  • destination_cidr_block
  • gateway_id, nat_gateway_id, instance_id, vpc_peering_connection_id
  • subnet associations

Falco Rule Examples

rule: security_group_ingress_0_0_0_0
condition:
  cloud.service = "ec2" and evt.name = "AuthorizeSecurityGroupIngress" and
  drift.cidr_blocks contains "0.0.0.0/0"
output: "Security Group Opened to Internet (sg=%resource port=%drift.from_port-%drift.to_port user=%user)"
priority: critical

rule: route_table_modified
condition:
  cloud.service = "ec2" and evt.name in ("CreateRoute","DeleteRoute") and
  drift.planned = false
output: "Unplanned Route Table Change (table=%resource destination=%drift.destination_cidr_block user=%user)"
priority: warning

Example Log Output

{
  "service": "ec2",
  "event": "AuthorizeSecurityGroupIngress",
  "resource": "sg-0123456789abcdef0",
  "changes": {
    "ingress_added": [
      {
        "from_port": 22,
        "to_port": 22,
        "protocol": "tcp",
        "cidr_blocks": ["0.0.0.0/0"]
      }
    ]
  },
  "user": "admin@example.com",
  "timestamp": "2025-12-06T07:30:00Z"
}

Grafana Dashboard Examples

Metrics

  • Security group rule changes by group
  • Route table modifications
  • NAT Gateway creations/deletions
  • Subnet public IP assignment changes

Alerts

  • 0.0.0.0/0 ingress rules added
  • Unplanned route deletions
  • VPC peering changes
  • NAT Gateway deletions

Known Limitations

  • VPC Flow Logs configuration not tracked (separate service)
  • Transit Gateway attachment drift partial (v0.3.0 planned)
  • VPC Endpoint policy changes tracked but service-specific policies not parsed
  • Network ACL drift tracked but priority evaluation not analyzed

Security Considerations

VPC drift detection is critical for network security: - 0.0.0.0/0 ingress → potential breach - Route table changes → traffic redirection risk - Security group deletions → service disruption

Recommendation: Set critical priority for security group rules with 0.0.0.0/0.

Release History

  • v0.2.0-beta: Core VPC/subnet/security group/route table coverage (19 events)
  • v0.3.0 (planned): Transit Gateway, VPC Endpoint advanced features