Parte: 10 — Seguridad en la nube y contenedores · Fuente: AWS Well-Architected Framework: Security Pillar y CIS Amazon Web Services Foundations Benchmark ⏱️ Duración estimada: 130 min · Nivel: Intermedio
Endurecer una cuenta de AWS aplicando los controles nativos clave: segmentación de red con VPC y security groups, protección de datos con cifrado y KMS, aislamiento de almacenamiento S3, y los servicios de seguridad gestionados (GuardDuty, Security Hub, Config). Al terminar, el alumno podrá llevar una cuenta desde su estado por defecto hasta una postura alineada con el CIS Benchmark.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | VPC, subredes y security groups | Segmentación de red y control de tráfico |
| 2 | S3: block public access y políticas | Evaluar acceso público, compartido y excepciones legítimas |
| 3 | Cifrado en reposo y KMS | Protege datos y controla claves |
| 4 | GuardDuty | Detección de amenazas basada en logs |
| 5 | Security Hub | Consolidación de hallazgos y benchmarks |
| 6 | AWS Config | Inventario y evaluación de cumplimiento continuo |
| 7 | CloudTrail y Flow Logs | Auditoría de API y tráfico de red |
AWS organiza seguridad a través de cuentas, regiones y servicios. Una arquitectura defendible separa cargas y entornos en cuentas, aplica guardrails organizacionales y luego configura controles de identidad, red, datos y detección. La clase no busca memorizar productos, sino entender qué pregunta responde cada uno y qué deja fuera.
La lectura es descendente: organización limita el espacio de decisión; IAM autoriza API; VPC define conectividad; KMS añade control criptográfico; logs observan; GuardDuty y Security Hub interpretan fuentes distintas. Security Hub agrega hallazgos y estándares, mientras Config registra configuración y evalúa reglas. Ninguno corrige automáticamente todas las causas salvo una automatización explícita y autorizada.
Una subred no es «pública» por su nombre, sino por rutas, gateway y posibilidad de asignar dirección accesible. Security Groups son stateful y expresan permisos sobre interfaces; NACL operan stateless por subred y requieren reglas de ida y retorno. Network Firewall, WAF y controles de aplicación responden a otras capas. Abrir 0.0.0.0/0 en un SG solo produce exposición si existe una ruta y un servicio escuchando, pero sigue siendo un estado que debe justificarse.
S3 Block Public Access combina controles en organización, cuenta, bucket y access point; AWS aplica la combinación más restrictiva relevante. Esto ayuda a impedir políticas o ACL públicas, pero no evita accesos excesivos de principals autenticados ni compartición no pública. Se revisan bucket policy, IAM, access points, propiedad de objetos y Access Analyzer.
KMS protege claves y registra uso, pero cifrado en reposo no limita a un principal que tiene simultáneamente permiso al dato y a Decrypt. La separación de administración y uso, condiciones y política de clave importan tanto como activar cifrado.
CloudTrail registra actividades cubiertas; management events y data events tienen cobertura y costo distintos. VPC Flow Logs son metadatos, no contenido. GuardDuty procesa fuentes administradas según plan y región; Security Hub consolida hallazgos si está habilitado y configurado. El diseño enumera regiones, cuentas, delegación administrativa, retención y destino separado antes del incidente.
Un bucket tiene BPA activo y cifrado KMS, pero una bucket policy permite lectura a una cuenta asociada completa. No es «público» en el sentido de acceso anónimo y BPA puede no bloquear el patrón, aunque el alcance sea excesivo. Access Analyzer identifica acceso externo; el equipo determina qué rol concreto lo necesita y reduce principal, prefijo y condiciones.
Después verifica que la cuenta externa también posee permiso KMS, revisa CloudTrail data events disponibles y prueba acceso permitido y denegado. El caso demuestra que cifrado, BPA y policy resuelven preguntas distintas y que un check verde aislado no equivale a confidencialidad efectiva.
Dominas la clase cuando puedes seguir una solicitud desde cuenta y principal hasta ruta, SG, política de recurso y KMS; distinguir prevención, registro y detección; y documentar cobertura regional y una excepción de acceso con pruebas positivas y negativas.
aws configurada con un perfil de laboratorio y MFA.pip install prowler.# Comprobar que S3 no permite acceso público a nivel de cuenta
aws s3control get-public-access-block --account-id 123456789012
# Habilitar GuardDuty en la región actual
aws guardduty create-detector --enable
prowler aws --compliance cis_2.0_aws y compara los hallazgos con lo que muestra Security Hub. Corrige al menos tres hallazgos de severidad alta y vuelve a ejecutar.PutObject.UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.Toma una cuenta de laboratorio "recién creada" y llévala a una postura base: sin buckets públicos, CloudTrail multi-región activo, GuardDuty y Security Hub habilitados, y cifrado por defecto en S3 y EBS.
Criterio de aceptación: una ejecución de prowler aws --compliance cis_2.0_aws muestra 0
hallazgos críticos/altos en las secciones de S3, logging y cifrado, y Security Hub reporta esos
controles como PASSED.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
| Bucket "public" pese a política privada | ACL heredada o BPA desactivado; activa Block Public Access a nivel de cuenta. |
| SG "no funciona" al denegar un puerto | Los SG solo permiten; para deny explícito usa NACL a nivel de subred. |
| GuardDuty sin hallazgos aunque hay actividad | Un hallazgo depende de región, plan, fuente y lógica de detección. Verifica cobertura sin asumir que toda actividad genera alerta. |
| El trail no contiene el evento esperado | Revisa región, categoría, selector y fecha. Event history aporta ciertos management events recientes, pero no reemplaza un trail organizacional y su retención. |
AccessDenied al usar una clave KMS |
Falta permiso en la política de la clave; añade el principal a kms:Decrypt. |
❓ ¿Security Group o NACL? Usa ambos. El SG es stateful y va en la instancia (control fino); el NACL es stateless, va en la subred y sirve para bloqueos amplios (deny) que el SG no puede expresar.
❓ ¿GuardDuty reemplaza a un SIEM? No. GuardDuty detecta amenazas conocidas a partir de los logs de AWS; un SIEM correlaciona múltiples fuentes. Lo habitual es enviar los hallazgos de GuardDuty al SIEM.
❓ ¿Debo usar claves gestionadas por AWS o por el cliente (CMK)? Para control de auditoría, rotación y separación de deberes, usa claves gestionadas por el cliente (CMK). Las gestionadas por AWS son cómodas pero dan menos control sobre la política.
Clase 222 — IAM en la nube: identidades, roles y permisos