En este módulo, aprenderás cómo mantener tus repositorios de Git seguros y proteger tu código y datos sensibles. La seguridad es un aspecto crucial del desarrollo de software, y Git ofrece varias herramientas y prácticas para ayudarte a mantener tus proyectos seguros.
Conceptos Clave
- Autenticación y Autorización: Asegúrate de que solo las personas autorizadas puedan acceder a tu repositorio.
- Gestión de Claves SSH: Utiliza claves SSH para una autenticación segura.
- Protección de Ramas: Implementa políticas para proteger ramas importantes como
mainomaster. - Manejo de Información Sensible: Evita incluir información sensible en tu repositorio.
- Auditoría y Monitoreo: Mantén un registro de las actividades en tu repositorio.
Autenticación y Autorización
Autenticación
La autenticación es el proceso de verificar la identidad de un usuario. Git soporta varios métodos de autenticación, incluyendo:
- Claves SSH: Un método seguro y comúnmente utilizado.
- Tokens de Acceso Personal: Utilizados en plataformas como GitHub y GitLab.
- Autenticación de Dos Factores (2FA): Añade una capa extra de seguridad.
Autorización
La autorización determina qué acciones puede realizar un usuario autenticado. Asegúrate de configurar permisos adecuados para tus colaboradores:
- Lectura: Permite ver el contenido del repositorio.
- Escritura: Permite hacer cambios en el repositorio.
- Administración: Permite cambiar configuraciones del repositorio.
Gestión de Claves SSH
Las claves SSH son una forma segura de autenticarte en servidores remotos. Aquí te mostramos cómo generar y configurar una clave SSH:
Generar una Clave SSH
Este comando generará una clave SSH. Sigue las instrucciones en pantalla para guardar la clave en el directorio predeterminado.
Añadir la Clave SSH al Agente SSH
Añadir la Clave SSH a tu Cuenta de GitHub
-
Copia el contenido de tu clave pública:
cat ~/.ssh/id_rsa.pub -
Ve a tu cuenta de GitHub y navega a Settings > SSH and GPG keys > New SSH key.
-
Pega la clave pública y guarda los cambios.
Protección de Ramas
Proteger ramas críticas como main o master es esencial para evitar cambios no autorizados. Aquí te mostramos cómo hacerlo en GitHub:
- Ve a tu repositorio en GitHub.
- Navega a Settings > Branches.
- En Branch protection rules, haz clic en Add rule.
- Configura las reglas de protección, como requerir revisiones de código antes de fusionar.
Manejo de Información Sensible
Nunca debes incluir información sensible como contraseñas, claves API o datos personales en tu repositorio. Utiliza archivos de configuración que no se suban al repositorio y añade estos archivos a .gitignore.
Ejemplo de .gitignore
Auditoría y Monitoreo
Mantén un registro de las actividades en tu repositorio para detectar cualquier actividad sospechosa. GitHub y otras plataformas ofrecen herramientas de auditoría que puedes utilizar.
Ejemplo de Auditoría en GitHub
- Ve a Settings > Security & analysis.
- Activa Security auditing para recibir alertas sobre actividades sospechosas.
Ejercicio Práctico
Ejercicio 1: Configurar una Clave SSH
- Genera una clave SSH en tu máquina local.
- Añade la clave SSH al agente SSH.
- Añade la clave SSH a tu cuenta de GitHub.
Ejercicio 2: Proteger la Rama main
- Ve a tu repositorio en GitHub.
- Configura una regla de protección para la rama
mainque requiera revisiones de código antes de fusionar.
Ejercicio 3: Crear un Archivo .gitignore
- Crea un archivo
.gitignoreen la raíz de tu repositorio. - Añade reglas para ignorar archivos de configuración y claves API.
Soluciones
Solución al Ejercicio 1
-
Generar una clave SSH:
ssh-keygen -t rsa -b 4096 -C "tu_email@example.com" -
Añadir la clave SSH al agente SSH:
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa -
Añadir la clave SSH a GitHub:
-
Copia la clave pública:
cat ~/.ssh/id_rsa.pub -
Ve a Settings > SSH and GPG keys > New SSH key en GitHub y pega la clave pública.
-
Solución al Ejercicio 2
- Ve a Settings > Branches en tu repositorio de GitHub.
- Añade una nueva regla de protección para la rama
mainy configura los requisitos de revisión de código.
Solución al Ejercicio 3
-
Crea un archivo
.gitignoreen la raíz de tu repositorio. -
Añade las siguientes reglas:
# Ignorar archivos de configuración config/*.json config/*.yml # Ignorar claves API *.key *.pem
Conclusión
En esta sección, hemos cubierto las mejores prácticas de seguridad en Git, incluyendo la autenticación y autorización, la gestión de claves SSH, la protección de ramas, el manejo de información sensible y la auditoría y monitoreo. Siguiendo estas prácticas, puedes asegurar tus repositorios y proteger tu código y datos sensibles. En el próximo módulo, exploraremos cómo solucionar problemas comunes y depurar errores en Git.
Dominando Git: De Principiante a Avanzado
Módulo 1: Introducción a Git
Módulo 2: Operaciones Básicas de Git
- Creando un Repositorio
- Clonando un Repositorio
- Flujo de Trabajo Básico de Git
- Preparando y Confirmando Cambios
- Visualizando el Historial de Confirmaciones
Módulo 3: Ramas y Fusión
- Entendiendo las Ramas
- Creando y Cambiando Ramas
- Fusionando Ramas
- Resolviendo Conflictos de Fusión
- Gestión de Ramas
Módulo 4: Trabajando con Repositorios Remotos
- Entendiendo los Repositorios Remotos
- Añadiendo un Repositorio Remoto
- Obteniendo y Extrayendo Cambios
- Empujando Cambios
- Rastreando Ramas
Módulo 5: Operaciones Avanzadas de Git
- Rebasing
- Cherry-Picking de Confirmaciones
- Guardando Cambios
- Etiquetando Confirmaciones
- Revirtiendo Confirmaciones
Módulo 6: Herramientas y Técnicas de Git
Módulo 7: Estrategias de Colaboración y Flujo de Trabajo
- Forking y Pull Requests
- Revisiones de Código con Git
- Flujo de Trabajo Git Flow
- GitHub Flow
- Integración Continua con Git
Módulo 8: Mejores Prácticas y Consejos de Git
- Escribiendo Buenos Mensajes de Confirmación
- Manteniendo un Historial Limpio
- Ignorando Archivos con .gitignore
- Mejores Prácticas de Seguridad
- Consejos de Rendimiento
Módulo 9: Solución de Problemas y Depuración
- Problemas Comunes de Git
- Deshaciendo Cambios
- Recuperando Confirmaciones Perdidas
- Tratando con Repositorios Corruptos
- Técnicas Avanzadas de Depuración
