setup secrets rails ruby-on-rails heroku secret-key

ruby-on-rails - setup - rails secrets



Explicación paso a paso del uso de Rails secrets.yml sin exponer las claves al repositorio público cuando se despliega en Heroku (2)

Estoy usando Rails 4.1.1 y ruby ​​2.0.0

En este momento ignoro mi archivo secrets.yml a mi gitignore para github.

secrets.yml

development: secret_key_base: numb3r57ndl3tt3r5 test: secret_key_base: differentnumbersandletters13531515 production: secret_key_base: <%= ENV["SECRET_KEY_BASE''] %>

Si esta clave de producción es dinámica, ¿de dónde la lee? ¿Dónde proveemos esa información? ¿Cómo llega esa información a heroku sin llegar a github?

Ya tengo una variable de entorno de clave secreta en la configuración de mi aplicación heroku. Creo que fue creado cuando utilicé la gema heroku_secrets https://github.com/alexpeattie/heroku_secrets para ejecutar el rastrillo comment rake heroku:secrets RAILS_ENV=production

¿Puede alguien explicar los pasos conceptuales, así como los pasos prácticos sobre cómo utilizar secrets.yml correctamente sin exponer claves secretas al público?

Si también puedes agregar otra clave secreta para una API diferente, por ejemplo, eso también sería muy apreciado.

Me gustaría entender qué está sucediendo en los pasos de la explicación, en lugar de algo como "haz esto, haz esto, haz esto". Además, si hay un código, por favor especifique en qué archivo debe colocarse, en lugar de simplemente dar el código, y suponiendo que el lector sabrá a dónde va solo en función del código solo ( mirada dura a los escritores de la guía heroku )

¡Gracias! =]


Si usa esta clave <%= ENV["SECRET_KEY_BASE''] %>

En su máquina local, puede establecer variables de entorno en su shell, como (bash o zsh)

export SECRET_KEY_BASE="yourkeybasehere"

Y simule que ejecuta la producción (pero en su máquina local) como

RAILS_ENV=production rails s

Sin embargo, al implementar en Heroku, puedes usar lo que llaman config vars, ejecutando heroku config:set command para tu aplicación.

heroku config:set SECRET_KEY_BASE=yourkeybasehere

Luego, la aplicación Rails completará esta configuración var en secret.yml

production: secret_key_base: yourkeybasehere

Espero que esto explique lo que necesitas entender.

Sin embargo, si te gustaría jugar y probar. Una opción es tratar de editar su aplicación / views / layouts / application.html.erb y colocar la variable de configuración que desea visualizar, por ejemplo, USERNAME config var

<!DOCTYPE html> <html> <head> <title><%= ENV[''USERNAME''] %></title> </head> <body> <%= yield %> </body> </html>

A continuación, desplázate a heroku y ejecuta

heroku config:set USERNAME=gwho

Debería ver ''gwho'' en el título de la página.

Más detalles sobre la configuración de Heroku vars: https://devcenter.heroku.com/articles/config-vars

Más detalles sobre Rails 4.1 secrets.yml: http://edgeguides.rubyonrails.org/4_1_release_notes.html#config/secrets.yml


Aquí hay una guía paso a paso (con suerte simple) FOR HEROKU que se debe realizar antes de enviar archivos (secrets.yml) a GitHub u otro host.

* No soy un experto en este tema pero me funcionó y parece una buena solución. Combina la información de las respuestas a esta pregunta, así como las respuestas a esta pregunta ( ¿Cómo mantener secrets.yml secret en los rieles? ) Para proporcionar una guía simple :)

1) Copia secrets.yml a otro archivo llamado secrets_backup.yml

ahora debería tener dos archivos con el mismo contenido que secrets.yml

2) Agregue secrets_backup.yml a su .gitignore

3) Cambie el texto en secrets.yml a la siguiente

development: secret_key_base: <%= ENV["SECRET_KEY_BASE_DEV"] %> test: secret_key_base: <%= ENV["SECRET_KEY_BASE_TEST"] %> production: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

4) cd a su carpeta de proyecto de rieles en la línea de comando

5) En el terminal, escriba heroku config:set SECRET_KEY_BASE_TEST=<pasted key> , donde <pasted key> debe copiarse y pegarse de la test: secret_key_base:<key> que está en secrets_backup.yml

6) En el terminal, escriba heroku config:set SECRET_KEY_BASE_DEV=<pasted key> , donde <pasted key> debe copiarse y pegarse desde el development: secret_key_base:<key> que está en secrets_backup.yml

7) Mi archivo secrets.yml ya tenía SECRET_KEY_BASE en lugar de la clave real, así que sospecho que la tuya también. Pero si no, configure la variable SECRET_KEY_BASE ya que los otros dos se establecieron arriba.

8) Empuje su repo a GitHub y Heroku

9) ¡Sonríe porque eres la CABRA y presume tu dulce sitio web!