ref: https://github.com/ahoward/sekrets
NOMBRE sekrets.rb SINOPSIS sekrets es una herramienta de línea de comandos y una biblioteca utilizada para gestionar archivos y configuraciones encriptados de manera segura en tus aplicaciones de rails y repositorios de git. INSTALAR gem install sekrets gem 'sekrets' DESCRIPCIÓN TL;DR # crear un archivo de configuración encriptado ruby -r yaml -e'puts({:api_key => 1234}.to_yaml)' | sekrets write config/settings.yml.enc --key 42 # mostrarlo sekrets read config/settings.yml.enc --key 42 # editarlo sekrets edit config/settings.yml.enc --key 42 # ver que está encriptado cat config/settings.yml.enc # confirmarlo git add config/settings.yml.enc # poner la clave de desencriptación en un archivo echo 42 > .sekrets.key # ignorar este archivo en git echo .sekrets.key >> .gitgnore # ahora ya no necesitas proporcionar el argumento --key a los comandos sekrets read config/settings.yml.enc sekrets edit config/settings.yml.enc # asegúrate de que este archivo se despliegue en tu servidor echo " require 'sekrets/capistrano' " >> Capfile # confirmar y desplegar git add config/settings.yml.enc git commit -am'configuraciones encriptadas' git pull && git push && cap staging deploy # acceder a estas configuraciones en el código de tu aplicación settings = Sekrets.settings_for('./config/settings.yml.enc') DESCRIPCIÓN sekrets proporciona herramientas de línea de comandos y una biblioteca para gestionar y acceder a archivos encriptados en tu base de código. permite verificar información encriptada en un repositorio y gestionarla junto con el resto de la base de código. elimina la necesidad de verificar información no encriptada, claves u otra información sensible. sekrets proporciona tanto un mecanismo general para gestionar archivos encriptados arbitrarios como un mecanismo específico para gestionar archivos de configuración encriptados. BÚSQUEDA DE CLAVES para *todas* las operaciones, desde la línea de comandos o de otra manera, sekrets utiliza el siguiente algoritmo para buscar una clave de desencriptación: - cualquier clave pasada directamente como parámetro a una llamada de biblioteca será preferida - de lo contrario, el código busca un archivo de clave compañero. por ejemplo, dado el archivo 'config/sekrets.yml.enc' sekrets buscará una clave en config/.sekrets.yml.enc.key si alguno de estos se encuentra que no esté vacío, el contenido del archivo se utilizará como la clave de desencriptación para ese archivo. nunca debes confirmar estos archivos de clave y también agregarlos a tu .gitignore - o similar. - a continuación, se busca un archivo de clave de proyecto. la ruta de este archivo es ./.sekrets.key normalmente y, en una aplicación de rails RAILS_ROOT/.sekrets.key - si eso no se encuentra, sekrets busca la clave en el entorno bajo la variable de entorno SEKRETS_KEY la variable de entorno utilizada es configurable en la biblioteca - a continuación, se busca el archivo de clave global, la ruta de este archivo es ~/.sekrets.key - finalmente, si aún no se ha especificado ni encontrado ninguna clave, se le pide al usuario que ingrese la clave. el prompt solo ocurre si el usuario está conectado a una tty. por lo tanto, por ejemplo, ningún prompt quedará colgado y una aplicación que se inicie en segundo plano como una aplicación de rails administrada por passenger. ver Sekrets.key_for para más detalles DISTRIBUCIÓN DE CLAVES sekrets no intenta resolver el problema de distribución de claves por ti, con una excepción: si estás utilizando capistrano para realizar un despliegue 'vanilla' basado en ssh, se proporciona una receta simple que detectará un archivo de clave local y lo copiará mediante scp al(los) servidor(es) remoto(s) al desplegar. sekrets asume que el archivo de clave local, si existe, es correcto. en inglés sencillo, la receta de capistrano hace: scp ./sekrets.key deploy@remote.host.com:/rails_root/current/sekrets.key va sin decir que el archivo de clave local nunca debe ser verificado y también debe estar en .gitignore la distribución de esta clave entre los desarrolladores está fuera del alcance de la biblioteca. es probable que el correo electrónico sin encriptar sea el mejor mecanismo para la distribución ;-/