¿Cuándo debo usar API?

También incluí algunas mejores prácticas sobre cómo manejamos las claves API.

1. Entropía

Sin una clave de API, generalmente se usa un par de nombre de usuario / contraseña, y estos pares son casi siempre menos seguros: generalmente se reutilizan en muchos sitios, son mucho más fáciles de interceptar, si se ve comprometido en un sitio, podría verse comprometido por todos los sitios, etc.

Por el contrario, las claves API de Stormpath tienen secretos que se generan de forma segura al azar en cadenas de caracteres de más de 40 caracteres de longitud y tienen una entropía significativamente mayor y son mucho más difíciles de comprometer para los atacantes. Son mucho más desafiantes para los atacantes potenciales que la mayoría de las contraseñas normales de 8-13 caracteres (que la mayoría de los atacantes han calculado previamente en lo que se conoce como una Tabla Arcoíris).

2. Restablecimiento de contraseña

Si su API usa pares de nombre de usuario / contraseña y desea restablecer su contraseña (o un administrador lo requiere), cada pieza de software que estaba usando su par de nombre de usuario / contraseña para comunicarse con la API falla instantáneamente. Esto podría ser un efecto secundario muy inconveniente y que amenaza la producción.

3. Independencia

Las claves API, debido a que son independientes de las credenciales maestras de la cuenta, se pueden revocar y crear a voluntad; muchas claves API se pueden otorgar a una sola cuenta. Esto es valioso para las estrategias de rotación de claves, es decir, requerir una clave nueva por mes, o eliminar claves si cree que una podría haber sido comprometida.

Además, debido a que las claves API no son las credenciales maestras de su cuenta, si están expuestas a un compañero de trabajo (por ejemplo, un ingeniero de sistemas ve el contenido de su clave API cuando inicia sesión en una máquina de producción), las credenciales maestras de su cuenta son no corre el riesgo de exponerse a ese compañero de trabajo (o cualquier otra parte subrepticia potencial).

4. velocidad

Debido a que los pares de nombre de usuario / contraseña son, por naturaleza, casi siempre más inseguros (ver Entropía arriba), tomamos medidas adicionales en nuestro sistema para hacer que los inicios de sesión con ellos sean mucho más lentos a propósito: una autenticación de nombre de usuario / contraseña para una aplicación tomará entre 0.1 y 0.5 segundos en nuestro sistema a propósito (dependiendo de la configuración): aumenta exponencialmente la cantidad de tiempo que requiere un atacante para intentar romper una cuenta determinada.

Esto es prácticamente imperceptible para el usuario final que inicia sesión en una aplicación, pero hace que sea casi imposible para un atacante que utiliza la fuerza bruta comprometer una sola contraseña que está probando millones de contraseñas potenciales a la vez (por ejemplo, a través de una cuadrícula de ataque en Amazon EC2) .

Las claves API, debido a su seguridad adicional (utilizada con esquemas de autenticación segura como la autenticación basada en resumen), no tienen tales restricciones de tiempo. Esto permite que las llamadas a la API sean lo más rápido posible, una necesidad para la comunicación de sistema a sistema.

5. Exposición limitada

Los secretos clave de API nunca se exponen en nuestra interfaz de usuario: se proporcionan una sola vez (generalmente mediante la descarga de un archivo), y damos instrucciones para garantizar que el archivo sea legible en el sistema operativo por una sola persona. Esto fomenta una política de no compartir y hace que sea mucho más difícil adquirir claves API: si el usuario solo puede leer el archivo, debe comprometer una cuenta del sistema operativo antes de adquirir una clave API Stormpath. Si bien no es imposible, aumenta la dificultad para comprometer una clave API.

Esto también tiene un gran beneficio al escribir aplicaciones de software que se comunican con Stormpath: los SDK de Stormpath que se incluyen en el código de su aplicación saben cómo leer este archivo para adquirir credenciales en tiempo de ejecución. ¿Porque es esto importante?

Debido a que no necesita exponer (copiar y pegar) las claves API en ninguno de los archivos de código fuente o configuración de su proyecto donde otras personas puedan verlas. Realmente pueden permanecer privados para usted y solo para usted (suponiendo que haga la diligencia debida y proteja también las cuentas de su sistema operativo).

6. Trazabilidad

Como nunca exponemos el secreto de la clave API en la interfaz de usuario, se requiere una descarga, y la descarga debe iniciarla (hacer clic) una persona. Este clic nos permite rastrear quién es responsable de dispensar las claves API, algo importante para los informes de seguridad.

¡Espero que esto sea útil!