¿Cómo manejar la información de configuración confidencial al implementar aplicaciones del motor de aplicaciones?

Ejemplo: tengo una aplicación que necesita acceder a una API que proporciona un token de autenticación

myApi = MyApi(token=my_private_sensible_token) 

Quiero evitar tener ese token privado en un archivo de configuración que forma parte del proyecto.

Una solución que viene a la mente es aislar la interacción con este servicio en una aplicación proxy separada que es mantenida por un número restringido de personas autorizadas. App-engine permite proteger a los manejadores con autenticación y yo, fácilmente, en el proxy, puedo permitir que solo las llamadas provengan de una aplicación autorizada del motor de aplicaciones.

Se me ocurren diferentes soluciones; en cierto punto, todas estas fichas privadas están disponibles en la memoria de la aplicación del consumidor, esto podría permitir que un usuario malintencionado (que mantiene al consumidor) escriba un controlador que imprima esta ficha secreta que de alguna manera elegante La aplicación ha recuperado.

¿Tienes mejores sugerencias?

Otro enfoque posible es tener 2 copias de la aplicación (en realidad 2 aplicaciones diferentes que tienen el mismo código), cada una con su propia app_ID, archivo (s) de configuración, etc.

  • uno para desarrollo / puesta en escena , accesible por el equipo de desarrollo más grande
  • uno para producción – (posiblemente clonado / bifurcado desde el mismo repository de SCM, ¿quizás una sucursal privada?) solo accesible por los desarrolladores de confianza y con el contenido del archivo de configuración sobrescrito / actualizado para la implementación de producción

Dicha configuración puede ofrecer beneficios adicionales además de limitar el acceso a las credenciales de producción, por ejemplo:

  • Capacidad de usar un sistema CI que incluye la implementación automática en un entorno de producción muy cercano
  • Control más estricto de los despliegues de producción.