💻 Software kubernetes Avanzato ⏱ 255 min 👁 5 visualizzazioni

Kubernetes Security: RBAC, Pod Security Standards, OPA Gatekeeper e Vault

Sara Ferraro @Sara_SelfHost · 24/05/2026 · aggiornato 2 giorni fa

🧰 Materiali necessari

  • Cluster Kubernetes 1.28+
  • HashiCorp Vault 1.15+
  • OPA Gatekeeper 3.15+
  • Kyverno come alternativa
  • Trivy 0.50+ e Trivy Operator
  • Falco 0.37+
  • kube-bench per CIS audit
  • kube-hunter per pen testing
  • External Secrets Operator
  • Cosign per image signing
  • Syft per SBOM generation
  • OIDC provider (Keycloak o Entra)
  • kubectl con plugin rbac-tool e oidc-login
  • Helm 3.14+
  • ELK o SIEM per audit log
La sicurezza in Kubernetes richiede defense-in-depth attraverso multiple layer: cluster infrastructure, network policy, workload identity, image supply chain, runtime security, e gestione di dati sensibili. Un cluster mal configurato espone attack surface enorme: API server raggiungibile da internet...
🔐

Contenuto riservato ai membri

Registrati gratis per accedere al corso completo, ai quiz e ai PDF scaricabili.

Crea account gratis → Ho già un account

📋 Passi

  1. 1
    Audit RBAC e identificazione permission eccessive
    {"step":1,"title":"Audit RBAC e identificazione permission eccessive","description":"Esegui audit completo: kubectl get clusterrolebinding -o yaml > audit-crb.yaml e analizza chi ha binding a cluster-admin. Usa rbac-tool per esplorare permission in modo visuale. Identifica ServiceAccount con permission eccessive verificando i binding per ognuno. Documenta lista utenti con cluster-admin, ServiceAccount inutilizzati, e binding orfani."}
  2. 2
    Implementazione RBAC least privilege
    {"step":2,"title":"Implementazione RBAC least privilege","description":"Crea Role granulari per ogni applicazione: es. frontend ottiene solo get watch list su configmap nel proprio namespace, niente di piu. Crea ServiceAccount dedicato per ogni deployment. Assegna nel pod spec con serviceAccountName. Per developer usa ClusterRole developer-view per read-only. Testa permission con kubectl auth can-i."}
  3. 3
    Setup OIDC authentication
    {"step":3,"title":"Setup OIDC authentication","description":"Configura OIDC provider (Keycloak in lab o Microsoft Entra in produzione). Crea client OAuth con redirect URI per kubectl. Modifica kube-apiserver con flag oidc-issuer-url, oidc-client-id, oidc-username-claim, oidc-groups-claim. Installa plugin oidc-login via krew. Configura kubeconfig con exec credential plugin. Testa login via browser OIDC flow."}
  4. 4
    Pod Security Standards con enforcement graduale
    {"step":4,"title":"Pod Security Standards con enforcement graduale","description":"Inizia con warn e audit mode: kubectl label namespace production pod-security.kubernetes.io\/audit=restricted e warn=restricted. Analizza audit log K8s per pod che violano restricted policy. Refactor workload: rimuovi runAsRoot, drop capabilities non necessarie, imposta readOnlyRootFilesystem=true, allowPrivilegeEscalation=false. Switch a enforce dopo verifica completa."}
  5. 5
    Installazione OPA Gatekeeper
    {"step":5,"title":"Installazione OPA Gatekeeper","description":"Installa Gatekeeper via Helm nel namespace gatekeeper-system con creazione automatica. Verifica tutti i pod Running. Esamina CRD installati: ConstraintTemplate, Constraint, Config. Il webhook di admission intercetta ogni create e update, valuta contro policy Rego attive, e blocca oggetti non conformi con messaggio di errore esplicativo."}
  6. 6
    Policy per label obbligatorie e registry whitelist
    {"step":6,"title":"Policy per label obbligatorie e registry whitelist","description":"Crea ConstraintTemplate K8sRequiredLabels con Rego che valida presenza label team e environment su ogni Namespace. Crea template K8sAllowedRepos che valida image solo da registry whitelist aziendale. Applica Constraint con parametri specifici. Testa: crea Namespace senza label e pod con image da Docker Hub. Entrambi bloccati con messaggi esplicativi."}
  7. 7
    Policy avanzate resource limits e security context
    {"step":7,"title":"Policy avanzate resource limits e security context","description":"Crea Constraint che richiede resource.limits.cpu e resource.limits.memory su tutti i container: senza limit un pod puo consumare risorse illimitate. Crea Constraint per securityContext.runAsNonRoot=true. Crea Constraint che vieta hostPath volume eccetto in namespace specifici. Applica con enforcementAction warn prima per identificare violazioni esistenti, poi switch a deny."}
  8. 8
    Image scanning con Trivy Operator
    {"step":8,"title":"Image scanning con Trivy Operator","description":"Integra Trivy in CI: trivy image --severity CRITICAL,HIGH --exit-code 1 fa fallire la build se vulnerabilita critiche presenti. Deploy Trivy Operator nel cluster per scanning continuo automatico. Operator crea VulnerabilityReport CRD per ogni container image dei workload attivi. Query con kubectl get vulnerabilityreports -A e prioritizza remediation."}
  9. 9
    Installazione HashiCorp Vault in HA
    {"step":9,"title":"Installazione HashiCorp Vault in HA","description":"Deploy Vault in HA con integrated storage Raft: helm install vault hashicorp\/vault con ha.enabled=true e ha.replicas=3. Inizializza primo pod con vault operator init. Salva in modo sicuro 5 unseal key e root token in password manager. Unseal il pod con 3 chiavi. Unisciti altri pod al raft cluster. In produzione configura auto-unseal con KMS cloud."}
  10. 10
    Configurazione Vault Kubernetes auth method
    {"step":10,"title":"Configurazione Vault Kubernetes auth method","description":"Abilita kubernetes auth method in Vault. Configura con API URL K8s e CA certificate del cluster. Crea policy HCL per accesso a path di secret specifici con capabilities read e list. Mappa ServiceAccount K8s a Vault role specificando bound_service_account_names, bound_service_account_namespaces, policies e ttl. Testa login manuale con token ServiceAccount."}
  11. 11
    Vault Agent Injector per secret injection automatica
    {"step":11,"title":"Vault Agent Injector per secret injection automatica","description":"Vault Agent Injector e incluso nel Helm chart Vault. Crea Deployment con annotation per injection: vault.hashicorp.com\/agent-inject=true, vault.hashicorp.com\/role con nome role, vault.hashicorp.com\/agent-inject-secret con path Vault e nome file destinazione. Pod riceve initContainer e sidecar vault-agent che fetchano secret in \/vault\/secrets\/. Application legge file invece di env variable."}
  12. 12
    Dynamic database credentials
    {"step":12,"title":"Dynamic database credentials","description":"Configura Vault per dynamic secret PostgreSQL: vault secrets enable database. Configura connessione al database con plugin postgresql-database-plugin. Crea role che genera credential on-demand con TTL 1 ora tramite CREATE ROLE statement. Application richiede credential a Vault, riceve utente temporaneo PostgreSQL con scadenza automatica. Implementa gestione refresh credential nel codice."}
  13. 13
    Runtime security con Falco
    {"step":13,"title":"Runtime security con Falco","description":"Installa Falco con Helm usando driver eBPF nel namespace dedicato falco. Esamina rules default: detection di shell in container, sensitive file open, write below binary dir. Testa trigger con kubectl exec -it test-pod -- \/bin\/bash che genera alert immediato. Configura output per webhook Slack tramite falco-falcosidekick. Crea custom rules per workload specifici del tuo ambiente."}
  14. 14
    Audit logging e SIEM integration
    {"step":14,"title":"Audit logging e SIEM integration","description":"Configura audit policy con livelli appropriati: Metadata per risorse standard, RequestResponse per secret e configmap. Aggiungi flag audit-policy-file e audit-log-path a kube-apiserver. Shippa log a SIEM esterno con Filebeat DaemonSet. Crea alert per: autenticazioni fallite ripetute, tentativi di privilege escalation, accesso a secret da source non whitelistata."}
  15. 15
    CIS Benchmark e penetration testing
    {"step":15,"title":"CIS Benchmark e penetration testing","description":"Esegui kube-bench per audit cluster contro CIS Kubernetes Benchmark dal manifest ufficiale. Analizza output per ogni controllo con remediation guidance. Indirizza finding principali come anonymous-auth abilitato o permission eccessive su file di configurazione. Esegui kube-hunter in passive e active mode. Pianifica penetration test esterno annuale."}

💬 Commenti (0)

Nessun commento ancora. Sii il primo!

Accedi per commentare.