Integración de GitHub Webhooks y AWS para Gestión de Commits
Clase 11 de 30 • Curso de Ciberseguridad para Desarrollo Web
Resumen
¿Cómo diseñar la arquitectura del proyecto?
Diseñar la arquitectura de un proyecto es un paso crucial que define cómo los diferentes componentes del sistema se interactuarán entre sí. En este proyecto, el objetivo principal es permitir que el Engineering Manager acceda a los datos de los commits realizados por los desarrolladores. Esto se logrará mediante GitHub Webhooks, dos funciones Lambda, una base de datos RDS en AWS, una API Gateway y el uso de Auth0 para autenticación. Este enfoque garantizara seguridad, eficacia y escalabilidad.
¿Cómo funcionan los GitHub Webhooks?
Cada vez que un desarrollador realice un push en GitHub, se activará un webhook que enviará datos a nuestro sistema. Este mecanismo simplifica la comunicación entre GitHub y nuestro proyecto, permitiendo recibir notificaciones en tiempo real de cada commit que se realiza.
¿Qué son las funciones Lambda y cuál es su rol aquí?
Utilizaremos dos funciones Lambda:
-
GetMetrics: Será accesible solo por el Engineering Manager u otros usuarios registrados. Esta función obtendrá registros de la base de datos y proporcionará métricas relevantes.
-
Handle GitHub Notifications: Se encargará de recibir mensajes exclusivamente desde GitHub, registrando los commits en nuestra base de datos.
Las funciones Lambda permiten ejecutar código en respuesta a eventos y escalan automáticamente, haciendo que sean ideales para manejar tareas específicas sin necesidad de gestionar servidores.
¿Cómo se estructura la base de datos RDS?
Optamos por una base de datos RDS de Amazon basado en SQL. Esta elección se debe a su alta disponibilidad, seguridad y facilidad de gestión. Aquí almacenaremos todos los datos relacionados con los commits, permitiendo al Engineering Manager consultar métricas detalladas a través de la función GetMetrics.
¿Cómo se gestiona la seguridad con API Gateway y Auth0?
Para asegurar que solo usuarios autorizados accedan a las funciones Lambda, utilizaremos una API Gateway con dos endpoints:
- Uno dirige al Engineering Manager hacia la función GetMetrics.
- Otro recibe las notificaciones de GitHub y dirige hacia Handle GitHub Notifications.
La API Gateway realizará la autorización utilizando Auth0, un proveedor de autenticación que facilita la implementación de inicio de sesión seguro. Este método asegura que solo los usuarios aprobados y las notificaciones de GitHub tengan acceso a nuestro sistema.
¿Por qué usar Secrets Manager para las credenciales?
Cuando se trata de bases de datos, el manejo seguro de las credenciales es esencial. Utilizaremos AWS Secrets Manager para almacenar y gestionar las credenciales de acceso a la base de datos. Esto evita que las credenciales queden expuestas en los archivos de configuración, minimizando el riesgo de filtraciones y aumentando la seguridad de nuestra arquitectura.
Recuerda que cada uno de estos componentes puede personalizarse según las necesidades específicas del proyecto y los requisitos de seguridad. Aprovecha estas herramientas para construir un sistema robusto y eficiente. ¡Sigue aprendiendo y desarrollando tus habilidades!