Skip to content

Commit 4165994

Browse files
committed
docs: add provisional GEP for Gateway Firewall Support
Signed-off-by: Shane Utt <[email protected]>
1 parent 1cf7222 commit 4165994

File tree

2 files changed

+90
-0
lines changed

2 files changed

+90
-0
lines changed

geps/gep-3614/index.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# GEP-3614: Firewall
2+
3+
* Issue: [#3614](https://github.com/kubernetes-sigs/gateway-api/issues/3614)
4+
* Status: Provisional
5+
6+
## TLDR
7+
8+
The ability to attach firewall rules for ingress L3, L4 and L7 Gateway traffic.
9+
10+
## Motivation
11+
12+
`Gateways` are commonly exposed to the internet, which puts them as risk of
13+
attack. Internal networks can become compromised as well. We should provide
14+
tooling, documentation and best-practices for users to restrict and control
15+
access to their `Gateways`.
16+
17+
### Definitions
18+
19+
* "Firewall Engine" - A processor of request payloads and applies rulesets to
20+
the contents to identify malicious, anomalous or otherwise unwanted traffic.
21+
These are generally at the front of the request path, and may be attached to a
22+
`Gateway` as a sidecar, integrated natively as part of the `Gateway`, or
23+
deployed in front of the `Gateway` as part of the networking path.
24+
25+
### User Stories
26+
27+
* As an application developer, I want to allow specific IPs to access my
28+
application.
29+
* As an application developer, I want all ingress traffic for my Gateways to be
30+
restricted to my CDN.
31+
* As an application developer, I want to block or allow requests based on
32+
headers; e.g. allow or deny specific user-agents.
33+
* As a gateway operator I want to be able to identify and block and log
34+
malformed HTTP requests before they reach backend applications.
35+
* As a gateway operator I want to be able to provide my own signature-based
36+
detection rulesets to spot patterns of known malicious traffic and block and
37+
log them, updating those rules dynamically over time.
38+
* As a gateway operator I want to attach complete rulesets maintained by
39+
upstream standards bodies to block well known common threats and dynamically
40+
update for new threats over time.
41+
* As a gateway operator I want to detect anomalies in traffic (which may or
42+
may not be conclusively malicious) and log the requests with the option to
43+
block them as well.
44+
* As a cluster operator I want to be able to block traffic to gateways from
45+
specific geographical regions, or only allow specific regions.
46+
* As a cluster operator I want to be able to rate limit traffic to gateways to
47+
avoid overuse and abuse that could decrease stability and/or spike costs.
48+
49+
## Goals
50+
51+
* Enable attaching firewall engines to a `Gateway`
52+
* Enable `Gateway`-level firewall rule enforcement
53+
* Enable `HTTPRoute`-level firewall rule enforcement
54+
* Provide documentation and best practices for implementations which describe
55+
how firewall engines and rules can best be integrated into a Gateway API
56+
implementation.
57+
58+
## Non-Goals
59+
60+
* Building a firewall implementation
61+
* Mesh-level support
62+
63+
## API
64+
65+
**TODO**: First PR will not include any implementation details, in favor of
66+
building consensus on the motivation, goals and non-goals first. _"How?"_ we
67+
implement shall be left open-ended until _"What?"_ and _"Why?"_ are solid.
68+
69+
## Alternatives Considered
70+
71+
### NetworkPolicy
72+
73+
When discussing this originally the obvious question whether `NetworkPolicy`
74+
is sufficient, or should have some role in this, was asked. We do not consider
75+
it sufficient to resolve the goals unto itself. For the purposes of this GEP,
76+
we consider `NetworkPolicy` as an implementation detail at most: implementations
77+
_may_ choose how they enforce firewall rules, whether some of that is
78+
implemented with `NetworkPolicy` under the hood or not is up to them.
79+
80+
## References
81+
82+
* [GEP-1767: CORS](https://github.com/kubernetes-sigs/gateway-api/issues/1767)
83+

geps/gep-3614/metadata.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
apiVersion: internal.gateway.networking.k8s.io/v1alpha1
2+
kind: GEPDetails
3+
number: 3614
4+
name: Gateway Firewall Support
5+
status: Provisional
6+
authors:
7+
- shaneutt

0 commit comments

Comments
 (0)