La primera variable en esto es la estructura de su solución sin servidor, la segunda es el tema de seguridad que le preocupa. A continuación, cubriré las diferentes variables que he considerado y luego en qué debes pensar. En general, todas las preocupaciones tienden a ser más fáciles.
Hay toneladas de otras soluciones, pero creo que estas ayudan a señalar las posibles preocupaciones que pueda estar buscando.
- API , generalmente es RESTFul pero no tiene que serlo, el concepto importante es que las solicitudes tienen un origen HTTP.
- Respuesta de evento , por lo que un archivo se suelta en algún lugar para ser manejado o un paquete enviado a SNS para ser manejado por una o más funciones.
Desde el punto de vista de la seguridad, estas son las áreas a las que me dirijo. Cada uno de ellos tiene mucho más de qué preocuparse, pero los detalles no son apropiados aquí.
- ¿Quién es la organización de ingeniería de semiconductores más grande del mundo?
- ¿Cuáles son algunos problemas de diseño de arquitectura de software que se enfrentan al implementar una aplicación de transmisión de video como YouTube?
- ¿Cuál es la diferencia entre un instalador, un código fuente y un paquete binario al instalar el software?
- ¿Qué tipo de habilidades se requieren para las pruebas manuales y cuáles son las funciones y responsabilidades de un probador de software?
- ¿Es el lenguaje Python una buena herramienta para aprender algoritmos, estructuras de datos e ingeniería de software?
- Autenticación , ¿quién soy y soy? Permitido en la puerta.
- Autorización , ¿puedo ingresar, pero puedo hacer lo que le pido?
- Integridad y resistencia del sistema contra ataques o exploits.
- Integridad de la comunicación (entre componentes del sistema).
Autenticación
- La autenticación de API se puede descargar a un tercero, como Auth0 o StormPath, o bien, puede rodar la suya propia. No hay diferencias notables con un sistema externo aquí.
- La respuesta del evento debe controlarse fuera de la función sin servidor en sí, de modo que se garantice que la invocación se autentique adecuadamente.
Autorización
- La autorización de API , dependiendo de su proveedor, se resuelve de manera diferente. AWS Lambda tiene un autorizador al que API Gateway llama para verificar la autorización. Parece que algunos de los otros proveedores aún no tienen esto, fuera de mi búsqueda rápida, por lo que tendrá que incluir esto en su implementación. Los JWT son una buena solución, ya que elimina la necesidad de una búsqueda para verificar la identidad y la autorización.
- Respuesta al evento , esto debe ser algo que te consideres a ti mismo.
Integridad del sistema
- Tanto la respuesta de API como de evento , la expectativa de sin servidor es descargar esta preocupación en su proveedor. Se supone que deben mantener los contenedores actualizados y seguros, dentro de sus propias pautas. Es probable que haya diferencias entre las plataformas, por lo que si necesita seguridad adicional más allá de la norma, es posible que deba hacer algunas compras.
Integridad de comunicación
- API , la comunicación entrante debería ser HTTPS en estos días. Algunas plataformas tienes que configurar esto de tus propios dominios. No conozco uno que no le proporcione SSL como las URL predeterminadas que generan.
- API y respuesta a eventos , ya que su servicio se comunica hacia el exterior, sin embargo, con otros sistemas y servicios externos tendrá que pensar un poco más. Si es a través de HTTPS, generalmente está bien, ya que la mayoría de los idiomas son buenos para verificar certificados legítimos. Sin embargo, cuando un sistema requiere una lista blanca de IP, se complica. No tiene garantizada una IP predecible o rangos de IP. Si necesita incluir su IP en la lista blanca de un servicio externo, tendrá que usar algo como Amazon VPC alrededor del servicio específico. Sin embargo, en ese momento, está creando un cuello de botella y el rendimiento disminuye (por lo que he visto).
Cuando su sistema interactúa con otros sistemas dentro del mismo proveedor (como S3, DynamoDB o SQS dentro de AWS), confía en el proveedor. Dependiendo de sus preocupaciones de seguridad, es posible que desee cifrar los paquetes que están en ruta y usar un servicio de administración de claves central para el descifrado.
Además, algunos servicios tienen configuraciones de seguridad adicionales (es decir, cifrado S3 en reposo), pero eso no es específico de sin servidor. Deberá investigar cada servicio que utiliza y asegurarse de que esté adecuadamente seguro.