significado sefirot sefirah sefira haskell deployment web-deployment yesod keter

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:

  1. Es menos seguro que el enfoque variable de entorno.
  2. 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.
  3. Las variables de entorno se pasan a todas las aplicaciones que gestiona Keter.

Espero que haya algunas "mejores prácticas" para este escenario.