Skip to content

Commit 079f8ed

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

File tree

2 files changed

+91
-0
lines changed

2 files changed

+91
-0
lines changed

geps/gep-3614/index.md

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
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 to block or allow requests based on
30+
headers; e.g. allow or deny specific user-agents.
31+
* As a gateway operator I want to be able to identify and block and log
32+
malformed HTTP requests before they reach backend applications.
33+
* As a gateway operator I want to be able to provide my own signature-based
34+
detection rulesets to spot patterns of known malicious traffic and block and
35+
log them, updating those rules dynamically over time.
36+
* As a gateway operator I want to attach complete rulesets maintained by
37+
upstream standards bodies to block well known common threats and dynamically
38+
update for new threats over time.
39+
* As a gateway operator I want to detect anomalies in traffic (which may or
40+
may not be conclusively malicious) and log the requests with the option to
41+
block them as well.
42+
* As a cluster operator I want to be able to block traffic to gateways from
43+
specific geographical regions, or only allow specific regions.
44+
* As a cluster operator I want to be able to rate limit traffic to gateways to
45+
avoid overuse and abuse that could decrease stability and/or spike costs.
46+
* As a compliance officer I want to mutate (or block) and log responses that may
47+
contain personally identifiable information (PII).
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+
* Enable processing of both requests _and_ responses
55+
* Provide documentation and best practices for implementations which describe
56+
how firewall engines and rules can best be integrated into a Gateway API
57+
implementation.
58+
59+
## Non-Goals
60+
61+
* Building a firewall implementation
62+
* Mesh-level support
63+
64+
## API
65+
66+
**TODO**: First PR will not include any implementation details, in favor of
67+
building consensus on the motivation, goals and non-goals first. _"How?"_ we
68+
implement shall be left open-ended until _"What?"_ and _"Why?"_ are solid.
69+
70+
## Alternatives Considered
71+
72+
### NetworkPolicy
73+
74+
When discussing this originally the obvious question whether `NetworkPolicy`
75+
is sufficient, or should have some role in this, was asked. We do not consider
76+
it sufficient to resolve the goals unto itself. For the purposes of this GEP,
77+
we consider `NetworkPolicy` as an implementation detail at most: implementations
78+
_may_ choose how they enforce firewall rules, whether some of that is
79+
implemented with `NetworkPolicy` under the hood or not is up to them.
80+
81+
## References
82+
83+
* [GEP-1767: CORS](https://github.com/kubernetes-sigs/gateway-api/issues/1767)
84+

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)