Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

Kubernetes es un orquestador

Slide 7

Slide 7 text

Kubernetes es una API

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

Por fuera: Kubernetes es una API

Slide 10

Slide 10 text

Por fuera: Kubernetes es una API

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

Protegiendo la API de Kubernetes Priorizando la seguridad

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

Protegiendo Kubernetes desde adentro

Slide 22

Slide 22 text

Protegiendo Kubernetes desde adentro

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

Herramientas para encontrar problemas Popeye

Slide 25

Slide 25 text

Herramientas para encontrar problemas Trivy

Slide 26

Slide 26 text

Herramientas para encontrar problemas kubeaudit

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

Herramientas para encontrar problemas Gatekeeper

Slide 29

Slide 29 text

Herramientas para encontrar problemas Gatekeeper

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

Gracias peladonerd.com