Skip to main content
Version: next

Decision matrix

Profile intent

Profile intent.
ProfileOptimized forWhat it trades off
DevelopmentLocal testing, CI, and quick evaluation when long-term trust posture is not the goal.Allows bootstrap and unseal material to exist in cluster Secrets and relaxes some runtime guarantees.

Reference table

Profile comparison

Profile comparison.
FeatureHardenedDevelopment
Unseal root of trustRequires a non-static external trust source such as transit, cloud KMS, or HSM-backed modes.Defaults can rely on a static key in a Kubernetes Secret.
TLS postureRequires External or ACME style trust; OperatorManaged TLS is not the production path.Allows operator-managed TLS for local or test usage.
Bootstrap modelSelf-init is the supported production path.Manual bootstrap or self-init are both possible.
Supply-chain guardrailsImage verification protections remain on and cannot degrade to warning-only behavior.Verification can be relaxed for testing.

Why Hardened is the supported production contract

Reference table

Hardened production requirements

Hardened production requirements.
RequirementWhy it existsOperational effect
External trust root for unsealThe cluster should not keep its root of trust only in Kubernetes etcd.Cloud KMS, transit, KMIP, or PKCS#11-style paths become part of the deployment contract.
Trusted TLS pathThe workload identity boundary should be anchored in a production-grade certificate model.OperatorManaged TLS is rejected for Hardened clusters.
Self-init enabledThe supported bootstrap path should avoid persisting the initial root token.Human bootstrap becomes declarative instead of secret-based.
Verification guardrails stay enforcedProduction image trust should not be optional.Managed workloads keep digest and verification enforcement even when omitted from config.
What Hardened is really saying

Hardened means the operator is allowed to assume an external trust root, explicit runtime identity, and production-ready lifecycle posture. It is a statement about the whole operating model, not only about one field in the CR.

What Development deliberately relaxes

Development is still useful, but it should be understood as an intentional weakening of the production contract:

  • bootstrap material can persist in cluster Secrets
  • static unseal remains available
  • operator-managed TLS can be used
  • runtime and supply-chain controls can be less strict
  • the cluster reports a security-risk signal rather than pretending this posture is production-ready
Do not upgrade trust roots in place by assumption

Teams often start in Development for exploration. When moving to staging or production, create a new Hardened cluster rather than assuming a Development trust path can be promoted safely.

Where configuration belongs

This page explains the contract. The actual task of setting spec.profile, choosing the unseal mode, and satisfying the production requirements belongs in Configure Security Profiles.

Continue the security model

Next release documentation

You are reading the unreleased main docs. Use the version menu for the newest published release, or check the release notes for what is already out.

Was this page helpful?

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