Skip to main content
Version: 0.4.x

Decision matrix

Runtime protections at a glance

Runtime protections at a glance.
ControlDefault postureWhy it matters
Read-only root filesystemThe root filesystem is immutable and mutable paths are mounted explicitly.The workload cannot silently write arbitrary state into the container image layer.
Explicit audit file storageFile audit devices write only to the configured audit storage mount when spec.auditFileStorage is used.Audit records stay on a known writable surface that can be collected and reviewed separately from the container filesystem.
Dropped Linux capabilities and seccompCapabilities are dropped and RuntimeDefault seccomp applies by default.The process keeps only the syscall and privilege surface needed to run the service.
Explicit projected Kubernetes tokenThe pod does not rely on default token automounting and uses a projected token only where the workload needs Kubernetes API access.This keeps API identity explicit, short-lived, and absent from containers that do not need it.
Job resource guardrailsBackup and restore Jobs run with explicit resource requests and limits.A lifecycle job should not starve the steady-state OpenBao Pods or neighboring workloads on the same node.

Diagram

Runtime boundary inside an operator-managed Pod

Mutable state, API identity, and rendered configuration are each introduced through explicit mounts instead of through an implicitly writable container image.

Pod hardening baseline

Reference table

Baseline pod controls

Baseline pod controls.
SurfaceExpected settingOperational note
FilesystemRead-only root filesystem with explicit writable mounts for data, logs, and temporary paths.If a plugin or sidecar needs extra write paths, treat that as a deliberate exception to review.
Privilege escalationallowPrivilegeEscalation: false with dropped capabilities.Setuid or unexpected ambient privileges should not become a recovery crutch.
SeccompRuntimeDefault.If your platform cannot support this baseline, resolve the platform issue rather than weakening the cluster silently.
Hardened security context overrides

The Hardened profile rejects pod-level spec.securityContext overrides that weaken runtime guarantees. Do not set runAsNonRoot: false, root UID/GID values, root supplemental groups, seccompProfile.type: Unconfined, pod sysctls, or Windows pod security options for Hardened OpenBao clusters.

Init container behavior

The config-rendering init container inherits the same pod-level hardening contract and does not receive a Kubernetes API token mount by default. Its job is to render dynamic configuration such as Pod IP and hostname into config.hcl, not to act as a privileged bootstrap helper.

Audit file storage mount

When spec.auditFileStorage is configured, the operator mounts one RWX PVC into each OpenBao Pod and isolates each Pod with a pod-specific subPathExpr. The default path is /openbao/audit; file audit devices must write under the effective mount path.

Reference table

Audit mount security checks

Audit mount security checks.
CheckExpected postureWhy it matters
Read-only collectionCollectors mount the audit PVC read-only.The collector path ships records onward instead of becoming another writer that can alter audit history.
Runtime hardeningKeep the OpenBao root filesystem read-only and avoid hostPath exceptions for audit collection.Audit storage is a deliberate writable path; do not broaden it into general host or node access.
Storage permissions are part of the security boundary

On standard Kubernetes, OpenBao Pods run as UID 100 and GID 1000 with fsGroup: 1000. On OpenShift, SCCs may assign IDs dynamically. Verify the RWX provider and any pre-created PVCs make the audit directory writable for the effective runtime identity before enabling the file audit device.

Identity and token exposure

Reference table

Where runtime identity exists

Where runtime identity exists.
PathHow it worksWhy it stays narrow
Init containerNo default token mount.Rendering config is not a reason to grant Kubernetes API identity.
Backup, restore, and upgrade JobsEach workflow uses its own operator-managed ServiceAccount and projected token path.Lifecycle Jobs should not reuse the long-running workload identity or borrow permissions accidentally.

Namespace and job guardrails

Reference table

Controls around the workload

Controls around the workload.
ControlWhat it doesWhy it matters
Job resource defaultsBackup and restore Jobs have explicit CPU and memory requests and limits.Operational workflows remain bounded and do not become an easy noisy-neighbor path.
Operator-owned writable pathsMutable state is confined to PVCs, temporary volumes, and generated files the operator expects.The runtime contract stays reviewable because writes happen on known surfaces.
Avoid runtime exceptions as a convenience

If a deployment needs extra host access, extra capabilities, or a writable root filesystem, treat that as a security design change. In practice it usually means the surrounding platform integration should be fixed instead of weakening the OpenBao workload contract.

Continue workload protections

Published release documentation

You are reading docs for version 0.4.x. Use the version menu to switch to next or another archived 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.