2011-02-27 12 views
22

estoy tratando de empujar una marca nueva, carril vacío 3.0.4 proyecto de GitHub, pero sólo se dan cuenta de que la tienda cookie de sesión tiene una clave secreta:cuando tienes una clave secreta en tu proyecto, ¿cómo se puede presionar a GitHub?

En config/initializers/secret_token.rb

NewRuby192Rails304Proj::Application.config.secret_token = '22e8...' 

Entonces, ¿cómo podemos nosotros evitar que sea empujado a GitHub? Podemos ignorar este archivo (usando .gitignore), pero sin este archivo, la aplicación Rails no se ejecutará en absoluto (y no es una aplicación completa de Rails). O, en general, otros archivos o marcos también pueden tener archivos que contienen claves secretas. En tal caso, ¿cómo debería manejarse al presionar a GitHub?

+1

Puede usar una herramienta externa como: [git-secret] (https://github.com/sobolevn/git-secret) o [blackbox] (https://github.com/StackExchange/blackbox) para manejar estos archivos – sobolevn

Respuesta

24

Añadir en tu repositorio:

  • una plantilla de él (secret_token.rb.template),
  • un script capaz de generar un archivo de configuración adecuada secret_token.rb en base a datos locales que se encuentran en el servidor (como un archivo cifrado con el valor secreto listo para ser decodificada y se puso en el archivo secret_token.rb)

a partir de ahí, añadir un git attribute custom driver:

enter image description here

El guión hace referencia más arriba será su 'smudge' script que, a la salida del árbol de trabajo, generar automáticamente el archivo correcto.

+0

imagen agradable ... utiliza alguna herramienta para generarla (¿de texto?) –

+2

@ 動靜 能量: ver http://progit.org/2009 /07/28/the-gory-details.html: Scott Chacon usó Omnigraff: http://www.omnigroup.com/products/omnigraffle/ – VonC

8

Ponga la clave secreta en algún tipo de archivo de configuración externo. Éso es lo que hacemos.

+1

Utilice "secreto de rake" para generar una nueva clave secret_token si es necesario. Lo encontré útil porque ya había registrado la clave existente en un repositorio público y quería reemplazar la clave existente al usar un archivo de configuración externo.Como la sugerencia anterior, he almacenado mi clave en un archivo externo en el directorio debajo de la raíz web de los rieles (pero podría usar cualquier directorio) - si quiere ver mi código, siga el enlace: https: // github. com/richhollis/website/blob/672a14d170e8b7e4b9fcef1b809a8685224a3c65/config/initializers/secret_token.rb –

1

Podría correr el riesgo de confiar en la seguridad/privacidad de Github si se trata de un repositorio privado .. o:
- Extraiga los datos de un archivo de configuración en el servidor. Por ejemplo, si usa Capistrano para la implementación, puede agregar un paso que copie el archivo de configuración desde algún lugar del servidor.
- Use una variable de entorno.

2

Existen varias herramientas externas, que hacen exactamente eso. Básicamente, estas herramientas cifran el archivo con sus datos privados y lo almacenan en el VCS, pero ignoran el archivo original no cifrado.

Uno de los más conocidos y de confianza es blackbox. Utiliza gpg para cifrar sus archivos y funciona con git y hg. Por cierto, es creado por el equipo SO. Eche un vistazo a la sección alternatives, tiene al menos otras cinco herramientas.

También te puedo recomendar una herramienta llamada git-secret, también usa gpg. Pero funciona solo con git. La principal ventaja es que el flujo de trabajo es mucho más fácil en comparación con otras herramientas.

Cuestiones relacionadas