You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/getting-started/components/authz_manager.md
+69-1Lines changed: 69 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,21 +21,89 @@ the authorization tokens that the server can properly identify and use to enforc
21
21
The server-side implementation of the authorization functionality is defined [here](./../../../sdk/python/feast/permissions/server).
22
22
Few of the key models, classes to understand the authorization implementation on the client side can be found [here](./../../../sdk/python/feast/permissions/client).
23
23
24
+
## Default Authorization Behavior
25
+
26
+
### Feast Operator (Kubernetes Deployments)
27
+
28
+
When deploying Feast using the [Feast operator](../../../infra/feast-operator/docs/api/markdown/ref.md), **Kubernetes authentication is enabled by default**. If no `authz` section is specified in the `FeatureStore` CR, the operator automatically configures `kubernetes` auth for all deployed services.
29
+
30
+
This follows an **"Authenticated by Default, Authorized Gradually"** security model:
31
+
- All Feast endpoints require a valid Kubernetes bearer token by default.
32
+
- If no explicit `Permission` objects are defined (via `permissions.py` + `feast apply`), **all authenticated users are granted full access**. A warning is logged to remind administrators to define fine-grained permissions.
33
+
- Unauthenticated requests are rejected.
34
+
35
+
This ensures that Feast deployments are never accidentally exposed without authentication, while allowing teams to incrementally adopt fine-grained RBAC.
36
+
37
+
#### Disabling Authentication with `noAuth`
38
+
39
+
For development, testing, or environments where authentication is handled externally, you can explicitly disable authentication using the `noAuth` option in the `FeatureStore` CR:
40
+
41
+
```yaml
42
+
apiVersion: feast.dev/v1
43
+
kind: FeatureStore
44
+
metadata:
45
+
name: my-feature-store
46
+
spec:
47
+
feastProject: my_project
48
+
authz:
49
+
noAuth: true
50
+
```
51
+
52
+
{% hint style="warning" %}
53
+
Setting `noAuth: true` disables all authentication and authorization. All endpoints become publicly accessible without any identity checks. Only use this for local development or testing environments. For production, use `kubernetes` or `oidc` authentication.
54
+
{% endhint %}
55
+
56
+
#### Explicit Kubernetes Auth (Default)
57
+
58
+
This is equivalent to the default behavior when no `authz` section is provided:
59
+
60
+
```yaml
61
+
apiVersion: feast.dev/v1
62
+
kind: FeatureStore
63
+
metadata:
64
+
name: my-feature-store
65
+
spec:
66
+
feastProject: my_project
67
+
authz:
68
+
kubernetes: {}
69
+
```
70
+
71
+
#### OIDC Auth via Operator
72
+
73
+
```yaml
74
+
apiVersion: feast.dev/v1
75
+
kind: FeatureStore
76
+
metadata:
77
+
name: my-feature-store
78
+
spec:
79
+
feastProject: my_project
80
+
authz:
81
+
oidc:
82
+
secretRef:
83
+
name: feast-oidc-secret
84
+
```
85
+
86
+
### Standalone Deployments (feature_store.yaml)
87
+
24
88
## Configuring Authorization
25
89
The authorization is configured using a dedicated `auth` section in the `feature_store.yaml` configuration.
26
90
27
91
**Note**: As a consequence, when deploying the Feast servers with the Helm [charts](../../../infra/charts/feast-feature-server/README.md),
28
92
the `feature_store_yaml_base64` value must include the `auth` section to specify the authorization configuration.
29
93
30
94
### No Authorization
31
-
This configuration applies the default `no_auth` authorization:
95
+
This configuration applies the `no_auth` authorization:
32
96
```yaml
33
97
project: my-project
34
98
auth:
35
99
type: no_auth
36
100
...
37
101
```
38
102
103
+
{% hint style="warning" %}
104
+
Running with `auth.type: no_auth` leaves all endpoints unauthenticated. This is suitable for local development only. For production deployments, configure `kubernetes` or `oidc` authentication.
105
+
{% endhint %}
106
+
39
107
### OIDC Authorization
40
108
With OIDC authorization, the Feast client proxies retrieve the JWT token from an OIDC server (or [Identity Provider](https://openid.net/developers/how-connect-works/))
41
109
and append it in every request to a Feast server, using an [Authorization Bearer Token](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication#bearer).
Copy file name to clipboardExpand all lines: docs/reference/auth/kubernetes_auth_setup.md
+51-3Lines changed: 51 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,6 +10,45 @@ Feast supports extracting user groups, namespaces and roles of both Service Acco
10
10
-**Namespaces**: Kubernetes namespaces associated with User/SA
11
11
-**Roles**: Kubernetes roles associated with User/SA
12
12
13
+
## Operator Default Behavior
14
+
15
+
When deploying Feast using the Feast operator, **Kubernetes authentication is enabled by default**. You do not need to explicitly configure `authz` in the `FeatureStore` CR — the operator automatically applies `kubernetes` auth to all deployed services.
16
+
17
+
### What This Means
18
+
19
+
- All HTTP/gRPC requests to Feast services must include a valid Kubernetes bearer token in the `Authorization` header.
20
+
- The server validates the token via the Kubernetes Token Access Review API and extracts user identity (username, groups, namespaces, roles).
21
+
- If no `Permission` objects are defined, authenticated users get full access (with a warning logged).
22
+
- Unauthenticated requests receive a `401 Unauthorized` response.
23
+
24
+
### Disabling Authentication
25
+
26
+
If you need to run Feast without authentication (e.g., for local development or testing), explicitly set `noAuth: true` in the `FeatureStore` CR:
27
+
28
+
```yaml
29
+
apiVersion: feast.dev/v1
30
+
kind: FeatureStore
31
+
metadata:
32
+
name: my-feature-store
33
+
spec:
34
+
feastProject: my_project
35
+
authz:
36
+
noAuth: true
37
+
```
38
+
39
+
{% hint style="warning" %}
40
+
`noAuth: true` disables all authentication and authorization checks. All endpoints become publicly accessible. Use only in non-production environments.
@@ -142,20 +181,29 @@ Run `feast apply` from CLI/API/SDK on server or from client(if permitted) to app
142
181
143
182
### Common Issues
144
183
145
-
1.**Token Access Review Fails**
184
+
1. **401 Unauthorized After Upgrading**
185
+
- The Feast operator now defaults to Kubernetes authentication. If your existing FeatureStore CR did not specify `authz`, the upgrade enables auth automatically.
186
+
- **Quick fix for testing**: Add `authz.noAuth: true` to your `FeatureStore` CR to restore the previous unauthenticated behavior.
187
+
- **Recommended**: Update your client applications to include a valid Kubernetes bearer token in requests.
188
+
189
+
2. **Token Access Review Fails**
146
190
- Check that the Feast server has the required RBAC permissions
147
191
- Verify the token is valid and not expired
148
192
- Check server logs for detailed error messages in debug mode
149
193
150
-
2.**Groups/Namespaces Not Extracted**
194
+
3. **Groups/Namespaces Not Extracted**
151
195
- Verify the token contains the expected claims
152
196
- Check that the user is properly configured in Kubernetes/ODH/RHOAI
153
197
154
-
3.**Permission Denied**
198
+
4. **Permission Denied**
155
199
- Verify the user is added to required groups/namespaces Or has the required role assigned
156
200
- Check that the policy is correctly configured
157
201
- Review the permission evaluation logs
158
202
203
+
5. **"No permissions defined" Warning in Logs**
204
+
- This is expected when Kubernetes auth is enabled but no `Permission` objects have been applied.
205
+
- Authenticated users get full access by default. Define permissions via `permissions.py` + `feast apply` to enforce fine-grained authorization.
0 commit comments