5 — Security
The operator supports two authorization models via spec.authz, plus TLS for all servers. Authorization is optional — omitting authz deploys Feast with no access control.
Kubernetes RBAC authorization
Kubernetes RBAC authorization uses ServiceAccount tokens. The operator creates ClusterRoles for each named role you declare and binds them to ServiceAccounts. Feast servers enforce these roles on every API call.
apiVersion: feast.dev/v1
kind: FeatureStore
metadata:
name: sample-rbac
spec:
feastProject: feast_rbac
authz:
kubernetes:
roles:
- feast-writer # created as a ClusterRole
- feast-reader
services:
offlineStore:
server: {}
onlineStore:
server: {}
registry:
local:
server: {}The operator creates ClusterRole resources named after each entry in roles. Bind them to subjects using standard Kubernetes ClusterRoleBinding or RoleBinding resources.
Kubernetes auth requires all services to be exposed as servers (the controller rejects partial configurations where some services are local while RBAC is enabled).
SDK docs: Feast RBAC
OIDC authorization
OIDC authorization validates Bearer tokens against an OIDC provider (Keycloak, Dex, etc.).
Secret format
Create a Secret with the OIDC client credentials:
Reference the Secret from the CR:
Advanced OIDC options
SDK docs: Feast OIDC Auth
TLS for servers
Each server accepts a tls block pointing to a Kubernetes Secret that holds the TLS certificate and key.
Creating a TLS Secret
Applying TLS to servers
Each service can use different TLS Secrets.
Custom certificate key names
By default the operator looks for keys tls.crt and tls.key. Override with:
mTLS — providing a CA certificate
For mutual TLS (client certificate verification), supply a CA cert via a ConfigMap:
OpenShift non-TLS mode
On OpenShift, services are typically accessed via Routes with TLS termination at the edge. In this case it is common to run the Feast servers without internal TLS:
See also
Last updated
Was this helpful?