10 mejores prácticas para aumentar la seguridad en aplicaciones de Twilio Flex

May 09, 2022
Redactado por

Debido a la alta demanda de Twilio Flex como plataforma de Contact Center Omnicanal, es de crucial importancia construir los proyectos pensando en la seguridad desde el primer momento.

Debido a que el cliente y/o partner son quienes construyen los proyectos en Flex, preparamos una lista de puntos clave para que sean considerados durante la fase de desarrollo para garantizar máxima seguridad con Twilio Flex.

Variables de Ambiente

Todos los plugins de Flex y las llamadas a las APIs de Twilio deben ser autenticadas con un Account SID y un AuthToken o API Key. La práctica recomendada es no declarar esos valores como variables en el código, sino almacenarlos en variables de ambiente (en un archivo .env en etapa de desarrollo).

Ejemplo de código:

Ejemplo de código para declarar variables de ambiente

En este post explicamos paso a paso como cargar credenciales desde variables de ambiente.

Esta práctica trae dos beneficios importantes:

  1. El Account SID y el AuthToken o API Key no quedan expuestos en el código. Sobre todo, si este va a ser hospedado en plataformas de uso compartido como Github, por ejemplo.
  2. Si hubiese algún comportamiento inesperado, sospechoso o algún incidente, las credenciales podrían ser revocadas con un simple cambio.

IMPORTANTE: Si se pretende utilizar una herramienta de control de versiones con acceso público, como GitHub, es imprescindible ignorar el archivo de variables de entorno a través del archivo .gitignore.

API Keys en vez de Auth Tokens

Opte por usar API Keys en vez de Auth Tokens. La funcionalidad de ambas es esencialmente la misma, pero la diferencia radica en que las API Keys son fáciles de revocar, y al revocarse, todo el tráfico será interrumpido de forma inmediata. Para volver a producción, solo será necesario realizar un cambio y de esa forma todo el tráfico volverá a la normalidad de manera inmediata. También se recomienda disponer de un solo lugar que albergue todas las API Keys para así agilizar los cambios que sean necesarios.

El paso a paso para crear API Keys se encuentra en este post.

Rotación de API Keys

Dependiendo de la naturaleza y el nivel de riesgo de su operación, recomendamos rotar las API Keys semestralmente: es decir, revocarlas cada 6 meses y reemplazarlas por unas nuevas.

Permisos Geograficos - Geo Permissions (para casos de uso con Voz)

Para aquellos proyectos de Flex que utilicen Voz, es posible configurar permisos geográficos a través de la Consola de Twilio: por ejemplo, si usted opera en Colombia, México y Argentina, es posible configurar los permisos geográficos de su cuenta para  bloquear cualquier tráfico de voz a otros países.

Usage Triggers

Los Usage Triggers son muy útiles para realizar monitoreo de sus servicios. Esto puede agilizar las medidas de seguridad necesarias ante un pico de tráfico inesperado o sospechoso.

Para crear Usage Triggers es necesario entrar a la Consola de Twilio > "Billing" > Triggers y crearlos de la siguiente forma:

           

Print de la consola mostrando la configuración de los Usage Tiggers

En este ejemplo, creamos un Trigger que nos avise cuando haya más de 10000 llamadas de voz en un minuto o menos. Si eso ocurriese, el Trigger le envía un email al correo registrado en el campo de "Email Address". Además de un email, el Trigger también puede accionar un Webhook para automatizar cualquier procedimiento de seguridad (como revocar alguna API key, por ejemplo).

Password Managers

Recomendamos utilizar Password Managers para crear y administrar todas las contraseñas de los usuarios que accedan a la Consola de Twilio.

2FA

Recomendamos activar la autenticación de 2 factores para reforzar la seguridad de todos los usuarios de la plataforma. La validación puede ser por medio de SMS, voz, o una aplicación de autenticación (Twilio Authy o aplicación de terceros). Para cuentas pagas, la autenticación de 2 factores es obligatoria.

SSO (Single Sign-On)

Recomendamos implementar SSO para hacer el login en Twilio. Esto permite tener un control más granular sobre los permisos de cada usuario. Twilio acepta cualquier servicio genérico con soporte a SAML 2.0, y contamos con tutoriales disponibles para Azure AD y Okta

Plugins Flex

Para garantizar la seguridad de los plugins de Flex, es importante que no se utilice ninguna API Key o Auth Token directamente en el plugin, sea en el código o en variables de ambiente. Si es necesario llamar a una API o servicio externo, intente encapsular la llamada a través de una Twilio Function, exponiendo solo el endpoint del servicio y almacenando todas las credenciales como variables de ambiente en el servicio Serverless, tanto para llamadas a servicios Twilio o para APIs externas.

Functions en Twilio cuentan con una validación por token, que garantizan que las llamadas sean ejecutadas y autorizadas únicamente por clientes Flex autenticados. Con lo anterior, si alguien llegase a interceptar el endpoint, no lograría realizar llamadas.

Twilio Editions

Para obtener más recursos y funcionalidades de seguridad (como auditoria de eventos, proxy estático, etc.) considere optar por las Ediciones de Enterprise o Security de Twilio.

Por último, a continuación encontrará un instructivo específico para reforzar aún más la seguridad en su operación:

Las medidas de seguridad recomendadas ayudarán a proteger al máximo su proyecto de Twilio Flex y garantizarán que los servicios sean solamente utilizados para fines legítimos de su negocio.