Seguridad y cumplimiento normativo de AWS
Introducción
La seguridad es un pilar fundamental de la nube. Aunque AWS ofrece una infraestructura altamente segura, la responsabilidad de su correcto uso recae en los clientes, según el principio del modelo de responsabilidad compartida. Este modelo establece que AWS es responsable de la seguridad de la nube (protección física de los centros de datos, hipervisor, red, hardware), mientras que el cliente es responsable de la seguridad dentro de la nube (configuración de accesos, cifrado, gestión de aplicaciones y datos). No obstante, el reparto exacto de estas responsabilidades varía según el tipo de servicio: la parte que corresponde al cliente es más amplia en IaaS (por ejemplo, EC2) y se reduce progresivamente con PaaS y, posteriormente, con SaaS.
Los errores de configuración siguen siendo la principal causa de incidentes de seguridad en la nube. Buckets de S3 expuestos públicamente, claves de IAM demasiado permisivas, secretos dejados a la vista en el código fuente: todas ellas son situaciones evitables si se respetan las buenas prácticas.
En este capítulo, exploraremos tres ámbitos esenciales:
-
IAM avanzado, para comprender cómo estructurar los permisos de forma precisa y segura,
-
el cifrado y la gestión de secretos, gracias a AWS KMS y Secrets Manager,
-
la protección de los recursos expuestos a Internet, con WAF, Shield y GuardDuty....
IAM avanzado: roles, permisos y buenas prácticas
1. Entender los fundamentos de IAM
El IAM (Identity and Access Management) es el núcleo de la seguridad en AWS. Controla quién puede acceder a qué y en qué condiciones. Si se configura incorrectamente, puede convertir una arquitectura segura en un entorno vulnerable.
IAM se basa en varios conceptos fundamentales:
-
Usuarios y grupos: destinados a personas físicas. Sin embargo, AWS recomienda actualmente utilizar IAM Identity Center (antes AWS SSO) para gestionar las identidades de personas, y reservar IAM para las identidades de máquinas. No obstante, el uso de usuarios de IAM sigue estando justificado en algunos casos concretos, como una cuenta de emergencia (break-glass) o por necesidades de compatibilidad con sistemas existentes.
-
Roles: entidades de IAM que definen un conjunto de permisos y que son asumidos temporalmente por usuarios, aplicaciones o servicios.
-
Políticas (policies): documentos JSON que describen los permisos concedidos (Allow/Deny), sobre qué acciones (Actions) y sobre qué recursos (Resources).
-
STS (Security Token Service): mecanismo que emite identificadores temporales, lo que reduce los riesgos asociados a las claves de larga duración.
Error frecuente
Muchas empresas crean usuarios de IAM con claves de acceso permanentes para sus desarrolladores o sus aplicaciones. En caso de fuga (en GitHub, por ejemplo), estas claves otorgan acceso ilimitado a la cuenta. La buena práctica consiste en sustituir estas claves por el uso de roles y tokens temporales.
2. Los roles de IAM: una herramienta de seguridad y flexibilidad
El uso de roles de IAM permite delegar permisos temporales sin necesidad de compartir claves secretas. Son omnipresentes en los entornos modernos:
-
EC2 Instance Profiles: se asocia un rol a una instancia de EC2, que obtiene automáticamente credenciales temporales para llamar a los servicios de AWS.
-
Lambda Execution Roles: cada función Lambda dispone...
Cifrado y gestión de secretos: AWS KMS y Secrets Manager
1. Por qué el cifrado se ha convertido en algo imprescindible
En un mundo en el que los datos se han convertido en un activo estratégico, la protección de la información sensible es un requisito tanto técnico como normativo. Los incidentes relacionados con fugas de datos se encuentran entre los más costosos para una organización, no solo en términos económicos, sino también en cuanto a imagen y confianza.
Las normativas internacionales (el RGPD en Europa, la PCI DSS para los pagos, la HIPAA en el sector sanitario y la SOX para las empresas que cotizan en bolsa en Estados Unidos) imponen normas estrictas sobre la confidencialidad y la integridad de los datos. El cifrado es uno de los pilares técnicos que permite cumplir con ellas.
En AWS, el cifrado se puede aplicar en tres niveles:
-
En reposo: los datos almacenados en S3, RDS, EBS o DynamoDB se cifran antes de escribirse en el disco.
-
En tránsito: las comunicaciones se realizan a través de TLS/SSL, lo que garantiza que los intercambios entre clientes, aplicaciones y servicios no puedan ser interceptados en texto claro.
-
A nivel de aplicación: los datos se cifran incluso antes de enviarse a AWS, según las políticas propias de la organización.
2. Servicio de gestión de claves de AWS (KMS): centralizar la gestión de claves
AWS Key Management Service (KMS) es el servicio gestionado dedicado a la gestión de claves de cifrado. Permite crear, almacenar y administrar claves KMS gestionadas por el cliente (Customer Managed Keys), que se pueden utilizar para cifrar datos o generar claves temporales.
a. Integración con los servicios de AWS
La gran ventaja de KMS reside en su integración prácticamente universal. Ya sea al activar el cifrado del lado del servidor (SSE) en un bucket de S3, al marcar la casilla "Enable Encryption" en RDS o al activar el cifrado de un volumen de EBS: en todos estos casos, KMS es el servicio subyacente que genera y gestiona las claves.
Esto permite cifrar datos sin modificar el código de las aplicaciones. Por ejemplo...
AWS WAF, Shield y GuardDuty: proteger sus recursos
1. Proteger las aplicaciones web con AWS WAF
En un entorno en la nube, la principal superficie de exposición suele estar constituida por las aplicaciones web: sitios de comercio electrónico, API REST, portales de clientes. Estas aplicaciones son objetivos preferentes de ataques como la inyección SQL, el cross-site scripting (XSS) o los intentos de exfiltración a través de solicitudes maliciosas.
El AWS Web Application Firewall (WAF) actúa como una barrera de protección. Situado delante de un recurso expuesto (un Application Load Balancer (ALB), un API Gateway o un CloudFront), inspecciona cada solicitud HTTP/HTTPS y aplica las reglas definidas por el administrador.
Estas reglas pueden ser:
-
gestionadas (proporcionadas por AWS o por socios, por ejemplo, para bloquear bots conocidos);
-
personalizadas, escritas en función de necesidades específicas.
Ejemplo concreto
Una empresa pone en marcha un sitio web de comercio electrónico a nivel mundial. Al cabo de unos días, sufre intentos de inyección SQL en sus formularios de búsqueda. Al activar el conjunto de reglas gestionadas "AWS Managed Rules - SQL Injection", todas estas solicitudes se bloquean de antemano. La aplicación sigue funcionando con normalidad, pero los ataques nunca llegan al backend.
Ejemplo de regla WAF en JSON
{
"Name": "BlockSQLi",
"Priority": 1,
"Statement": {
"SqliMatchStatement": {
"FieldToMatch": {
"QueryString": {}
}, ...Resumen del capítulo
En este capítulo se han presentado tres ejes principales de la seguridad de AWS:
-
IAM para controlar y auditar los accesos,
-
KMS y Secrets Manager para proteger los datos confidenciales,
-
WAF, Shield y GuardDuty para proteger los recursos expuestos a Internet y detectar amenazas.
La combinación de estos servicios, junto con una gestión clara, constituye la base de una postura de seguridad sólida en AWS.