Skip to content

Commit 6d01319

Browse files
add draft authz gep e/w
1 parent 54df0a8 commit 6d01319

File tree

2 files changed

+104
-0
lines changed

2 files changed

+104
-0
lines changed

geps/gep-3779/index.md

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# GEP-3779: Identity Based Authz for East-West Traffic
2+
3+
* Issue: [#3779](https://github.com/kubernetes-sigs/gateway-api/issues/3779)
4+
* Status: Provisional
5+
6+
(See [status definitions](../overview.md#gep-states).)
7+
8+
9+
## TLDR
10+
11+
Provide a method for configuring Gateway API Mesh implementations to enforce east-west identity-based Authorization controls. At the time of writing this we leave Authentication for specific implementation and outside of this proposal scope.
12+
13+
14+
## Goals
15+
16+
(Using the [Gateway API Personas](../../concepts/roles-and-personas.md))
17+
18+
* A way for Ana the Application Developer to configure a Gateway API for Mesh implementation to enforce authorization policy that **allows** or **denies** identity or multiple identities to talk with some set of the workloads she controls.
19+
20+
* A way for Chihiro, the Cluster Admin, to configure a Gateway API for Mesh implementation to enforce non-overridable cluster-wide, authorization policies that **allows** or **denies** identity or multiple identities to talk with some set of the workloads in the cluster.
21+
22+
* A way for both Ana and Chihiro to restrict the scope of the policies they deploy to specific ports.
23+
24+
## Stretch Goals
25+
26+
* A way for Chihiro, the Cluster Admin, to configure a Gateway API for Mesh implementation to enforce default, overridable, cluster-wide, authorization policies that **allows** or **denies** identity or multiple identities to talk with some set of the workloads in the cluster.
27+
28+
## Non-Goals
29+
30+
* Support identity based authorization for north-south traffic or define the composition with this API.
31+
32+
## Deferred Goals
33+
34+
* (Potentially) Support enforcement on attributes beyond identities and ports.
35+
36+
## Introduction
37+
38+
Authorization is positioned as one of core mesh values. Every mesh supports some kind of east/west authorization between the workloads it controls.
39+
40+
Kubernetes core provides NetworkPolicies as one way to do it. Network Policies however falls short in many ways including:
41+
42+
* Network policies leverage labels as identities.
43+
* Labels are mutable at runtime. This opens a path for escalating privileges
44+
* Most implementations of network policies translate labels to IPs, this involves an eventual consistency nature which can and has lea to over permissiveness in the past.
45+
46+
* Scale. Network Policies are enforced using IPs (different selectors in the APIs get translated to IPs). This does not scale well with large clusters or beyond a single cluster
47+
48+
An identity-based authorization API is essential because it provides a structured way to control authorization between identities within the cluster.
49+
50+
### State of the World
51+
52+
Every mesh vendor has their own API of such authorization. Below we describe the UX for different implementations:
53+
54+
<TODO>
55+
56+
#### Istio
57+
58+
59+
#### Linkerd
60+
61+
62+
#### Cilium
63+
64+
65+
66+
## Outstanding Questions and Concerns (TODO)
67+
68+
69+
## API
70+
71+
72+
73+
## Conformance Details
74+
75+
76+
#### Feature Names
77+
78+
79+
### Conformance tests
80+
81+
82+
## Alternatives
83+
84+
85+
## References

geps/gep-3779/metadata.yaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
apiVersion: internal.gateway.networking.k8s.io/v1alpha1
2+
kind: GEPDetails
3+
number: 3779
4+
name: Identity Based Authz for east-west traffic
5+
status: Provisional
6+
# Any authors who contribute to the GEP in any way should be listed here using
7+
# their GitHub handle.
8+
authors:
9+
- liorlieberman
10+
- aryan16
11+
# references is a list of hyperlinks to relevant external references.
12+
# It's intended to be used for storing GitHub discussions, Google docs, etc.
13+
references: {}
14+
# featureNames is a list of the feature names introduced by the GEP, if there
15+
# are any. This will allow us to track which feature was introduced by which GEP.
16+
featureNames: {}
17+
# changelog is a list of hyperlinks to PRs that make changes to the GEP, in
18+
# ascending date order.
19+
changelog: {}

0 commit comments

Comments
 (0)