¿La mejor manera de almacenar / recuperar archivos de claves confidenciales?

5

Tenemos nuestros servidores web funcionando en AWS EC2. Tenemos alrededor de 30 claves / contraseñas / etc API (datos confidenciales) que se configuran en el entorno para que nuestra aplicación las use. Cada vez que implementamos, iniciamos una nueva instancia de servidor, desplegamos nuestro repositorio y construimos nuestra aplicación. Necesito una forma de llevar las claves al servidor para colocarlas en el entorno de la aplicación. Dado que estamos implementando varias veces a la semana, esto no puede ser un proceso manual. Tampoco quiero poner las claves en nuestro repositorio. Incluso si ciframos un archivo con todas nuestras claves, necesitaremos una clave para descifrarlo en el otro lado. Tengo una solución implementada, pero cuando necesitamos agregar / cambiar claves no es muy sencillo.

¿Alguien puede pensar en una buena manera de introducir estas claves en el medio ambiente? Gracias!

    
pregunta trikosuave 30.10.2014 - 18:48
fuente

4 respuestas

1

Sé que llego tarde a esto, pero podría beneficiar a otra persona que enfrenta este problema ahora.

Podrías hacer lo siguiente: - Poner una clave maestra en la base de datos. - Registre la clave real en el código repo, pero cifrada por la clave maestra. Esta clave ingresada podría estar en un archivo protegido por contraseña.

Hace unos meses, AWS ha creado un nuevo servicio llamado KMS (servicio de administración de claves). Se encargan de administrar la clave real y su clave maestra de manera segura y compatible.

    
respondido por el Fayez 05.07.2015 - 00:42
fuente
0

Si entendí todo, creo que tienes dos escenarios (¡o más!)

Escenario 1

Podrías crear un script que continúe revisando las nuevas claves (encriptadas). Cada vez que detecta uno nuevo (¿detectado a través de hash?), Los descarga y configura todo para la compilación. Si se hace con python, sería menos de 30 líneas, tal vez incluso menos de 20.

Obs 1: El archivo que contiene la nueva clave debe estar cifrado. Puede usar uno simétrico como AES y el secreto se puede guardar con el agente.

Observación 2: el mejor método para la comprobación sería el servidor web que genera el hash y que solo lo envía a las solicitudes del agente.

Observación 3: el agente no debe descifrar la clave directamente en el disco. Puede darle un pequeño problema adicional, pero será mejor si solo descifra la clave de la memoria y luego realiza los cambios en los archivos necesarios.

Escenario 2

El agente comprueba el disco local en lugar de una ubicación web, buscando la nueva clave. Siempre que esté disponible, este robot lo coloca en el lugar correcto y limpia la ubicación de "comprobación", dejándolo preparado para la próxima actualización clave.

Puede actualizar esta clave a través de SCP / SFTP / OTHER_ENCRYPTED_OPTION y este proceso de carga podría automatizarse según sus necesidades.

En este método, no es necesario cifrar nada, excepto la carga de la nueva clave.

    
respondido por el DarkLighting 30.10.2014 - 22:37
fuente
0

Puede dejar las claves en un sistema dedicado y proporcionar servicios de criptografía a través de la red . La clave para acceder a dichos servicios de criptografía se puede compartir con los desarrolladores, ya que solo se puede utilizar desde IP específicas. Un famoso proveedor de Internet hizo esto para los certificados SSL (olvidé su nombre).

    
respondido por el Enos D'Andrea 20.12.2014 - 10:25
fuente
0

Al enfrentar el mismo problema, finalmente decidí proporcionar las claves de cifrado a través de una API, cuando una aplicación lo solicita.

Esto tiene varias ventajas e inconvenientes:

  • usted confía en algún tipo de contención / limitación. En mi caso, fue el filtrado de IP el que fue óptimo para la arquitectura en la que estábamos.
  • existe el riesgo de suplantación de IP que debe ponderarse
  • la API también me permitió proporcionar una configuración centralizada (enviada junto con las claves a solicitud)
respondido por el WoJ 11.04.2015 - 13:57
fuente

Lea otras preguntas en las etiquetas