¿Cómo almacenarías información cifrada en el depósito DVCS público?

Tengo proyectos en los que varios desarrolladores están trabajando. Todos trabajamos en el mismo repository git.

Actualmente, no almaceno la configuration del server de producción en el repository, porque los files de configuration contienen cnetworkingenciales de database.

Me gustaría comenzar a almacenar estas configuraciones en el repository, así que estoy pensando en encriptar los files de configuration antes de savelos en el DVCS.

  1. ¿Qué piensan ustedes sobre esta idea?
  2. ¿Cómo haría esto?

¿Por qué esos secretos deben almacenarse en el repository público?

Usaría un mecanismo completamente diferente para distribuir esos secretos, que solo es accesible para aquellos administradores que necesitan acceder a ellos.

Encriptamos las passwords en los files de configuration y la aplicación usa una key ingresada de manera interactiva en el time de ejecución para descifrarlas. Debido al sistema de configuration que usamos, solo el analizador de configuration necesitaba modificación; el código de la aplicación en sí no requirió cambios.

El inconveniente principal es que utilizamos un algorithm de key pública, para que cualquiera pueda cifrar un valor para el file de configuration, pero solo los usuarios autorizados pueden descifrarlos. Esto hace que los valores encriptados sean mucho más grandes (utilizamos la key RSA de 2048 bits y codificamos con Base-64) y es algo desagradable en los files de configuration.

Siempre tenemos cuidado de codificar los metadatos junto con el valor encriptado. Esto identifica la key de encryption, los algorithms utilizados y los parameters necesarios para los algorithms. De esa forma, podemos cambiar las keys o algorithms con gracia, migrando durante un período de time.

Intereting Posts