GitHub
4 min leer

30 maneras de perder tus datos de GitHub (y cómo evitarlas)

GitHub es fundamental para su organización, ya que contiene algo más que el código fuente: su propiedad intelectual y los datos clave impulsan a su equipo de desarrollo. Aprenda a proteger los datos de GitHub frente al borrado, la corrupción y la alteración para mantener la seguridad de sus operaciones.

Escrito por
Andy Fernández
Publicado el
8 de octubre de 2024
Compartir en redes sociales

GitHub es tan crítico para sus organizaciones como sus aplicaciones de producción más importantes. Es fundamental proteger la propiedad intelectual y el código fuente, pero eso no es todo lo que contiene GitHub . Los datos, configuraciones y archivos de GitHub impulsan a su equipo de desarrollo y a su empresa.

Pero a diferencia de alojar tu repositorio Git en un centro de datos, usar GitHub as-a-service requiere que pienses de forma diferente sobre cómo protegerlo.  

Hemos decidido desglosar las muchas formas en que los "datos" de GitHub pueden borrarse, corromperse o alterarse.  

Supresión accidental

 

1. Eliminación de repositorios, ramas, archivos, etiquetas y versiones

Es fácil borrar partes importantes de tu proyecto con unos pocos clics o comandos. Ya se trate de un repositorio entero o de un archivo crítico, los borrados accidentales son una trampa común.

Consejo: Comprueba siempre dos veces antes de pulsar el botón de eliminar. Implementa reglas de protección de ramas y limita quién puede eliminar repositorios.

 

2. Uso indebido de git rm y otros comandos

Utilizando git rm sin comprender plenamente su impacto puede conducir a la eliminación involuntaria de archivos. Si a esto le sumamos un commit precipitado, tenemos la receta para perder código.

Consejo: Familiarízate con los comandos de Git y considera poner alias a los comandos peligrosos para que requieran confirmación.

 

Fuerza Empuje Errores: Un gran poder conlleva una gran responsabilidad

Uso indebido de git push --force

 

3. Forzar el push puede sobreescribir la historia remota, borrando efectivamente los commits de la existencia.  

Consejo: Utilice git push --force-with-lease para añadir una red de seguridad y evitar el empuje forzado a las ramas compartidas.

 

4. Reescribir la historia equivocada

Comandos como git rebase o git filter-branch seguido de un push forzado puede reescribir la historia compartida, confundiendo a los colaboradores y potencialmente perdiendo commits.

Consejo: Comuníquese con su equipo antes de reescribir la historia, y considere alternativas como git merge cuando se trabaja en colaboración.

 

Percances de la fusión: Cuando dos se convierten en uno... Mal

 

5. Operaciones de fusión incorrectas

Fusionar ramas sin resolver los conflictos adecuadamente puede descartar cambios importantes. Las fusiones rápidas pueden sobrescribir código que no tenías intención de cambiar.

Consejo: Revise siempre cuidadosamente los conflictos de fusión y considere el uso de pull requests para revisar el código antes de fusionarlo.

 

Revertir fusiones sin precaución

Deshacer una confirmación de fusión sin entender sus implicaciones puede eliminar trozos importantes de código.

Consejo: Utilice git revertir con precaución y asegúrate de no deshacer fusiones esenciales.

 

Errores de sucursal: Los peligros de la mala gestión

 

6. Descuidar el impulso de las sucursales locales

Las ramas locales con trabajo crucial pueden desaparecer si su máquina se bloquea o si se olvida de transferirlas antes de trasladarse a un nuevo entorno.

Consejo: Envíe regularmente sus ramas al repositorio remoto y considere el uso de GitHub's draft pull requests para realizar un seguimiento.

 

Sobrescritura de ramas

Crear una nueva rama con el mismo nombre que una existente y forzar el push puede borrar la rama original.

Consejo: Compruebe cuidadosamente los nombres de las ramas y evite forzarlas a menos que sea absolutamente necesario.

 

Catástrofes de credenciales: Ábrete Sésamo... al desastre

 

7. Acceso no autorizado y ataques de phishing

Si sus credenciales se ven comprometidas a través de phishing u otros medios, los atacantes pueden eliminar o alterar sus repositorios.

Consejo: activa la autenticación de dos factores, utiliza contraseñas seguras y únicas y mantente alerta ante los intentos de suplantación de identidad.

 

8. Exposición de tokens y claves SSH

La filtración de tokens de acceso o claves SSH puede dar a usuarios no autorizados las llaves de tu reino.

Consejo: Almacene las credenciales de forma segura, rote los tokens con regularidad y considere la posibilidad de utilizar los secretos cifrados de GitHub para los datos confidenciales.

 

Ciberamenazas y amenazas internas: La llamada viene de dentro

 

9. Empleados descontentos y bajas inadecuadas

Los antiguos miembros del equipo con acceso persistente pueden causar estragos, ya sea accidental o intencionadamente.

Consejo: aplique procedimientos estrictos de incorporación y audite periódicamente los niveles de acceso de los equipos.

 

10. Falta de controles de acceso

Unos permisos inadecuados pueden dar lugar a eliminaciones accidentales por parte de miembros del equipo bienintencionados.

Consejo: Utilice la configuración de permisos de GitHub para controlar quién puede enviar, fusionar o eliminar ramas y repositorios.

 

Anomalías de automatización: Robots rebeldes

 

11. Errores en el proceso CI/CD

Los scripts automatizados pueden eliminar o sobrescribir código debido a errores de configuración, convirtiendo a sus útiles bots en fuerzas destructivas.

Consejo: Revise cuidadosamente sus scripts CI/CD y pruébelos en un entorno seguro antes de desplegarlos.

 

12. Flujos de trabajo defectuosos y permisos excesivos

GitHub Las acciones con permisos excesivos pueden ejecutar eliminaciones involuntarias si los scripts se tuercen.

Consejo: Siga el principio de mínimo privilegio al configurar los flujos de trabajo y utilice cuentas de servicio dedicadas siempre que sea posible.

 

Herramientas y comandos que se vuelven en tu contra

 

13. Errores en clientes Git y scripts mal configurados

Los errores de software o los scripts mal escritos pueden corromper tu repositorio o borrar datos inesperadamente.

Consejo: mantenga actualizadas sus herramientas y vuelva a comprobar las secuencias de comandos antes de ejecutarlas en repositorios importantes.

 

14. Comandos Git peligrosos

Comandos como git clean -fdx puede eliminar archivos y directorios no rastreados, a veces con efectos desastrosos.

Consejo: Utilice estos comandos con precaución y considere la posibilidad de ejecutarlos con la opción -n (funcionamiento en seco).

 

Enigmas de la corrupción de datos: Cuando los bits se estropean

 

15. Repositorios dañados

Los problemas de red durante las operaciones push/pull pueden corromper su repositorio, haciendo que los datos sean inaccesibles.

Consejo: Haz copias de seguridad periódicas de tus repositorios y utiliza las herramientas de recuperación integradas en Git cuando sea necesario.

 

16. Problemas con archivos binarios y mala gestión de Git LFS

Confirmar archivos binarios de gran tamaño sin Git LFS puede provocar problemas de rendimiento. Eliminar objetos LFS de forma incorrecta puede hacer que los archivos grandes sean inaccesibles.

Consejo: Utiliza Git LFS para archivos grandes y ten en cuenta las cuotas y límites de almacenamiento.

 

Calamidades de configuración: Prepararse para el fracaso

 

17. Configuración errónea de los repositorios

Una configuración incorrecta puede provocar la exposición o el borrado involuntario de datos.

Consejo: Revise regularmente la configuración de su repositorio, especialmente cuando los cambios son realizados por múltiples administradores.

 

18. Aplicación incorrecta de las normas de protección de las sucursales

Unas normas demasiado permisivas podrían permitir empujes forzados o eliminaciones que no habías previsto.

Consejo: Establezca normas estrictas de protección de las sucursales principales y aplique las revisiones necesarias.

 

Los peligros del almacenamiento temporal y las acciones basadas en el tiempo

 

19. Pérdida de trabajo no sincronizado

Los datos almacenados en ubicaciones temporales o el trabajo no guardado pueden desaparecer debido a caídas del sistema u operaciones de limpieza.

Consejo: Guarde el trabajo con frecuencia y envíe los cambios a las ramas remotas a menudo.

 

20. Trabajos programados que salen mal

Los Cron jobs o tareas programadas pueden borrar datos involuntariamente si están mal configurados.

Consejo: Supervise las tareas programadas y asegúrese de que funcionan según lo previsto, especialmente cuando se trate de eliminaciones.

 

Submódulos y errores de sincronización

 

21. 21. Git Submodule Mismanagement

La eliminación incorrecta de submódulos o la extracción de actualizaciones pueden sobrescribir los cambios locales.

Consejo: entienda cómo funcionan los submódulos antes de utilizarlos y documente su uso para su equipo.

 

22. Conflictos con otras herramientas VCS y servicios de sincronización

El uso de varios sistemas de control de versiones o la sincronización de repositorios con servicios en la nube pueden provocar daños.

Consejo: Limítate a un VCS por proyecto y evita sincronizar las carpetas de repositorios con servicios como Dropbox.

 

Espejito en la pared: Los peligros del reflejo incorrecto de repositorios

 

23. Utilizando comandos como git push --mirror sin la precaución adecuada puede sobrescribir todo el repositorio de destino, borrando ramas, etiquetas e historial de commits de un plumazo.

Sugerencia: Antes de realizar un "mirror push", vuelva a comprobar las URL remotas mediante git remoto -v para asegurarse de que está enviando al repositorio correcto. Evite utilizar --espejo a menos que esté seguro de que ésa es su intención. En la mayoría de los casos, un git push será suficiente. Considera la posibilidad de establecer salvaguardas o utilizar scripts que pidan confirmación antes de ejecutar operaciones destructivas.

 

Codificación de caracteres y conflicto de fusión Caos

 

24. Desajustes de codificación

Una configuración incoherente de la codificación de caracteres puede corromper el contenido de los archivos, especialmente en entornos de colaboración.

Consejo: estandarice los ajustes de codificación en todo su equipo y utilice herramientas para detectar problemas de codificación.

 

25. Conflictos de fusión no resueltos

Confirmar archivos con marcadores de conflicto o descartar accidentalmente secciones de código erróneas puede dar lugar a código defectuoso.

Consejo: Resuelva cuidadosamente los conflictos y considere la posibilidad de revisar el código para detectar posibles errores.

 

Desafíos de la clonación y la selección de cerezas

 

26. Clones superficiales y parciales

Utilizando git clone --depth u olvidarse de clonar submódulos y objetos LFS puede dar lugar a repositorios incompletos.

 

Consejo: Clone los repositorios por completo a menos que tenga una razón específica para no hacerlo, y asegúrese de que se incluyen todos los componentes necesarios.

 

27. Uso indebido de git cherry-pick y git revertir

Aplicar confirmaciones fuera de contexto o revertir cambios incorrectamente puede causar conflictos y sobrescribir código.

Consejo: Utilice estos comandos con precaución y comprenda perfectamente los commits que está manipulando.

--  

Lista de control: Directrices para proteger GitHub  

Aunque hemos destacado una plétora de formas de perder tus datos de GitHub , el tema subyacente es claro: los errores ocurren. Ya sea un borrado, un comando mal entendido o un script mal configurado, tus datos siempre están en riesgo.

Proteger sus datos de GitHub es crucial para mantener la integridad, disponibilidad y confidencialidad de su código y activos relacionados. A continuación encontrará una breve lista de las mejores prácticas para ayudarle a proteger sus repositorios de GitHub de forma eficaz.

Reforzar los métodos de autenticación

  • Habilite el inicio de sesión único (SSO): Integre GitHub con el proveedor de identidades (IdP) de su organización para centralizar la autenticación.
  • Exija la autenticación de dos factores (2FA): Exija 2FA a todos los usuarios para añadir una capa adicional de seguridad. Prefiera las contraseñas de un solo uso basadas en el tiempo (TOTP) o las claves de seguridad de hardware a la 2FA basada en SMS.

Control de acceso

  • Principio del mínimo privilegio: Conceda a los usuarios los permisos mínimos necesarios para sus funciones. Revise y actualice periódicamente los derechos de acceso.
  • Control de acceso basado en roles (RBAC): Define roles (por ejemplo, administrador, desarrollador, probador) y asigna permisos en consecuencia.
  • Utilice GitHub Teams para gestionar los permisos de grupo.
  • Proteja las ramas críticas. Activa las reglas de protección de ramas para evitar que se fuercen los push y los borrados, y exige comprobaciones de estado y revisiones del código antes de fusionarlas.
  • Gestionar colaboradores externos: Limite el acceso de colaboradores externos y establezca fechas de caducidad para el acceso de colaboradores cuando proceda.

Proteger credenciales y datos confidenciales

  • Evita cometer secretos: Utilice herramientas como GitGuardian o GitHub Secret Scanning para detectar secretos en el código. Implementa ganchos de precompromiso para evitar el envío accidental de datos confidenciales.
  • Utilice GitHub Secrets: Almacena claves API, tokens y contraseñas de forma segura en GitHub Secrets for Actions y Dependabot.
  • Rote regularmente las credenciales: Cambie periódicamente los tokens de acceso, las claves SSH y las contraseñas. Asegúrate de invalidar inmediatamente las credenciales comprometidas.

Copia de seguridad y recuperación

  • Copias de seguridad automatizadas: Programe copias de seguridad periódicas de los repositorios, incluidas todas las ramas, etiquetas y ediciones.
  • Almacenamiento externo: Almacene las copias de seguridad en ubicaciones seguras y geográficamente separadas. Cifre los datos de las copias de seguridad tanto en tránsito como en reposo.
  • Copias de seguridad habilitadas para WORM: Aprovecha los destinos de almacenamiento en la nube pública y el bloqueo de objetos para mantener una copia segura en caso de ciberataque.  
  • Pruebe los procedimientos de restauración: Comprueba periódicamente que las copias de seguridad pueden restaurarse correctamente. Documente los pasos de recuperación y manténgalos actualizados.

Conclusión: Haga suyos los datos de GitHub

GitHub es más que una plataforma: es el corazón de los esfuerzos de desarrollo de su organización, ya que no sólo alberga código, sino también la propiedad intelectual y el trabajo colaborativo que impulsan sus proyectos. Aunque GitHub proporciona las herramientas y la infraestructura, la responsabilidad de proteger los datos de tus repositorios recae en ti.

Desarrollar teniendo en cuenta la seguridad y la protección de datos no consiste sólo en evitar pérdidas, sino en fomentar una cultura de concienciación y diligencia. Al integrar estas prácticas en el flujo de trabajo diario, se crea un entorno resistente en el que la innovación puede prosperar sin comprometer la integridad.

Tome posesión de sus datos de GitHub hoy mismo. Al hacerlo, no sólo protegerá los valiosos activos de su organización, sino que también reforzará los cimientos sobre los que su equipo podrá construir, colaborar y triunfar en el futuro.

Recursos adicionales

Shive Raja Headshot

Director de Gestión de Productos

Andy Fernandez es el Director de Gestión de Productos de HYCU, una empresa de Atlassian Ventures. Toda la carrera de Andy se ha centrado en la protección de datos y la recuperación ante desastres para aplicaciones críticas. Anteriormente ocupó puestos de producto y GTM en Zerto y Veeam, el enfoque de Andy ahora es asegurar que las organizaciones protejan las aplicaciones críticas SaaS y Cloud a través de ITSM y DevOps. Cuando no está trabajando en la protección de datos, a Andy le encanta asistir a conciertos en directo, encontrar los lugares locales para comer e ir a la playa.

Experimente la plataforma de protección de datos SaaS número 1

Pruebe HYCU usted mismo y conviértase en un creyente.