turbot/steampipe-mod-aws-compliance

Control: VPC route table should restrict public access to IGW

Description

Ensure that there are public routes in the route table to an Internet Gateway (IGW). The rule is non-compliant if a route to an IGW has a destination CIDR block of '0.0.0.0/0' or '::/0'.

Usage

Run the control in your terminal:

powerpipe control run aws_compliance.control.vpc_route_table_restrict_public_access_to_igw

Snapshot and share results via Turbot Pipes:

powerpipe login
powerpipe control run aws_compliance.control.vpc_route_table_restrict_public_access_to_igw --share

SQL

This control uses a named query:

with route_with_public_access as (
select
route_table_id,
count(*) as num
from
aws_vpc_route_table,
jsonb_array_elements(routes) as r
where
( r ->> 'DestinationCidrBlock' = '0.0.0.0/0'
or r ->> 'DestinationCidrBlock' = '::/0'
)
and r ->> 'GatewayId' like 'igw%'
group by
route_table_id
)
select
a.route_table_id as resource,
case
when b.route_table_id is null then 'ok'
else 'alarm'
end as status,
case
when b.route_table_id is null then a.title || ' does not have public routes to an Internet Gateway (IGW)'
else a.title || ' contains ' || b.num || ' rule(s) which have public routes to an Internet Gateway (IGW)'
end as reason
, region, account_id
from
aws_vpc_route_table as a
left join route_with_public_access as b on b.route_table_id = a.route_table_id;

Tags