Kubernetes
Segurança
CloudNative
RBAC
NetworkPolicies
Falco
OPA
DevSecOps

Sicurezza nativa del cloud: protezione delle infrastrutture Kubernetes

Sicurezza nativa del cloud: protezione delle infrastrutture Kubernetes

Kubernetes ha portato flessibilità, ma anche una nuova serie di vettori di attacco. La sicurezza deve essere integrata nella pipeline, dalla creazione dell'immagine all'esecuzione sul cluster.

Principali livelli di sicurezza

  • Supply-Chain, scansione delle vulnerabilità nelle immagini Docker].
  • Controllo dell'accesso (RBAC), autorizzazioni minime per account di servizio.
  • Criteri di rete, NetworkPolicy per isolare i pod.
  • Runtime Security, Falco, OPA Gatekeeper per rilevare comportamenti anomali.
  • Sicurezza dei dati, segreti crittografati con KMS, crittografia del volume.

Elenco di controllo della sicurezza Kubernetes

  • Abilita PodSecurityPolicy o Standard di sicurezza Pod.
  • Definire Ruoli e RoleBinding con il principio del privilegio minimo.
  • Applicare NetworkPolicy per limitare il traffico all'interno dello spazio dei nomi.
  • Scansiona immagini con Trivy o Clair in CI.
  • Implementare OPA Gatekeeper per le politiche di convalida.
  • Configura Falco per monitorare le chiamate di sistema sospette.
  • Ruota regolarmente i Segreti.
  • Controlla i registri API Server con criteri di controllo.

Esempio di RBAC limitato

apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: prod name: read-only-role rules: - apiGroups: [""] resources: ["pods", "services", "configmaps"] verbs: ["get", "list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-only-binding namespace: prod subjects: - kind: ServiceAccount name: app-sa namespace: prod roleRef: kind: Role name: read-only-role apiGroup: rbac.authorization.k8s.io

Politiche di rete semplici

apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: deny-all-except-frontend namespace: prod spec: podSelector: {} policyTypes: - Ingress - Egress ingress: - from: - podSelector: matchLabels: app: frontend

Scansione di immagini in CI

## .gitlab-ci.yml stages: - scan - build - deploy scan_image: stage: scan image: aquasec/trivy:latest script: - trivy image --severity HIGH,CRITICAL myapp:latest

Monitoraggio del runtime con Falco

apiVersion: apps/v1 kind: DaemonSet metadata: name: falco namespace: kube-system spec: selector: matchLabels: app: falco template: metadata: labels: app: falco spec: containers: - name: falco image: falcosecurity/falco:latest securityContext: privileged: true volumeMounts: - name: devfs mountPath: /host/dev - name: procfs mountPath: /host/proc - name: sysfs mountPath: /host/sys volumes: hostPath: path: /proc - name: sysfs hostPath: path: /sys

Conclusione

La sicurezza in Kubernetes è un processo continuo. Applicando livelli di difesa, dalla creazione dell'immagine alle policy di runtime, riduci drasticamente la superficie di attacco e aumenti la fiducia negli ambienti di produzione.


Quali pratiche di sicurezza hai già adottato nel tuo cluster? Condividi nei commenti!

Leggi anche