Kubernetes secrets: base64 non è cifratura
Il tipo Secret di Kubernetes sembra protetto ma il contenuto è codificato in base64, non cifrato. E di default etcd (il datastore del cluster) li conserva in chiaro.
Le esposizioni
Chi ottiene accesso a etcd (backup, nodo control-plane, permessi API) legge ogni secret. Chi ha get secrets via RBAC li estrae banalmente. E i secret montati come variabili d'ambiente trapelano nei log e nei dump di processo.
kubectl get secret db -o jsonpath='{.data.password}' | base64 -dDifesa
Abilita encryption at rest per etcd (provider KMS). RBAC stretto su secrets. Meglio ancora, un secret manager esterno (Vault, provider cloud) con injection a runtime via CSI, così i segreti non vivono in etcd. Preferisci volumi montati a variabili d'ambiente.