Skip to content

Threat Model

This lab assumes a trusted administrator workstation, a private trusted node network, a patched Proxmox host, and Ubuntu/GitHub/Helm artifacts obtained through verified TLS and pinned checksums where supported.

What the Baseline Addresses

Risk Control
Public Git credential exposure Ignored local artifacts, Vault, no private-key generation in Terraform, history scans
Accidental network exposure Default-drop VM ingress, explicit administrator CIDRs, no public monitoring services
Man-in-the-middle administration Proxmox CA trust, verified SSH host keys, Kubernetes CA validation, secure worker join token
Configuration drift Declarative roles, handlers, mock/template tests, full live second-run acceptance
Unintended destructive replacement Exact worker selection, PV guard, full-plan scope validation, typed confirmation
Accidental cluster identity loss Stable inventory, stale-node detection, token mismatch guard, documented restore requirements

What Remains an Operator Responsibility

One machine cannot provide physical high availability. Its NVMe disk and local volumes are not replicated. Scheduled local etcd snapshots are not off-host backups. A compromised administrator key, Proxmox host, or cluster-admin kubeconfig can control the lab.

Desktop increases the guest package and GUI attack surface. Node-exporter needs host inspection; its namespace permits privileged pod security. VXLAN traffic is private-network traffic, not an encrypted overlay. The cluster does not claim default-deny pod-to-pod policy or application-level authentication.

Do not publish workloads until you have designed namespace RBAC, appropriate NetworkPolicies, ingress TLS/authentication, dependency updates, and application backup/restore. PodSecurityPolicy is removed from modern Kubernetes; use Pod Security Admission and current policy tooling instead.

See the enforced guest baseline, secret and network controls, and backup/restore procedures.