Cuando se desarrollan aplicaciones, el manejo de información sensible como claves API, credenciales de bases de datos y ajustes de configuración es crucial.
Garantizar que estas variables de entorno se gestionan de forma segura, eficiente y sincronizada a lo largo del ciclo de vida de desarrollo es un reto común y, seamos realistas, los archivos .env
ya no sirven, bueno, por muchas razones.
En este artículo, discuto la forma óptima de gestionar las variables de entorno para su aplicación Node con Infisical a escala.
¿Qué es Infisical?
Infisical es una plataforma de gestión de secretos encriptada de extremo a extremo y de código abierto con la que puedes almacenar variables de entorno. Es totalmente autoalojable en su propia infraestructura, bien documentado, y increíblemente hermoso.
![](https://codigoencasa.com/content/images/2023/06/Captura-de-pantalla-2023-06-12-a-las-13.08.07.png)
Su SDK de Node le permite recuperar variables de entorno en tiempo de ejecución, ya sea en desarrollo local o en producción.
Para empezar
Antes de que podamos recuperar variables de entorno en tu aplicación Node, necesitas añadirlas a un proyecto en Infisical Cloud o en una instancia auto-alojada de Infisical.
Bien, empecemos.
En primer lugar, instale el paquete infisical-node en su proyecto:
$ npm install infisical-node --save
Si tu quieres aprender acerca de NodeJS recuerda visitar el curso de Youtube
A continuación, importe el SDK y cree una instancia de cliente con su Token Infisical:
import InfisicalClient from "infisical-node";
const client = new InfisicalClient({
token: "your_infisical_token"
});
Para garantizar un rendimiento óptimo, recomiendo crear una única instancia del cliente Infisical y exportarla para utilizarla en toda la aplicación. La razón es porque el SDK de Node almacena en caché cada secreto y lo actualiza periódicamente, reduciendo el exceso de llamadas; este almacenamiento en caché integrado hace que la sincronización de las variables de entorno sea perfecta a escala.
También recomiendo almacenar el Token Infisical en un archivo .env
en desarrollo local o como única variable de entorno en producción. De esta manera, usted no tiene que hardcode en su aplicación y se puede utilizar para obtener el resto de sus variables de entorno.
Ahora puedes usar el cliente para obtener secretos para tu aplicación bajo demanda:
app.get("/", async (req, res) => {
const name = await client.getSecret("NAME");
res.send(`Hello! My name is: ${name.secretValue}`);
});
Ya está.
Ahora cada vez que tu aplicación necesite una variable de entorno, puede solicitarla a Infisical bajo demanda. Ahora eres capaz de ver todas las variables de entorno para tu aplicación Node desde un lugar central y evitar que falten variables de entorno.
Yo recomendaría leer la documentación más para aprender más acerca de cómo gestionar las variables de entorno de manera efectiva.
Pero, sigues usando un archivo .env.
Una pregunta surgió "Si" el Token Infisical utilizado para obtener otras variables de entorno se almacena en un archivo .env
, ¿entonces eso no anula el propósito de la herramienta?"
La respuesta es no.
Como ya se ha mencionado, un punto importante de utilizar el enfoque recomendado es mantener las variables de entorno sincronizadas en todo el equipo. A menudo, se introducen nuevas variables de entorno en una base de código y los archivos .env
no se actualizan en todo el equipo; como resultado, las aplicaciones se bloquean.
El problema se agrava cuando la infraestructura crece y surge el problema conocido como "expansión secreta". Como tal, Infisical le proporciona la capacidad de centralizar sus variables de entorno para que pueda actualizarlas en un solo lugar y hacerlas llegar a su equipo e infraestructura desde el desarrollo hasta la producción.
Esto es diferente de lo que mucha gente hace, que es almacenar directamente docenas de variables de entorno en archivos .env.
Por último, desde una perspectiva de seguridad, filtrar un token revocable es mucho mejor que filtrar una docena de variables de entorno sin procesar; evitas dejar rastros directos en el control de código fuente.
Conclusión
Infisical es una plataforma impresionante para racionalizar las variables de entorno para usted y su equipo. Es de código abierto y tiene un práctico SDK de Node que se puede utilizar para recuperar las variables de entorno de sus aplicaciones Node bajo demanda.