Gestión de Credenciales Seguras en Ruby on Rails

Clase 10 de 36Curso de Introducción a Ruby on Rails

Resumen

¿Cómo maneja Rails la información sensible?

En el vasto mundo de Ruby on Rails, uno de los aspectos más cruciales es la gestión de información sensible, como las credenciales de acceso. Esto se vuelve aún más importante a medida que tu aplicación crece y más desarrolladores se suman al proyecto. Rails ha desarrollado una serie de métodos para gestionar de manera segura estos datos confidenciales.

¿Qué ocurre al lanzar tu aplicación a producción?

Cuando decides lanzar tu aplicación, la gestión de las credenciales se convierte en una prioridad. Imagina que debes compartir las mismas credenciales de tu entorno local con el entorno de producción. Este enfoque, además de ser poco seguro, carece de confidencialidad y se convierte en un potencial dolor de cabeza organizacional.

Rails propone una solución efectiva mediante el uso de archivos de configuración como database.yaml y credentials.yaml.enc. Estos ayudan a mantener las credenciales seguras y protegidas, separando lo necesario entre diferentes ambientes.

¿Cuál es la evolución del manejo de secretos en Rails?

  1. Inicios con database.yaml: En las primeras versiones, el archivo database.yaml era la herramienta principal para la configuración de bases de datos.

  2. Introducción de secrets.yaml: En Rails 4, se añadía este archivo para gestionar credenciales de manera más estructurada, aunque todavía con áreas de mejora.

  3. Avance con credenciales encriptadas: A partir de la versión 5.2, la inclusión de credenciales encriptadas representó un salto significativo. Esto permitió mantener la confidencialidad de la información mientras se compartían estructuras seguras.

  4. Madurez en Rails 6: Aquí, el manejo de credenciales alcanzó un nuevo nivel de sofisticación, alineándose con los principios del manifiesto 12-Factor App para seguir las mejores prácticas de arquitectura de software.

¿Cómo interactuar con el sistema de credenciales de Rails?

La interacción con el sistema de credenciales de Rails se realiza principalmente a través de la consola y el editor de texto. Aquí te mostramos cómo:

  1. Acceder al archivo credentials.yaml.enc:

    • Navega a la carpeta config de tu proyecto y ubica el archivo credentials.yaml.enc.
    • Este archivo está encriptado y requerirá un editor para modificarlo.
  2. Uso de la consola:

    • Abre una nueva consola y ejecuta el comando rails credentials:edit para editar el archivo de credenciales.
    • Configura tu editor de preferencia, por ejemplo, nano, para acceder al contenido encriptado.
  3. Ingresar nuevas claves:

    • Puedes añadir nuevas claves, por ejemplo, hello: 123456, lo que crea un par llave-valor en las credenciales.
  4. Guardado y encriptación:

    • Guarda los cambios y verifica que el archivo se haya encriptado correctamente.

¿Cómo utilizar credenciales en tu aplicación?

Para poder utilizar de forma práctica estas credenciales dentro de tu aplicación, sigue estos pasos:

  1. Acceder a las credenciales desde Rails:

    • En la consola de Rails, accede al contenido encriptado utilizando:
      Rails.application.credentials.hello
      
    • Esto te permitirá obtener el valor asociado a la clave hello.
  2. Implementar en controladores:

    • En el controlador, por ejemplo, WelcomeController, puedes definir una variable de instancia con las credenciales:
      @credentials = Rails.application.credentials.hello
      
  3. Mostrar en vistas:

    • Modifica la vista correspondiente para que esta variable se imprima. Duplica la línea y muestra el valor de la credencial.

Aunque este ejercicio es netamente práctico y las credenciales generalmente no se muestran directamente, este conocimiento es esencial para dominar cómo Rails maneja la seguridad de datos sensibles.

Con estos conocimientos, estás mejor preparado para manejar de manera segura la información sensible de tus aplicaciones Rails. ¡Sigue practicando y expandiendo tus habilidades en el mundo del desarrollo web!