Skip to main content
Version: 0.1.0-rc.5
Default production model

Multi-tenant mode is the recommended production operating model for OpenBao Operator. Use Single-Tenant Mode only when one team directly owns one namespace and intentionally bypasses the default tenant-onboarding boundary.

Diagram

Why the control plane is split

Namespace introduction and tenant guardrails stay with the Provisioner. Workload reconciliation stays with the tenant-scoped Controller. That separation prevents one long-running identity from both granting and consuming tenant access.

Decision matrix

The control-plane split is the security model

The control-plane split is the security model.
SurfacePrimary ownerWhy it stays separateIf you shortcut it
Workload reconciliationControllerThe Controller stays namespace-scoped and only acts where onboarding already introduced access.A cluster-wide controller increases blast radius for config and Secret-facing mistakes.
Tenant user accessTenant-scoped rolesUsers can manage clusters without automatically gaining Secret read access.Operators and tenant users start sharing too much of the same trust surface.
Backup and restore executionJob-specific identitiesDay 2 jobs need narrower, time-bounded capabilities than the main controller.The controller role quietly becomes a universal credential for routine and destructive operations.

Reference table

Default tenant roles

Default tenant roles.
RoleScopeUse it forWhat it does not allow
openbaocluster-editor-roleNamespaceManaging OpenBaoCluster resources in an onboarded tenant namespace.It does not grant broad Secret read access.
openbaotenant-editor-roleNamespaceSelf-service onboarding through OpenBaoTenant in the same namespace.It does not allow arbitrary cross-namespace onboarding.

Decision matrix

Isolation layers to validate

Isolation layers to validate.
LayerDefault modelValidate thisGo deeper
Network policyOpenBao workloads default toward restricted ingress, and backup or restore jobs use their own network contract.Confirm cross-tenant traffic is blocked and backup egress is intentionally scoped.Network security
Quota and namespace guardrailsOnboarding applies default tenant quotas, limit ranges, and guardrail labels before the first cluster lands.Inspect the tenant namespace for the expected quota, limit range, and labels after onboarding.Onboard the target namespace
Backup storage isolationEach tenant should use object-storage credentials or prefixes that do not overlap with other tenants.Make sure backup credentials cannot list or read other tenants' snapshot paths.Backup operations

Validate the shared-operator boundary

Inspect

Inspect tenant guardrails after onboarding

bash

kubectl get openbaotenant <name> -n <namespace> -o yaml
kubectl get rolebinding,resourcequota,limitrange,networkpolicy -n <target-namespace>

This gives you the fast check: the onboarding request is provisioned, the namespace-scoped RBAC exists, and the expected tenant guardrails were actually introduced.

Verify

Check tenant access stays scoped

bash

kubectl auth can-i create openbaoclusters.openbao.org -n <target-namespace> --as <tenant-user>
kubectl auth can-i get secrets -n <target-namespace> --as <tenant-user>

The normal tenant editor path should allow cluster lifecycle work without granting broad Secret reads by default.

Supplemental policy engines are optional

Kyverno or Gatekeeper can still add cluster-wide guardrails, but they are not the primary tenant-isolation mechanism here. The primary controls are the split-controller model, namespace introduction through OpenBaoTenant, built-in RBAC, and admission policy enforcement.

Go deeper

Prerelease documentation

This version tracks a prerelease build. Features and behavior may change before the next stable release.

Was this page helpful?

Use Needs work to open a structured GitHub issue for this page. The Yes button only acknowledges the signal locally.