¿Cómo almacenar y usar de forma segura las claves API de terceros?

4

He visto algunas preguntas aquí con inquietudes similares, pero sentí que esta pregunta específica no fue formulada o respondida, por lo que haré todo lo posible para ilustrar mi caso aquí.

El problema:

  • La plataforma que estoy desarrollando consiste en un agregador y un normalizador de funciones de "API de terceros" como en: mis usuarios proporcionarán sus API KEYS y tendré que almacenarlas
  • Los usuarios deben proporcionar varias CLAVES de API para API de terceros
  • La aplicación necesita llamadas API en nombre del usuario, incluso cuando el usuario no ha iniciado sesión (durante las tareas en segundo plano)
  • Al llamar a las API de terceros, necesitaré la forma de texto claro de esas claves y secretos

Mi infraestructura:

  • Actualmente utilizo Heroku (para mi servidor http) que, en teoría, garantiza que nadie pueda acceder a mis máquinas a través de SSH u otros medios
  • Mi pase garantiza que solo una cantidad seleccionada de usuarios (idealmente utilizando autenticación de 2 factores) tienen acceso al panel de control, por lo tanto a las variables ENV, por lo tanto a las credenciales de la base de datos

Mi plan actual:

  • Almacene las TECLAS API en un servidor separado que emite su propio token para la autenticación futura
  • Sólo acepte llamadas a la API de mis propios servidores http (usando algún tipo de VPN privado)
  • Expone una API que solo da acceso a algunas funciones seleccionadas que mis otros servidores utilizaron, reduciendo así la superficie de ataque de mi sistema solo a esta máquina con un software mínimo instalado (una API mínima de http.js).

Mi recomendación de aprobación:

  • Use heroku para ejecutar mi "administrador de claves servixe"
  • Almacene las credenciales de la base de datos en las variables ENV y no le dé acceso a esta cuenta a nadie que no sea el "administrador de claves", que será la única persona capaz de iniciar sesión en el panel de control del pase y ver la dirección / credenciales de la base de datos

Preguntas:

  • ¿Cuál es la forma más segura de almacenar y usar esas claves?
  • ¿Hay alguna opción que sea más segura que simplemente almacenar las claves en una base de datos en la que la dirección / credenciales están protegidas por un tablero autenticado de dos factores?

Gracias

    
pregunta kroe 29.05.2017 - 19:48
fuente

1 respuesta

1

Basado en lo que está diciendo en su pregunta. Solo use el almacén de certificados simple como el archivo JKS, el archivo o PFX si se ejecuta en Windows y luego asegure su sistema de archivos, de modo que el archivo esté protegido. Esto es si está almacenando claves privadas, sin embargo, si su aplicación es el cliente de un servicio de terceros, solo necesita su clave pública, que no necesita ser protegida tan bien como la clave privada. Su aplicación todavía necesita la contraseña para abrir el almacén de claves. Hay algunos patrones de seguridad para certificados como certificados giratorios.

    
respondido por el Hugo R 11.08.2017 - 08:10
fuente

Lea otras preguntas en las etiquetas