haskell - sefirot - Pasando secretos de aplicaciones en Yesod y Keter
sefirah (1)
Estoy creando una aplicación web con Yesod y actualmente estoy pasando secretos como las claves API a través de variables de entorno (según la aplicación Twelve-Factor ) para evitar almacenar estos valores en archivos de configuración controlados por versión. Por ejemplo, ejecuto mi aplicación en modo dev de la siguiente manera:
SOME_API_KEY=value yesod devel
Tengo un valor en mi archivo config/settings.yml
que se define en términos de esta variable de entorno con un valor vacío de la siguiente manera:
meetup-api-key: "_env:SOME_API_KEY:"
Para implementarlo utilizando Keter, estoy creando el paquete de Keter utilizando el comando yesod keter
y colocando el archivo resultante en incoming
directorio de incoming
Keter. Dado que estoy usando la configuración de la variable de entorno, el archivo .keter
mi aplicación no contiene el valor SOME_API_KEY
(que es intencional).
¿Cómo debo pasar SOME_API_KEY
a la instancia de mi aplicación que se ejecuta dentro de Keter?
Me gustaría evitar incluir el valor en mi keter-config.yaml
por al menos las siguientes tres razones:
- Es menos seguro que el enfoque variable de entorno.
- Al estar incrustado directamente en el archivo de configuración de Keter, a diferencia de la configuración de la aplicación, el secreto no se puede cambiar sin detener y reiniciar todo el proceso de Keter.
- Las variables de entorno se pasan a todas las aplicaciones que gestiona Keter.
Espero que haya algunas "mejores prácticas" para este escenario.
Establezca sus secretos como variables de entorno en su servidor y config/keter.yml
a su aplicación usando forward-env
en config/keter.yml
como se ve en el siguiente parche: https://github.com/snoyberg/keter/commit/9e9fca314fb78860fb5c9b08cad212d92b0b20d4