Vamos a dividir en antes del despliegue y en Kubernetes.
Antes del Despliegue
- Escaneo de las imágenes de contenedores
- Durante CI.
- Escaneo constante del registry de imagenes.
Herramientas:
- snyk.
- sysdig.
- Sonarqube.
- Trivy.
- Que el servicio de la imgen lo ejecute un usuario de servicio (non-root)
Nota: Esto lo podemos sobreescribir en kubernetes usando spec.securityContext.runAsUser: 1000 o spec.allowPrivilegeEscalation: false
En Kubernetes
- Manejo usuarios y permisos
Usa RBAC, ClusterRole, ServiceAccount y siempre usa la regla de menor privilegio.
- Políticas de red
Aplica NetworkPolicy para limitar la comunicación entre pods, no quieres que un pod de front se comunique con un pod de database, se debe comunicar con el backend solamente, por mencionar un ejemplo.
Nota: Usa la regla del mínimo acceso permitido.
Herramientas:
- calico
- weave Net
También puedes usar herramientas a nivel de aplicación, usando un service mesh ya hemos hablado de dos, Linkerd e Istio.
Herramientas:
- Istio
- Linkerd
- Cifrado de tráfico, mTLS entre Servicios
Esto se resuelve usando un service mesh, solo tienes que habilitarlo.
- Seguridad y cifrado de Secrets
Habilita el cifrado usando el recurso EncryptionConfiguration. Pero todavía necesitamos algo para manejar las llaves cifradas, aquí nos apoyamos de herramientas de terceros como AWS KMS, Google KMS, Vault de HashiCorp,etc. o incluso te puede funcionar algo como pass si estás on-premise.
- Seguridad en etcd
Si estas administrando etcd ponlo detrás de un firewall, cifra toda la informacion en etcd.
- Backup y Restore
En este caso me refiero a la data de tu(s) aplicacion(es) que están corriendo en kubernetes.
- Realiza backups de tus aplicaciones regularmente.
- Guarda los backups en un lugar seguro.
- Hagan pruebas de sus backups para ver que estén funcionando correctamente en un ambiente controlado, incluso pueden automatizar estos tests para que se ejecuten cada cierto tiempo.
- Define y Aplica Políticas de seguridad
Por ejemplo:
- No permitas ejecutar contenedores como root.
- Cada pod debe tener su política de red.
- Los backups se realizan cada día a X hora.
Algunas herramientas que te pueden ayudar son:
- Open Policy Agent.
- Kyverno.
- Disaster Recovery
Define estrategias y mecanismos para una recuperación ante un desastre y sobre todo automatiza.
Define también hacer pruebas para que todo el equipo sepa qué hacer en caso de uno y poder ajustar la estrategia de recuperación, entre mayor conocimiento tengan menor tiempo les tomará en ejecutar la recuperación y menor tiempo afectaran la experiencia del usuario.
Top comments (0)