Rails credentials

Rails credentials

enmanuelm19@gmail.com2018-06-14 13:18:42 UTC

Credenciales en Rails


Las credenciales en Rails existen desde la versión 5.2, antes de esto lo usual es que colocáramos esas credenciales de APIs de terceros en variables de entorno, ya sea manejando las variables de entorno del sistema o en un archivo .env junto con la gema DotEnv. Ahora solo necesitamos registrar una llave maestra y nuestras credenciales estarán encriptadas, nos da la posibilidad de tener nuestras credenciales en el repositorio remoto y está accesible teniendo la llave maestra.

Para hacer uso de las credenciales de rails solo falta tener la llave maestra dentro del archivo config/master.key, si no posees llave maestra puedes generarla corriendo el comando y agarrando los primeros 32 caracteres:

rails secret

Pegar la llave generada dentro de config/master.key. Importante: colocar dentro del .gitignore el archivo master.key para no subirlo a nuestro repositorio.

Luego de generada nuestra llave maestra solo falta registrar las credenciales que queramos, para ello corremos el siguiente comando:

EDITOR=nano rails credentials:edit

Esto abrirá el editor nano (puedes escoger el editor que te sea mas cómodo), y presentará un archivo con una estructura similar a esta:

aws:
  access_key_id: random_key_id
  secret_access_key: random_access_key

secret_key_base: random_number

Al guardar este crea el respectivo archivo encriptado config/credentials.yml.enc, para editar las credenciales correr el mismo comando para generarlas.

Para leer las credenciales que haz ingresado solo hace falta colocar lo siguiente:

Rails.application.credentials.aws

Esto retornará un hash { access_key_id: random_key_id, secret_access_key: random_access_key }, para seguir accediendo solo hace falta acceder como a cualquier hash Rails.application.credentials.aws[:access_key_id] que nos mostrará random_key_id.

De esta manera tenemos nuestras credenciales almacenadas de manera segura, solo necesitamos llevar registro de nuestra llave maestra.


Cualquier consejo, corrección o duda puedes comentar abajo.


Compartir