Kubernetes-säkerhet: så skyddar du din klustermiljö
Group COO & CISO
Operational excellence, governance, and information security. Aligns technology, risk, and business outcomes in complex IT environments

Kubernetes-säkerhet: så skyddar du din klustermiljö
Kubernetes-kluster är per definition exponerade — distribuerade komponenter kommunicerar över nätverk, containrar delar operativsystemkärna och arbetsbelastningar skapas och förstörs kontinuerligt. Det innebär att traditionella säkerhetsmodeller med statiska brandväggar och fasta IP-listor inte räcker. Effektiv Kubernetes-säkerhet kräver defense in depth: RBAC, nätverkspolicyer, image-scanning, runtime-skydd och kontinuerlig övervakning i varje fas från build till produktion.
Viktiga slutsatser
- Kubernetes kräver ett annorlunda säkerhetstänk än traditionell infrastruktur — efemära containrar, delad kärna och komplex nätverkstrafik ställer nya krav
- RBAC, nätverkspolicyer och Pod Security Standards utgör den icke-förhandlingsbara baslinjen
- Image-scanning i CI/CD-pipeline stoppar sårbarheter innan de når klustret
- Runtime-skydd med verktyg som Falco eller Tetragon fångar beteenden som statisk analys missar
- Secrets-hantering via externa valv (HashiCorp Vault, AWS Secrets Manager) eliminerar hårdkodade hemligheter
Varför Kubernetes kräver ett annat säkerhetstänk
Den som kommer från en värld av virtuella maskiner och fysiska brandväggar möter en fundamentalt annorlunda verklighet i Kubernetes. Tre egenskaper gör säkerhetsarbetet mer komplext:
Efemäritet. Containrar lever i minuter eller sekunder. Du kan inte köra manuella sårbarhetsscanningar mot något som redan ersatts av en ny instans. Säkerhet måste vara automatiserad och inbakad i pipeline.
Delad kärna. Till skillnad från virtuella maskiner delar alla containrar på en nod samma Linux-kärna. En container escape — exempelvis via en kernelsårbarhet — ger potentiellt tillgång till alla andra containrar på samma nod. Det gör isolation till en kritisk fråga, inte en bonus.
Öst-väst-trafik. I en mikrotjänstarkitektur pratar hundratals tjänster med varandra internt i klustret. Utan nätverkspolicyer är all denna trafik öppen som standard. Det är som att ha brandväggar mot internet men inga dörrar inomhus.
Enligt CNCF:s årliga undersökning är felkonfiguration den mest rapporterade orsaken till säkerhetsincidenter i Kubernetes-miljöer. Det handlar inte om sofistikerade attacker — det handlar om att standardinställningarna är för tillåtande.
Vill ni ha expertstöd med kubernetes-säkerhet: så skyddar du din klustermiljö?
Våra molnarkitekter hjälper er med kubernetes-säkerhet: så skyddar du din klustermiljö — från strategi till implementation. Boka ett kostnadsfritt 30-minuters rådgivningssamtal utan förpliktelse.
Den grundläggande säkerhetsbaslinjen
Innan du investerar i avancerade verktyg behöver grunden vara på plats. Vi ser regelbundet i Opsios SOC att organisationer hoppar direkt till service mesh och zero-trust utan att ens ha grundläggande RBAC konfigurerat korrekt.
RBAC: principen om minsta privilegium
Role-Based Access Control (RBAC) styr vem och vad som får göra vad i klustret. Standardkonfigurationen i många installationer är alltför generös.
Konkreta åtgärder:
- Undvik
cluster-adminför allt utom break-glass-scenarier - Skapa namespace-specifika roller med explicita verb (
get,list,watch) istället för wildcards - Granska regelbundet vilka ServiceAccounts som har ClusterRoleBindings — det är vanligt att CI/CD-pipelines fått bredare rättigheter än nödvändigt under felsökning och aldrig stramats åt
- Använd
kubectl auth can-i --listför att audita faktiska behörigheter
```yaml
Exempel: restriktiv roll för en applikations ServiceAccount
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: produktion
name: app-reader
rules:
- apiGroups: [""]
resources: ["pods", "services", "configmaps"]
verbs: ["get", "list", "watch"]
```
Nätverkspolicyer: stäng öst-väst-trafiken
Kubernetes tillåter som standard all trafik mellan poddar. Det första steget är att införa en deny-all-policy per namespace och sedan explicit öppna nödvändig kommunikation.
```yaml
Deny-all ingress i ett namespace
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-ingress
namespace: produktion
spec:
podSelector: {}
policyTypes:
- Ingress
```
Viktigt: Nätverkspolicyer kräver en CNI-plugin som stödjer dem. Calico, Cilium och Antrea fungerar. Flannel i standardkonfiguration gör det inte — policyerna skapas utan felmeddelande men har noll effekt. Vi har sett organisationer som trott sig vara skyddade i månader med Flannel-kluster.
Pod Security Standards (PSS)
PSS ersatte det föråldrade PodSecurityPolicy och är inbyggt i Kubernetes sedan version 1.25. Tre nivåer definieras:
| Nivå | Vad den tillåter | Lämplig för |
|---|---|---|
| Privileged | Inga begränsningar | Systemnära arbetsbelastningar (monitoring agents, CNI-plugins) |
| Baseline | Blockerar de farligaste konfigurationerna (hostNetwork, privileged containers) | Majoriteten av arbetsbelastningar i produktion |
| Restricted | Kräver non-root, droppar capabilities, blockerar hostPath | Känsliga arbetsbelastningar, regulatoriska krav |
Enforcea Baseline som minimum på alla namespaces och Restricted för arbetsbelastningar som hanterar personuppgifter eller andra känsliga data. Under NIS2-direktivet, som trädde i kraft i oktober 2024, förväntas organisationer inom väsentliga sektorer kunna visa att de har tekniska åtgärder för att begränsa laterala rörelser — PSS i Restricted-läge är ett konkret sätt att demonstrera detta.
Säkerhet i bygg-pipeline: skifta vänster
De billigaste sårbarheterna att åtgärda är de som aldrig når produktion. Image-scanning och policy-validering i CI/CD är inte valfria.
Image-scanning och basimage-hygien
- Scanna images med verktyg som Trivy, Grype eller Snyk i varje pipeline-steg
- Använd minimala basimages:
distroless, Alpine eller scratch-builds minskar attackytan dramatiskt - Fixera image-taggar med digest (
sha256:abc123...) istället för:latest— annars vet du inte vad som faktiskt körs - Signera images med Cosign (från Sigstore-projektet) och verifiera signaturer vid deploy med en admission controller
Policy-as-code med OPA/Gatekeeper eller Kyverno
Admission controllers som validerar resurser innan de skapas i klustret är det effektivaste sättet att förhindra felkonfigurationer. Två dominerande alternativ:
| Egenskap | OPA Gatekeeper | Kyverno |
|---|---|---|
| Policy-språk | Rego (eget språk) | YAML (Kubernetes-nativt) |
| Inlärningskurva | Brantare | Lägre för K8s-vana team |
| Mutating policies | Ja | Ja, enklare syntax |
| Mognad | Äldre, bredare ekosystem | Snabb tillväxt, CNCF-projekt |
| Image-verifiering | Via extern integration | Inbyggt stöd för Cosign |
Vår rekommendation: Kyverno om teamet primärt arbetar i Kubernetes och vill snabb time-to-value. Gatekeeper om ni redan har investerat i Rego-policyer eller behöver policyer över flera system.
Exempel på en Kyverno-policy som kräver att alla containrar har resource limits:
```yaml
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: require-resource-limits
spec:
validationFailureAction: Enforce
rules:
- name: check-limits
match:
any:
- resources:
kinds:
- Pod
validate:
message: "Alla containrar måste ha CPU och minnes-limits definierade."
pattern:
spec:
containers:
- resources:
limits:
memory: "?*"
cpu: "?*"
```
Runtime-skydd: vad statisk analys missar
Scanning i pipeline fångar kända sårbarheter. Det fångar inte zero-days, komprometterade beroenden som aktiveras vid runtime eller laterala rörelser efter initial åtkomst. Runtime-skydd är det sista försvarslagret.
Falco och eBPF-baserad observabilitet
Falco (CNCF incubating project) övervakar systemanrop i realtid och larmar vid avvikande beteende: en container som plötsligt spawnar ett shell, skriver till /etc/shadow eller öppnar oväntade nätverksanslutningar.
Modernare alternativ som Tetragon (från Cilium-projektet) använder eBPF direkt för att observera och blockera — inte bara larma — utan extra overhead från kernel-moduler.
Vad vi ser i Opsios NOC: De vanligaste runtime-larmerna i Kubernetes handlar om:
1. Containrar som kör som root trots att det inte behövs
2. Oväntade utgående anslutningar (ofta komprometterade npm/pip-paket som ringer hem)
3. Exec-sessioner till produktionscontainrar som borde vara immutable
Loggning och audit trail
Kubernetes Audit Logging ska vara aktiverat på API-servern och skickas till ett centralt loggsystem (Elasticsearch, Loki, SIEM). Utan audit logs saknar ni förmåga att utreda incidenter — och det är ett krav under både ISO/IEC 27001 och NIS2.
Logga minst:
- Alla
create,update,deletepå klusterresurser - Alla
exec-kommandon till poddar - Alla autentiseringsförsök (lyckade och misslyckade)
- Ändringar i RBAC-konfiguration
Secrets-hantering: sluta base64-koda hemligheter
Kubernetes Secrets lagrar data base64-kodat — inte krypterat. Vem som helst med läsrättigheter till secrets i ett namespace kan dekoda dem. Det är inte en säkerhetslösning, det är en bekvämlighetsabstraktion.
Bättre alternativ:
1. External Secrets Operator (ESO) — synkar hemligheter från externa valv (AWS Secrets Manager, Azure Key Vault, HashiCorp Vault) till Kubernetes Secrets vid runtime
2. Sealed Secrets — krypterar secrets så att de kan lagras i Git (GitOps-vänligt) och bara dekrypteras inne i klustret
3. CSI Secrets Store Driver — monterar hemligheter direkt som volymer utan att skapa Kubernetes Secret-objekt
Minimum i produktion: Aktivera encryption at rest för etcd (där Kubernetes lagrar all state) med en KMS-provider. På EKS använd AWS KMS, på AKS Azure Key Vault, i eu-north-1 (Stockholm) eller Sweden Central för att säkerställa datalokalitet i enlighet med GDPR.
Nätverkssäkerhet bortom grunderna
Service mesh för mTLS
Nätverkspolicyer styr vilka poddar som får prata med varandra. De krypterar inte trafiken. För att kryptera öst-väst-kommunikation behövs mutual TLS (mTLS), och det enklaste sättet att införa det är med en service mesh.
| Service mesh | Overhead | Komplexitet | mTLS | Observabilitet |
|---|---|---|---|---|
| Istio | Medium-hög | Hög | Ja | Mycket omfattande |
| Linkerd | Låg | Låg-medium | Ja | God |
| Cilium Service Mesh | Låg (eBPF) | Medium | Ja | God, nätverksnivå |
Vår erfarenhet: Linkerd ger bäst avkastning på investerad tid för team som primärt vill ha mTLS och grundläggande observabilitet. Istio motiveras först när ni behöver avancerad trafikstyrning (canary deploys, fault injection). Cilium Service Mesh är intressant för team som redan kör Cilium som CNI och vill undvika sidecar-overhead.
Ingress-säkerhet
- Kör alltid TLS-terminering med certifikat från Let's Encrypt via cert-manager
- Använd en Web Application Firewall (WAF) framför ingress — ModSecurity med CoreRuleSet eller en molnbaserad WAF
- Rate-limita API-endpoints i ingress controller-konfigurationen
- Separera externa och interna ingress-controllers så att interna tjänster aldrig exponeras mot internet
Säkerhet för kontrollplanet
API-servern är hjärtat i klustret. Komprometteras den har angriparen fullständig kontroll.
- Begränsa nätverksåtkomst till API-servern. I managerade tjänster (EKS, AKS): aktivera private endpoint och stäng av public access
- Aktivera OIDC-autentisering kopplad till er identitetsleverantör (Entra ID, Okta) istället för statiska tokens eller klientcertifikat
- Rotera certifikat regelbundet — i self-hosted-kluster automatisera detta med kubeadm eller cert-manager
- Skydda etcd — kryptera trafik till etcd, begränsa nätverksåtkomst, ta regelbundna backuper krypterade med separat nyckel
En praktisk säkerhetsmodell i fyra lager
| Lager | Åtgärder | Verktyg |
|---|---|---|
| Bygg | Image-scanning, basimage-härdig, signering | Trivy, Cosign, distroless |
| Deploy | Admission control, policy-as-code, RBAC | Kyverno/Gatekeeper, PSS |
| Runtime | Syscall-monitoring, anomali-detektion | Falco, Tetragon |
| Observabilitet | Audit logs, centraliserad loggning, alerting | Kubernetes Audit, Loki/ELK, Prometheus + Alertmanager |
Varje lager fångar hot som de andra missar. Att bara ha ett lager — oavsett hur bra det är — lämnar blinda fläckar.
Kubernetes-säkerhet och regulatoriska krav
Organisationer i EU som kör Kubernetes i produktion behöver förhålla sig till:
- GDPR — Personuppgifter i containrar kräver samma skydd som överallt annars. Encryption at rest och in transit, access logging, dataläckageprevention
- NIS2-direktivet — Krav på riskhantering, incidentrapportering inom 24 timmar och supply chain-säkerhet. Image-signering och SBOM (Software Bill of Materials) blir direkta compliance-verktyg
- IMY:s tillsyn — Integritetsskyddsmyndigheten har ökat sin granskning av tekniska skyddsåtgärder. Att kunna visa att klustret har RBAC, nätverkssegmentering och audit logging stärker er position vid tillsyn
Vanliga frågor
Vilka är de vanligaste Kubernetes-sårbarheterna?
Felkonfigurerad RBAC, containrar som körs som root, avsaknad av nätverkspolicyer och exponerade API-servrar. Enligt CNCF:s årliga undersökning är felkonfiguration konsekvent den vanligaste orsaken till säkerhetsincidenter i Kubernetes-miljöer. De flesta av dessa går att åtgärda med policy-as-code och hårdare standardinställningar.
Räcker det med nätverkspolicyer för att säkra ett kluster?
Nej. Nätverkspolicyer är en kritisk komponent men bara ett lager. Du behöver också RBAC, image-scanning, runtime-skydd, secrets-hantering och loggning. Defense in depth — flera överlappande skyddslager — är den enda hållbara strategin.
Hur hanterar man secrets säkert i Kubernetes?
Undvik att lagra hemligheter direkt i Kubernetes Secrets (som bara är base64-kodade). Använd en extern secrets-hanterare som HashiCorp Vault, AWS Secrets Manager eller Azure Key Vault med en operator som External Secrets Operator för att injicera hemligheter vid runtime.
Vad är Pod Security Standards och varför behöver jag dem?
Pod Security Standards (PSS) är Kubernetes inbyggda ramverk som ersatte PodSecurityPolicy. Det definierar tre nivåer — Privileged, Baseline och Restricted — som styr vad poddar får göra. Baseline bör vara minimum i produktion; Restricted för känsliga arbetsbelastningar.
Hur skiljer sig Kubernetes-säkerhet i en managerad tjänst jämfört med self-hosted?
Med EKS, AKS eller GKE ansvarar molnleverantören för control plane-säkerhet. Du ansvarar fortfarande för nodkonfiguration, nätverkspolicyer, RBAC, image-säkerhet och applikationslager. Shared responsibility-modellen innebär att klustret inte är säkert bara för att det är managerat.
Relaterade artiklar
Om författaren

Group COO & CISO at Opsio
Operational excellence, governance, and information security. Aligns technology, risk, and business outcomes in complex IT environments
Editorial standards: This article was written by a certified practitioner and peer-reviewed by our engineering team. We update content quarterly to ensure technical accuracy. Opsio maintains editorial independence — we recommend solutions based on technical merit, not commercial relationships.