6 mejores prácticas para administrar de forma segura los repositorios Git

Evite abarrotar repositorios y otras actividades que dificulten la administración de su base de código. En cambio, utilice las mejores prácticas para ayudar a facilitar las cosas.







Examinar las fuentes en el repositorio le permite evaluar el nivel de seguridad de las aplicaciones. Pero si nadie está mirando el código, los problemas solo crecerán. Afortunadamente, GitHub tiene sus propios expertos en seguridad que recientemente descubrieron el troyano en varios repositorios de Git. Por alguna razón, los propietarios de estos repositorios no lo notaron. Si bien no podemos dictar a otras personas cómo administrar nuestros propios repositorios, podemos aprender de sus errores. En este artículo veremos técnicas útiles para trabajar con repositorios.



Explore su repositorio





Esta es quizás la recomendación más importante. Ya sea que haya creado el repositorio usted mismo o se lo haya entregado, es importante conocer el contenido de su repositorio. Como mínimo, debe conocer los componentes básicos de la base de código que administra. Si, después de unas pocas docenas de fusiones, aparece un archivo aleatorio, puede detectarlo fácilmente porque generará preguntas para usted. A continuación, querrá verificarlo para resolverlo, y luego decidir su destino.



Intenta no agregar binarios





Git se diseñó originalmente para archivos de texto, ya sea código C, Python o Java, o JSON, YAML, XML, Markdown, HTML, etc.



$ cat hello.txt
This is plain text.
It's readable by humans and machines alike.
Git knows how to version this.

$ git diff hello.txt
diff --git a/hello.txt b/hello.txt
index f227cc3..0d85b44 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1,2 +1,3 @@
 This is plain text.
+It's readable by humans and machines alike.
 Git knows how to version this.




A Git no le gustan los binarios:



$ git diff pixel.png
diff --git a/pixel.png b/pixel.png
index 563235a..7aab7bc 100644
Binary files a/pixel.png and b/pixel.png differ

$ cat pixel.png
 PNG
IHDR7n $gAMA  
               abKGD݊ tIME 

                          -2R  
IDA c` ! 3%tEXtdate:create2020-06-11T11:45:04+12:00  r.%tEXtdate:modify2020-06-11T11:45:0


Los datos en un archivo binario no pueden analizarse de la misma manera que el texto sin formato, por lo que si algo cambia en el binario, debe sobrescribirse por completo.



Para empeorar las cosas, no puede verificar (leer y analizar) los datos binarios usted mismo.

Además de las herramientas POSIX habituales, puede encontrar binarios con git diff. Cuando intentas ejecutar diff con la opción --numstat, Git devolverá nulo:



$ git diff --numstat /dev/null pixel.png | tee
-     -   /dev/null => pixel.png
$ git diff --numstat /dev/null file.txt | tee
5788  0   /dev/null => list.txt


Si está considerando agregar binarios a su repositorio, deténgase y piense. Si se genera un binario durante el proceso de compilación, ¿por qué agregarlo a su repositorio? Si decide que tiene sentido hacerlo, asegúrese de describir en un archivo README o un lugar similar por qué guarda los archivos binarios y cuál es el protocolo para actualizarlos. Las actualizaciones deben realizarse con moderación porque cada vez que realiza un cambio en el blob, el espacio de almacenamiento se duplica.



Las bibliotecas de terceros deben seguir siendo terceros.



Si bien uno de los muchos beneficios del código abierto es que puedes usar y redistribuir libremente código que no escribiste, hay muchas buenas razones para no alojar una biblioteca de terceros en tu propio repositorio. En primer lugar, deberá verificar de forma independiente todo este código y sus actualizaciones adicionales para asegurarse de que la biblioteca sea confiable. En segundo lugar, cuando copia bibliotecas de terceros en el repositorio de Git, el foco se aleja del proyecto principal.



Use Git Submodule para administrar dependencias externas .



No uses git add a ciegas





Si su proyecto se compiló con éxito, resista la necesidad de usar el comando git add. (donde "." es el directorio actual, por ejemplo). Esto es especialmente importante si no está compilando manualmente su proyecto, sino que está utilizando un IDE para administrar su proyecto. Puede ser extremadamente difícil hacer un seguimiento de lo que se ha agregado a su repositorio cuando el IDE administra su proyecto. Por lo tanto, es importante agregar solo lo que usted mismo ha creado y preparado para agregar, y no cualquier objeto nuevo que aparezca misteriosamente en la carpeta de su proyecto.



Entonces, antes de ejecutar git add, revise lo que se agregará al repositorio. Si ve un objeto desconocido, averigüe de dónde proviene y por qué todavía está en el directorio de su proyecto después de ejecutar make clean (o un comando equivalente).



Use Git ignore





Un directorio de proyecto típico contiene muchos archivos ocultos, metadatos y artefactos innecesarios. Es mejor que ignore estos objetos: cuanto más haya, más probabilidades tendrá de ser molestado por esta "basura" y se perderá algo importante o peligroso.



El archivo gitignore permite filtrar cosas innecesarias. Github.com/github/gitignore ofrece varias plantillas de gitignore personalizadas que puede descargar y alojar en su proyecto. Gitlab.com , por ejemplo, ofreció esas plantillas hace varios años.



Cambios moderados en la base de código





Cuando reciba una solicitud de extracción o extracción, o cuando reciba un parche por correo electrónico, debe asegurarse de que todo esté bien. Su trabajo es estudiar el nuevo código que ingresa a su base de código y comprender lo que hace. Si no está de acuerdo con su implementación, o peor aún, no comprende esta implementación, escriba un mensaje al remitente y solicite una aclaración. No hay nada de malo en aprender un nuevo código que reclame un lugar en su proyecto. Además, lo hace en beneficio de sus usuarios: en este caso, comprenderán claramente qué cambios está aceptando y por qué.



Asumir la responsabilidad



Mantener seguro el software de código abierto es un trabajo de la comunidad. Explore la base de código, desaliente el desorden e ignore las posibles amenazas de seguridad en los repositorios que clone. Git es poderoso, pero es solo un programa de computadora, por lo que la responsabilidad de administrar los repos es finalmente suya.






Publicidad



Los servidores épicos son servidores virtuales Linux o Windows con potentes procesadores AMD EPYC y unidades Intel NVMe muy rápidas. ¡Dispersarse como pasteles calientes!






All Articles