2011-06-28 20 views

Respuesta

5

No es exactamente una respuesta:

  • Si se mantiene claves en el modelo, cualquiera que pueda desplegar puede leer las claves del modelo, y desplegar de nuevo para cubrir sus huellas. Si bien Google te permite descargar código (a menos que deshabilites esta función), creo que solo conserva la última copia de cada versión numerada.
  • Si se mantiene llaves en un no-facturado archivo de configuración y descargas código de desactivación, a continuación, sólo las personas con las teclas pueden implementar con éxito, pero nadie puede leer las claves sin furtivamente una puerta trasera en el despliegue (potencialmente no es tan difícil) .

Al final del día, cualquiera que pueda desplegar puede llegar a las llaves, así que la pregunta es si usted piensa que el riesgo se reduce al mínimo mediante el almacenamiento de claves en el almacén de datos (que es posible hacer copias de seguridad de, por ejemplo,) o en las máquinas del implementador.

Una alternativa viable podría ser combinar los dos: Tienda cifrado claves de la API del almacén de datos y poner la llave maestra en un archivo de configuración. Esto tiene algunas características potencialmente bonito:

  • atacantes necesitan tanto el acceso a una copia del almacén de datos y una copia del archivo de configuración (y, presumiblemente, los desarrolladores no hacen copias de seguridad del almacén de datos en un ordenador portátil y lo pierde en el tren).
  • Al especificar dos claves en el archivo de configuración, puede hacerlo clave-vuelco (por lo que los atacantes necesitan un almacén de datos/config de la misma edad).
  • Con criptografía asimétrica, puede hacer posible que los desarrolladores añadir una clave de API para el almacén de datos sin necesidad de leer los otros.

Por supuesto, a continuación, que va a subir cripto a los servidores de Google, que puede o no puede contar como "exportador" cripto con las cuestiones legales habituales (por ejemplo, ¿qué pasaría si Google pone en marcha un centro de datos de Asia y el Pacífico?) .

+2

Las regulaciones de exportación de cifrado generalmente se refieren a exportar código criptográfico o algoritmos, no datos cifrados. .. – poolie

+0

Asegúrate de ver la respuesta de Remko en esta página. –

6

No hay una solución fácil aquí. Comprobar las claves en el repositorio es malo, ya que verifica en detalles de configuración irrelevantes y porque potencialmente expone datos confidenciales. Por lo general, creo un modelo de configuración para esto, con exactamente una entidad, y establezco las opciones de configuración y las claves relevantes después de la primera implementación (o cada vez que cambian).

Alternativamente, se puede comprobar en un archivo de configuración de ejemplo, a continuación, excluirlo de control de versiones, y mantenga las teclas reales a nivel local. Sin embargo, esto requiere cierta forma de distribuir las claves, y hace que sea imposible para un desarrollador implementar a menos que tengan las claves de producción (y todo para implementar accidentalmente el archivo de configuración de muestra sobre el vivo).

1

tres maneras que se me ocurren:

  1. tienda en almacén de datos (puede ser de codificación base64 para tener un nivel más de indirección)
  2. pasarlo como variables de entorno a través params de línea de comandos durante el despliegue .
  3. Guarde un archivo de configuración, git-ignórelo y léalo del servidor. Aquí este archivo puede ser un archivo .py si está utilizando una implementación de python, por lo que no se puede leer el archivo & de archivos .json.

NOTA: Si usted está tomando la ruta conf-archivo, no te almacenar esta JSON en las carpetas públicas estáticas!

5

Mientras tanto, Google añadió un servicio de administración de claves: https://cloud.google.com/kms/

se podría utilizar para cifrar sus secretos antes de almacenarlos en una base de datos o almacenarlos en control de código fuente cifrado. Solo las personas con acceso de "descifrado" a KMS y a sus secretos podrían usarlos.

El hecho es que las personas que pueden implementar código siempre podrán acceder a sus secretos (suponiendo que su aplicación GAE necesita ser capaz de usar los secretos), pero no hay forma de evitar eso por lo que puedo pensar .

Cuestiones relacionadas