En este artículo se realizará un ejemplo práctico de una revisión de seguridad sobre una arquitectura cloud, y los elementos que deben ser implementados para garantizar los adecuados controles de seguridad, todo partiendo de un diagrama. En el anterior artículo, ya se había hablado de modelado de amenazas, que es la revisión desde el punto de seguridad de las arquitecturas, ahora se pondrá un ejemplo práctico para un caso sobre AWS.

Ejemplo de arquitectura de seguridad

En este apartado se muestra un ejemplo de arquitectura de seguridad, utilizando algunos servicios básicos de AWS, para garantizar la seguridad. La arquitectura es la que se puede apreciar en la siguiente imagen: 

Los elementos de los que se dispone son los siguientes en dicha arquitectura son las siguientes:

  • Internet Gateway: Permite la comunicación entre la Virtual Private Cloud (VPC) e Internet.
  • Application Load Balancer (ALB)):  El ALB gestiona el tráfico dentro de la aplicación y de las conexiones externas.
  • Servidor Front-end (EC2): Se coloca en un grupo de autoescalado donde el servidor web front-end se despliega en instancias EC2 y sirve como interfaz de usuario (UI) de la aplicación.
  • Servidor Back-end: Los servicios web de back-end se colocan en una subred privada, desplegada en instancias EC2.
  • Amazon RDS (Base de datos): La base de datos de la aplicación se mantiene en una subred restringida que interactúa con los servicios de back-end.
  • CloudTrail: Proporciona auditoría de conformidad, gobernanza, operativa y de riesgo de las cuentas de AWS.
  • CloudWatch: CloudWatch le ayuda con la monitorización de sus aplicaciones, responde a cualquier cambio de rendimiento en todo el sistema y permite optimizar la utilización de los recursos, además de proporcionar una visión unificada de su estado general.
  • Cloud9: AWS Cloud9 es un entorno de desarrollo integrado (IDE) basado en la nube que le permite escribir, ejecutar y depurar código en el navegador.
  • CodeCommit: AWS CodeCommit es un servicio de control de fuentes totalmente gestionado que aloja repositorios seguros basados en Git.
  • CodeBuild: AWS CodeBuild es un servicio de integración continua totalmente administrado que compila el código fuente, ejecutar pruebas y produce paquetes de software listos para su implementación.
  • CodeDeploy: Es un servicio de implementación totalmente administrado que automatiza la canalización de la implementación de software.

En la  arquitectura se dispone por una parte de la funcionalidad correspondiente para que los desarrolladores programen y vayan subiendo el código de forma constante. Mediante Cloud9 se realiza la programación, y mediante CodeCommit, CodeBuild y CodeDeploy se realiza la subida y compilación del código. En dicho caso, aunque no aparezca en esta arquitectura, es recomendable implementar análisis de seguridad, como análisis de código, sobre el código que es subido mediante CodeCommit, para comprobar que no tenga debilidad de seguridad antes de realizar la subida.

Por otra parte se tiene aislada tanto la base de datos como el backend bajo una subnet privada, es un requisito importante de seguridad para restringir los accesos a aquellos activos que contienen información sensible. Solo es posible realizar los accesos al backend desde el frontend, y a la base de datos solo desde el backend. Por otra parte mediante CloudWatch y CloudTrail se realiza la correspondiente monitorización de todos los eventos ocurridos.

 

Metodología de revisión de seguridad sobre una arquitectura

Se muestra a continuación un ejemplo de modelado de amenazas sobre una arquitectura similar a la del anterior caso. Para este caso es bueno utilizar una metodología que puede ser utilizada para realizar una revisión de seguridad contra un arquitectura de seguridad.

Se utilizan las tablas de amenazas para poner las amenazas que se pueden en cada una de las dependencias o activos de la arquitectura, como son los accesos no autorizados. En la tabla de controles de seguridad se especifican los controles de seguridad específicos para cada amenaza posible, y en la tabla de activos se especifican los recursos que pueden ser susceptibles de ser atacados.

A continuación se describe el funcionamiento/función básica de las distintas entidades enumeradas del diagrama anterior, y el proceso del modelado de amenazas correspondiente:

  • Los usuarios (tanto legítimos como maliciosos) interactúan con las aplicaciones. Los usuarios maliciosos TA01 son los actores de la amenaza.
  • El equilibrador de carga de aplicaciones front-end sirve para equilibrar la carga del tráfico HTTP y HTTPS y proporciona un enrutamiento avanzado de solicitudes dirigido a la entrega de arquitecturas de aplicaciones modernas.
  • La instancia EC2 sirve a los servicios de front-end de la aplicación. Actor potencial de amenaza interna – Acceso no autorizado a TA04.
  • La instancia EC2 presta servicios de back-end, posible actor de amenazas internas – Acceso no autorizado a TA04.
  • Un volumen de Amazon EBS es un dispositivo de almacenamiento duradero a nivel de bloque que se puede adjuntar a una o más instancias.
  • La base de datos de Amazon RDS permite una fácil configuración, operaciones y escalabilidad de una base de datos relacional en la nube.
  • Los registros de la aplicación se almacenan en el cubo S3.
  • Los desarrolladores interactúan con Cloud9 IDE y CodeCommit con potenciales actores de amenazas como TA01, TA02, TA03, TA04.
  • Cloud9 IDE interactúa con AWS CodeCommit teniendo a TA03, TA04 como potenciales actores de amenazas.
  • CodeCommit interactúa con los desarrolladores y CodeBuild utilizando claves SSH.
  • CodeBuild interactúa con CodeDeploy después de compilar el código fuente, ejecutar pruebas y producir paquetes de software.
  • CodeDeploy se utiliza para implementar aplicaciones en instancias EC2.

 

Alejandro Rueda Romero – Ingeniero en Ciberseguridad

 

BIBLIOGRAFÍA