|
| 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 |
0 commit comments