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
Require explicit opt-in for OIDC authentication-only mode on shared gateway deployments and fail closed when gRPC user requests have no auth path. Align Helm validation, tests, and docs so weak auth modes are intentional and visible.
Signed-off-by: Adrien Langou <alangou@nvidia.com>
Copy file name to clipboardExpand all lines: deploy/helm/openshell/README.md
+3-2Lines changed: 3 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -191,6 +191,7 @@ add `ci/values-spire.yaml` to the OpenShell release values files.
191
191
| securityContext.runAsNonRoot | bool |`true`| Require the gateway container to run as a non-root user. |
192
192
| securityContext.runAsUser | int |`1000`| UID assigned to the gateway container. |
193
193
| server.appArmorProfile | string |`"Unconfined"`| Kubernetes AppArmor profile requested for sandbox agent containers. Default Unconfined avoids runtime/default AppArmor blocking the supervisor's network namespace mount setup on AppArmor-enabled nodes. Set to "" to omit the field, "RuntimeDefault" to force the runtime default profile, or "Localhost/profile-name" for an operator-managed localhost profile. |
194
+
| server.auth.allowOidcAuthOnly | bool |`false`| UNSAFE: allow OIDC authentication-only mode when adminRole and userRole are both empty. In this mode any valid token from the issuer can call user and admin APIs. Leave false for shared or production clusters. |
194
195
| server.auth.allowUnauthenticatedUsers | bool |`false`| UNSAFE: accept unauthenticated CLI/user requests as a local developer principal. Intended only for trusted local Skaffold/k3d development or a fully trusted fronting proxy. Leave false for shared or production clusters. |
195
196
| server.dbUrl | string |`"sqlite:/var/openshell/openshell.db"`| Gateway database URL (used for the default SQLite backend). |
196
197
| server.defaultRuntimeClassName | string |`""`| Default Kubernetes runtimeClassName for sandbox pods. Applied when a CreateSandbox request does not specify one. Empty (default) = omit the field, using the cluster's default RuntimeClass. Set to a RuntimeClass name (e.g. "kata-containers", "nvidia") to apply it to all sandboxes that don't explicitly override it. |
@@ -201,14 +202,14 @@ add `ci/values-spire.yaml` to the OpenShell release values files.
201
202
| server.grpcEndpoint | string |`""`| gRPC endpoint sandboxes call back into the gateway. Leave empty to derive it from the chart fullname, release namespace, service port, and disableTls flag, for example https://openshell.openshell.svc.cluster.local:8080. Override only when sandboxes must reach the gateway via a different hostname (e.g. an external ingress or a host alias). |
202
203
| server.hostGatewayIP | string |`""`| Host gateway IP for sandbox pod hostAliases. When set, sandbox pods get hostAliases entries mapping host.docker.internal and host.openshell.internal to this IP, allowing them to reach services running on the Docker host. Auto-detected by the cluster entrypoint script. |
| server.oidc.adminRole | string |`""`| Role name for admin access. Leave empty (with userRole also empty) for authentication-only mode. Both must be set or both empty. |
205
+
| server.oidc.adminRole | string |`""`| Role name for admin access. Set with userRole for RBAC mode. Leaving both empty enables authentication-only mode only when server.auth.allowOidcAuthOnly=true. |
205
206
| server.oidc.audience | string |`"openshell-cli"`| Expected audience claim for the API resource server. This should match the server's --oidc-audience, NOT the CLI client ID. |
206
207
| server.oidc.caConfigMapName | string |`""`| Name of a ConfigMap containing a CA certificate bundle (key: ca.crt) for verifying the OIDC issuer's TLS certificate. Required when the issuer uses a non-public CA (e.g. OpenShift ingress, private PKI). |
| server.oidc.jwksTtl | int |`3600`| JWKS key cache TTL in seconds. |
209
210
| server.oidc.rolesClaim | string |`""`| Dot-separated path to the roles array in the JWT claims. Keycloak: "realm_access.roles", Entra ID: "roles", Okta: "groups". |
210
211
| server.oidc.scopesClaim | string |`""`| Dot-separated path to the scopes array in the JWT claims. |
211
-
| server.oidc.userRole | string |`""`| Role name for standard user access. |
212
+
| server.oidc.userRole | string |`""`| Role name for standard user access. Set with adminRole for RBAC mode. |
212
213
| server.providerTokenGrants.spiffe.enabled | bool |`false`| Mount the SPIFFE Workload API socket into sandbox pods for dynamic provider token grants. |
213
214
| server.providerTokenGrants.spiffe.workloadApiSocketPath | string |`"/spiffe-workload-api/spire-agent.sock"`| Path to the SPIFFE Workload API socket mounted into sandbox pods. |
214
215
| server.sandboxImage | string |`"ghcr.io/nvidia/openshell-community/sandboxes/base:latest"`| Default sandbox image used when requests do not specify one. |
{{- fail "postgres.enabled was removed; the OpenShell chart no longer deploys PostgreSQL. Provision PostgreSQL separately and set server.externalDbSecret to a Secret containing a PostgreSQL URI." -}}
{{- fail "OIDC authentication-only mode authorizes any valid issuer token. Set server.oidc.adminRole and server.oidc.userRole for RBAC, or set server.auth.allowOidcAuthOnly=true to opt in explicitly." -}}
0 commit comments