Prácticas recomendadas de seguridad de AWS Lambda
Seguridad — AWS Lambda es un servicio informático que ejecuta código en respuesta a eventos y administra automáticamente los recursos informáticos necesarios para ejecutar ese código.
Lambda le permite ejecutar código sin tener que aprovisionar ni administrar servidores. También puede usar Lambda para ejecutar código en respuesta a eventos que ocurren en otros servicios de AWS, como Amazon S3, Amazon DynamoDB y Amazon API Gateway.
El modelo de responsabilidad compartida en relación con AWS Lambda
¡Claro que sí! el modelo de responsabilidad compartida… — ¡probablemente ya esté harto de escucharlo! El modelo de responsabilidad compartida es un elemento fundamental del modelo de seguridad de AWS.
Ayuda a garantizar que los clientes sean responsables de la seguridad de sus aplicaciones y datos, mientras que AWS es responsable de la seguridad de la infraestructura de la nube subyacente.
El modelo de responsabilidad compartida también ayuda a garantizar que los clientes puedan confiar en la seguridad de la nube de AWS.
AWS administra el sistema operativo y la plataforma de aplicaciones de AWS Lambda. Usted es responsable de la seguridad de su código y de la gestión de identidad y acceso al servicio de Lambda.
Consejos rápidos
- Aplique el “privilegio mínimo” a las VPC, utilizando subredes específicas de la función, ACL de red.
- Establezca estándares de control de acceso y limite el acceso a las API de Lambda y al proceso de implementación.
- Establezca los permisos más restrictivos posibles al definir las políticas de IAM.
- Elimine las funciones de Lambda que ya no se utilizan.
- Utilice solo un rol de IAM por función de Lambda.
- No almacene las credenciales de AWS en el código o la configuración de la función Lambda.
-
Guarde los secretos en el almacén de parámetros de EC2 Systems Manager o en las variables de entorno de Lambda con auxiliares de cifrado.
-
Establezca los ajustes de configuración y autorización de API cuando use API Gateway.
Limpiar /tmp
Uno de los beneficios de usar Lambda es que no tiene que preocuparse por administrar los recursos informáticos subyacentes. Lambda escala automáticamente la cantidad de recursos informáticos necesarios para ejecutar su código en función de la tasa de eventos.
Sin embargo, hay una cosa que debe tener en cuenta al escribir funciones de Lambda: limpiar el directorio temporal.
El directorio temporal se utiliza para almacenar el entorno de ejecución de la función, incluido el código, las bibliotecas y los datos. El directorio temporal se limpia automáticamente cuando se completa la función.
Sin embargo, si la función falla, el directorio temporal no se limpia automáticamente. Esto puede provocar que se agote el espacio en disco y que la función falle si se agota el espacio en disco.
Para evitar esto, debe limpiar el directorio temporal después de cada ejecución exitosa de la función. Esto se puede hacer agregando un paso de limpieza al código de su función.
¡Use IAM!
También puede usar roles de IAM para ayudar a proteger sus funciones de Lambda. Los roles de IAM le permiten especificar a qué recursos de AWS puede acceder una función de Lambda. También puede usar roles de IAM para ayudar a restringir qué usuarios pueden invocar sus funciones de Lambda.
El siguiente paso es configurar los ajustes de seguridad de su función Lambda. Puede hacerlo editando el archivo de configuración de la función.
El archivo de configuración contiene ajustes que le permiten especificar cómo su función de Lambda debe manejar los errores, el tiempo de espera y el registro.
También puede usar el archivo de configuración para especificar la clave de cifrado del código fuente para su función Lambda. Esta clave se utiliza para cifrar el código fuente de su función cuando se carga en AWS.
Además, puede utilizar la consola de AWS Lambda para ayudar a proteger sus funciones de Lambda. La consola le permite ver y administrar sus funciones de Lambda, incluidos sus archivos de configuración y roles de IAM. La consola también le permite ver los registros de sus funciones de Lambda.
Otro asunto que debe tener en cuenta…
Los posibles riesgos de seguridad asociados con el uso de Lambda. Estos riesgos incluyen la posibilidad de que se cargue código malicioso en AWS, la posibilidad de acceso o robo de datos confidenciales y la posibilidad de que usuarios no autorizados accedan a sus funciones de Lambda.
Puede ayudar a mitigar estos riesgos mediante el uso de una contraseña segura para su cuenta de AWS, la autenticación de dos factores y el uso de roles de IAM para restringir el acceso a sus funciones de Lambda.
También debe ser consciente de los posibles riesgos de seguridad asociados con los datos que almacena en AWS y tomar las medidas adecuadas para proteger esos datos.
Habilitar registro
Las funciones de AWS Lambda proporcionan una forma de ejecutar código en respuesta a eventos. Puede utilizar las funciones de Lambda para registrar datos en Amazon CloudWatch Logs.
En esta publicación de blog, explicamos cómo registrar datos en CloudWatch Logs desde una función de Lambda.
Lo primero será crear una función Lambda. Puede utilizar la consola de AWS Lambda para crear una nueva función de Lambda.
Después, configurar la función para registrar datos en CloudWatch Logs. Debe especificar la siguiente información en la configuración de la función:
Grupo de registro: el grupo de registro donde desea que se registren los datos.
El grupo de registro donde desea que se registren los datos. Flujo de registro: el flujo de registro en el que desea que se registren los datos.
Flujo de registro donde desea que se registren los datos. Formato de registro: el formato de registro en el que desea que se registren los datos.
Formato de registro en el que desea que se registren los datos. Prefijo: el prefijo que desea agregar a todos los mensajes de registro.
Prefijo que desea que se anteponga a todos los mensajes de registro. Depósito de S3: el depósito de S3 donde desea que se almacenen los registros.
El siguiente es un ejemplo de cómo configurar una función de Lambda para registrar datos en CloudWatch Logs:
Por último, escribir el código para su función Lambda. El código de su función debe incluir lo siguiente:
Código para registrar datos en CloudWatch Logs.
Código para invocar la función Lambda.
El siguiente es un ejemplo de código que registra datos en CloudWatch Logs desde una función de Lambda:
El código anterior registra los siguientes datos en CloudWatch Logs:
- { “mensaje”: “¡Hola de Lambda!” }
También puede registrar datos en formato JSON. El siguiente es un ejemplo de código que registra datos en formato JSON en CloudWatch Logs desde una función de Lambda:
El código anterior registra los siguientes datos en CloudWatch Logs:
- { “mensaje”: “¡Hola de Lambda!” , “jsonData” : { “clave1” : “valor1” , “clave2” : “valor2” } }
También puede registrar datos en formato CSV. El siguiente es un ejemplo de código que registra datos en formato CSV en CloudWatch Logs desde una función de Lambda:
El código anterior registra los siguientes datos en CloudWatch Logs:
- mensaje,jsonData
- ¡Hola de Lambda!,{“key1”:”value1″,,”key2″:”value2″}
Si le interesa, puede echar un vistazo a algunos de los otros artículos que he escrito recientemente sobre Laravel: