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.