Seguridad de entornos contenerizados con enfoque en Kubernetes
Mira la Documentación completa »
Tabla de Contenidos
El proyecto "Seguridad en Kubernetes" se enfoca en fortalecer la seguridad y privacidad del entorno productivo del clúster de Kubernetes, mediante la implementación de medidas efectivas que mitiguen posibles riesgos de seguridad. Los objetivos generales incluyen mejorar la infraestructura y salvaguardar la integridad de los sistemas y la confidencialidad de los datos.
Para lograr esto, se plantean objetivos específicos como familiarizarse con la tecnología de contenedores, desplegar un clúster de Kubernetes correctamente configurado, aplicar medidas de seguridad necesarias y evaluar soluciones de monitoreo y detección de intrusiones. El proyecto también incluye pruebas de penetración, evaluación de vulnerabilidades y documentación detallada de las configuraciones y medidas de seguridad implementadas.
Este repositorio tiene como objetivo proporcionarte la información necesaria para comenzar rápidamente a trabajar con el proyecto en cuestión. Ya seas un desarrollador experimentado o nuevo en el proyecto, esta guía te ayudará a empezar en poco tiempo.
Acá se listan todo lo que se debe descargar para luego poder instalar y hacer funcionar el proyecto
-
Python
sudo apt update sudo apt install python
-
Instalar las librerias necesarias
python3 -m venv venv #Crea un nuevo entorno virtual donde se guardan todas las librerias a utilizar source venv/bin/activate pip install -r requirements.txt
-
Helm
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 sudo chmod 700 get_helm.sh ./get_helm.sh
Para ejemplos e información, por favor diríjase a la Documentación
- Investigar la literatura existente sobre seguridad en entornos clusterizados utilizando contenedores y Kubernetes.
- Desplegar un entorno de laboratorio local que permita realizar pruebas y experimentos.
- Seleccionar, evaluar e implementar soluciones de seguridad específicas para Kubernetes, como Kubernetes Security Context, Network Policies, soluciones de monitoreo y observabilidad, entre otros.
- Desplegar un entorno de laboratorio remoto (producción) y aplicar las medidas de seguridad seleccionadas al clúster de Kubernetes en producción , siguiendo las mejores prácticas recomendadas.
- Realizar pruebas y evaluación de vulnerabilidades utilizando herramientas y metodologías seleccionadas en entorno de laboratorio productivo.
- Documentar el proceso, las configuraciones, medidas de seguridad implementadas y los resultados de las pruebas realizadas.
El proceso que seguiremos implica utilizar la rama main
como la rama de producción del proyecto. Cualquier nueva funcionalidad o corrección de errores se realizará creando nuevas ramas.
Para incorporar una función en la rama main
, simplemente se crea un "PR" (Pull Request), que deberá ser aprobado por algún colaborador, cualquier colaborador puede hacerlo, o bien, si no requiere revisión, puede ser aceptado por quien esté incluyendo la funcionalidad.
Es crucial que el nombre de las ramas creadas sea lo más descriptivo posible. Por ejemplo, si trabajamos en una nueva funcionalidad relacionada con la API, la rama se debe llamar como referencia a la funcionalidad en cuestión. En el caso de tratarse de la corrección de un error en el código de la API, la llamaremos fix-api
.
Además, se contarán con ramas específicas para la documentación del proyecto denominada docs
, esta rama sera utilizada para registrar toda la documentación ya sea de la carpeta docs
o el mismo README.md
.
Los pasos para contribuir en este proyecto como miembro del mismo son:
- Clonar el repositorio (
git clone
) - Crear una nueva rama para la función (
git checkout -b feature/AmazingFeature
) - Publicar la rama en el repositorio remoto(
git push --set-upstream origin <nombre-de-la-nueva-rama>
) - Commit los cambios (
git commit -m 'Add some AmazingFeature'
) - Push a la rama (
git push origin feature/AmazingFeature
) - Abrir un Pull Request dirigido a la rama
develop
Los commits convencionales nos permiten mantener la organización al realizar los commits y facilitan la creación de releases
de forma automatizada.
Se basan en el uso de palabras clave al inicio del mensaje de cada commit, de la siguiente manera:
- feat(tema de la modificación): Breve explicación: Para cambios significativos o nuevas características.
- fix(tema de la modificación): Breve explicación: Para correcciones pequeñas.
- chore(tema de la modificación): Breve explicación: Para cambios menores insignificantes para el usuario.
- docs: Breve explicación: Para cambios que se realizan a la documentación.
Este proyecto se distribuye bajo los términos de la Licencia Pública General de GNU, versión 3.0 (GNU General Public License, version 3.0). Consulta el archivo LICENSE para obtener detalles completos.
La Licencia Pública General de GNU, versión 3.0 (GNU GPL-3.0), es una licencia de código abierto que garantiza la libertad de uso, modificación y distribución del software bajo los términos estipulados en la licencia. Requiere que cualquier software derivado se distribuya bajo los mismos términos de la GPL-3.0. Consulta el archivo LICENSE para más información sobre los términos y condiciones.
El aviso de copyright para este proyecto se encuentra detallado en el archivo LICENSE.
Federico Rodriguez Ferro - federico@rodriguezferro.com.ar
Link del Proyecto: https://github.com/danunziata/pps_fede_Ferro_2024