Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Prácticas de Seguridad en Kubernetes

Prácticas de Seguridad en Kubernetes

Charla que di en un webinar con Arsys sobre las mejores prácticas para proteger tu cluster de Kubernetes.

Pablo Fredrikson

January 25, 2023
Tweet

More Decks by Pablo Fredrikson

Other Decks in Programming

Transcript

  1. Buenas prácticas
    de seguridad
    en Kubernetes
    Cloud
    Pablo Fredrikson - Principal SRE @ Split

    View Slide

  2. Pablo Fredrikson
    ● Principal SRE @ Split Software
    ● +15 años de experiencia
    ● +5 años con Kubernetes en Producción
    ● Pelado Nerd en YouTube

    View Slide

  3. Kubernetes en 3 minutos - Conceptos
    ● Pods
    ● Workers: Nodos, VMs
    ● Masters: Controllers, Schedulers, API

    View Slide

  4. MASTER
    API server
    Kube Scheduler
    Controller Manager
    Cloud Controller
    Manager
    API
    Kubernetes
    Cluster
    Services
    API
    Kubernetes
    Cluster
    Services
    API
    etcd
    deployment
    pod1:
    - container1
    - container2
    replicas: 3
    pod2:
    - container3
    replicas: 2 Kubelet Kubelet
    Kubelet
    P1R3
    P1R1
    P2R1
    P1R2
    P2R2
    Kubernetes en 3 minutos

    View Slide

  5. Kubelet
    P2R1
    Kubelet
    P1R2
    Kubelet
    Kubernetes
    Cluster
    Services
    API
    deployment
    pod1:
    - container1
    - container2
    replicas: 3
    pod2:
    - container3
    replicas: 2
    P1R3
    P1R1
    P2R2
    P1R3
    P1R1
    Kubernetes en 3 minutos

    View Slide

  6. Kubernetes es un orquestador

    View Slide

  7. Kubernetes es una API

    View Slide

  8. ¿Cómo protegemos nuestro cluster?
    ● Por fuera: API
    ● Por dentro: Seguridad en contenedores

    View Slide

  9. Por fuera: Kubernetes es una API

    View Slide

  10. Por fuera: Kubernetes es una API

    View Slide

  11. Protegiendo la API de Kubernetes
    ● Priorizar seguridad / No exponer más información de la necesaria
    ● Inventariar y manejar las API
    ● Usar una solución robusta de autorización y autenticación
    ● Practicar el principio de los privilegios mínimos
    ● Cifrar el tráfico usando TLS
    ● Quitar/limitar información que no debería ser compartida
    ● Validar datos ingeridos
    Ordenando un poquito la lista

    View Slide

  12. Protegiendo la API de Kubernetes
    ● Bloquear acceso externo
    ● Mantener Kubernetes actualizado
    ○ Estar al tanto de vulnerabilidades: https://kubernetes.io/security
    Priorizando la seguridad / No exponer más información de la necesaria

    View Slide

  13. Protegiendo la API de Kubernetes
    Priorizando la seguridad

    View Slide

  14. Protegiendo la API de Kubernetes
    ● Kubernetes CRD son geniales!
    ○ Permiten crear y controlar tus propios recursos
    ○ Extiende la API de Kubernetes
    ○ Los controladores de estos nuevos recursos pueden ser peligrosos!
    Inventariar y manejar las API

    View Slide

  15. Protegiendo la API de Kubernetes
    ● El sistema que viene por defecto está bastante bien
    ● Lo importante es configurarlo bien (próximo punto)
    Usar una solución robusta de autorización y autenticación

    View Slide

  16. Protegiendo la API de Kubernetes
    ● RBAC: Role Based Access Control
    Practicar el principio de los privilegios mínimos

    View Slide

  17. Protegiendo la API de Kubernetes
    Practicar el principio de los privilegios mínimos: RBAC
    ns1 ns2 ns3 ns4
    cluster
    usuarios
    grupos
    pods
    ● Role (set de permisos: ns)
    ● ClusterRole
    ● RoleBinding
    ● ClusterRoleBinding
    ● ServiceAccount

    View Slide

  18. Protegiendo la API de Kubernetes
    Practicar el principio de los privilegios mínimos: RBAC
    demo

    View Slide

  19. Protegiendo la API de Kubernetes
    ● Kubernetes ya usa TLS por defecto y firma sus propios certificados
    ● Puedes crear tu propia CA y hacerlo incluso más seguro
    ○ Es una buena idea pero puede ser difícil de mantener
    ○ cert-manager es una buena opción
    Cifrar el tráfico usando TLS

    View Slide

  20. Protegiendo la API de Kubernetes
    ● Kubernetes ya usa TLS por defecto y firma sus propios certificados
    ● Puedes crear tu propia CA y hacerlo incluso más seguro
    ○ Es una buena idea pero puede ser difícil de mantener
    ○ cert-manager es una buena opción
    Cifrar el tráfico usando TLS

    View Slide

  21. Protegiendo Kubernetes desde adentro

    View Slide

  22. Protegiendo Kubernetes desde adentro

    View Slide

  23. Protegiendo Kubernetes desde adentro
    ● Privileged containers
    ○ PodSecurityPolicy / PodSecurityAdmission
    ○ Rootless containers
    ■ containerd, CRI-O
    ● NetworkPolicy
    ○ Requiere un plugin de Networking compatible: Calico, Cilium, Weave
    ● ServiceMesh
    ○ Ayuda con cifrado pod to pod / svc to svc
    Varias cosas para tener en cuenta

    View Slide

  24. Herramientas para encontrar problemas
    Popeye

    View Slide

  25. Herramientas para encontrar problemas
    Trivy

    View Slide

  26. Herramientas para encontrar problemas
    kubeaudit

    View Slide

  27. Herramientas para encontrar problemas
    Gatekeeper
    git clone [email protected]:open-policy-agent/gatekeeper.git
    cd charts/gatekeeper
    helm install -n gatekeeper-system . --create-namespace

    View Slide

  28. Herramientas para encontrar problemas
    Gatekeeper

    View Slide

  29. Herramientas para encontrar problemas
    Gatekeeper

    View Slide

  30. Herramientas para encontrar problemas
    Gatekeeper
    kubectl run nginx --image=nginx
    kubectl get constraint

    View Slide

  31. Miren mi video con Tim Allclair!
    Hablamos muchos de los temas que nombré en esta charla

    View Slide

  32. Gracias
    peladonerd.com

    View Slide