Aplicación de tres capas: web, aplicación, base de datos. La base de datos debe ser inalcanzable desde internet bajo cualquier circunstancia.
→Subredes públicas para la capa web (ALB). Subredes privadas para las capas de aplicación y base de datos. El grupo de seguridad de la base de datos solo permite tráfico desde el grupo de seguridad de la capa de aplicación (no desde rangos CIDR).
Por qué: Las tablas de enrutamiento de subredes imponen la accesibilidad; las referencias de grupo de seguridad a grupo de seguridad codifican el principio de mínimo privilegio en la capa de SG y sobreviven a los cambios de IP.
Referencia↗
Una instancia EC2 necesita acceder a S3. Evitar credenciales incrustadas.
→Rol de IAM adjunto mediante perfil de instancia. El SDK recupera credenciales temporales de IMDSv2.
Por qué: Las claves de acceso de larga duración en las instancias son la causa principal de las filtraciones de credenciales. Los roles rotan automáticamente y nunca se persisten.
Referencia↗
Bloquear ataques SSRF que intentan leer metadatos de instancias EC2.
→Forzar IMDSv2 (`HttpTokens=required`) en el lanzamiento de la instancia. Rechazar solicitudes no autenticadas de IMDSv1.
Por qué: IMDSv2 requiere un token de sesión mediante PUT antes de que el endpoint de metadatos responda; los ataques SSRF que solo realizan GETs son bloqueados.
Referencia↗
El Servicio A en la Cuenta A invoca una función Lambda en la Cuenta B. Mínimo privilegio.
→Política basada en recursos en la función Lambda de destino que otorga `lambda:InvokeFunction` al principal de rol de la Cuenta A. El llamante asume su propio rol e invoca directamente, sin necesidad de encadenamiento de roles.
Por qué: Las políticas de recursos son el patrón entre cuentas más simple para recursos con interfaz de servicio (Lambda, S3, SNS, SQS, KMS).
Referencia↗
Otras cuentas de AWS necesitan cargar a un bucket S3 central.
→Política de bucket que otorga `s3:PutObject` a los principales de cuentas externas. Añadir el requisito de ACL `bucket-owner-full-control` para que el propietario del bucket conserve el control de los objetos.
Por qué: Sin `bucket-owner-full-control` (o `BucketOwnerEnforced` Object Ownership), los objetos cargados son propiedad de la cuenta del escritor.
Referencia↗
Evitar que cualquier bucket S3 de la organización se haga público.
→Habilitar el Bloqueo de Acceso Público de S3 a nivel de cuenta (y a nivel de Organizaciones mediante SCPs). Sobreescribe las ACLs y políticas a nivel de bucket.
Por qué: La configuración a nivel de cuenta prevalece sobre las configuraciones por bucket, una defensa contra la mala configuración accidental.
Referencia↗
Los desarrolladores deben autoaprovisionar roles de IAM pero no pueden otorgar permisos más allá de un conjunto de permisos máximo definido.
→Límites de permisos en el principal del desarrollador. Permisos efectivos = política de identidad ∩ límite.
Por qué: Los SCPs se aplican a nivel de cuenta/OU; los límites delimitan a los principales individuales. Usar límites para patrones de administración delegada.
Referencia↗
Restringir una OU a Regiones específicas para el cumplimiento de la residencia de datos.
→Política de Control de Servicios en Organizations que deniega cualquier acción donde `aws:RequestedRegion` no esté en la lista permitida.
Por qué: Los SCPs son el único mecanismo que puede denegar acciones que la propia cuenta permite. IAM no puede denegar lo que una raíz de cuenta podría conceder.
Referencia↗
Inicio de sesión único para la fuerza laboral en varias cuentas de AWS; integración con IdP corporativo.
→AWS IAM Identity Center (anteriormente AWS SSO) con federación SAML/OIDC al IdP corporativo. Los conjuntos de permisos se asignan a roles en las cuentas miembro.
Por qué: Identity Center es la identidad canónica de la fuerza laboral multi-cuenta. Cognito es para usuarios finales de aplicaciones, no para empleados.
Referencia↗
Elegir entre Cognito User Pool e Identity Pool.
→User Pool = registro / inicio de sesión / emisión de JWT para usuarios de aplicaciones. Identity Pool = intercambio de tokens por credenciales temporales de AWS. La mayoría de las aplicaciones usan ambos: User Pool autentica, Identity Pool autoriza el acceso a AWS.
Referencia↗
Añadir un paso de validación personalizado al inicio de sesión de Cognito (por ejemplo, lista de dominios de correo permitidos).
→Disparadores Lambda: Pre-registro, Pre-autenticación, Definir/Crear/Verificar Desafío de Autenticación. Validar o rechazar en la función Lambda.
Referencia↗
Necesidad de control total sobre la rotación, eliminación de claves y la pista de auditoría por clave.
→Clave KMS administrada por el cliente (CMK). Las claves administradas por AWS (`aws/<service>`) son más sencillas pero no ofrecen control de políticas de clave ni visibilidad sobre el uso individual de la clave.
Por qué: Las CMKs permiten delimitar el acceso por clave en CloudTrail, establecer políticas de clave para uso entre cuentas y deshabilitar/programar la eliminación.
Referencia↗
La Cuenta B necesita descifrar objetos S3 cifrados con la CMK de la Cuenta A.
→La política de clave en la CMK otorga `kms:Decrypt` a los principales de la Cuenta B. El IAM de la Cuenta B también necesita `kms:Decrypt` en el ARN de la clave. Ambas partes son necesarias.
Por qué: KMS entre cuentas requiere un permiso explícito tanto en la política de clave como en la identidad IAM del llamante (a diferencia de la mayoría de las políticas de recursos).
Referencia↗
Cifrar datos en `us-east-1`; descifrar en `us-west-2` después de la replicación, sin volver a cifrar.
→Clave KMS multirregional. Primaria en una Región, réplica en otra, ambas con el mismo material de clave e ID.
Por qué: Evita la repetición del cifrado para la conmutación por error o la DR entre Regiones.
Referencia↗
Cifrar objetos grandes sin que las llamadas a la API de KMS por objeto dominen el costo.
→Cifrado de sobre (Envelope encryption). KMS genera una clave de datos (una llamada a la API); usar la clave de datos para cifrar la carga útil localmente; almacenar la clave de datos cifrada junto con el texto cifrado.
Por qué: KMS está limitado por tasa y se cobra por solicitud. El patrón de sobre es la forma canónica de cifrar datos > unos pocos KB.
Referencia↗
Elegir entre Secrets Manager y SSM Parameter Store SecureString.
→Credenciales de base de datos con rotación automática, compartición entre cuentas, secretos grandes → Secrets Manager. Flags de configuración, ajustes de aplicación, secretos simples, costo más bajo → SSM Parameter Store.
Por qué: Secrets Manager tiene Lambdas de rotación incorporadas para RDS/Aurora/DocumentDB/Redshift; Parameter Store no tiene rotación nativa pero es gratuito para el nivel Estándar.
Referencia↗
Rotar la contraseña de RDS automáticamente cada 30 días.
→Secrets Manager con rotación administrada. La plantilla de Lambda incorporada maneja la rotación de un solo usuario contra el endpoint de RDS. Las aplicaciones obtienen el secreto en el momento de la conexión (cacheado) — no hay reimplementación de la aplicación.
Referencia↗
Mitigar inundaciones HTTP de Capa 7 sin bloquear picos legítimos.
→Regla basada en tasas de AWS WAF (por ejemplo, 2000 solicitudes / 5 minutos por IP) en el ALB o CloudFront. Combinar con grupos de reglas gestionados para IPs conocidas como maliciosas.
Por qué: Las reglas de tasa de WAF rastrean por IP de origen; bloquean automáticamente cuando se excede el umbral; liberan después de la ventana.
Referencia↗
Aplicación de misión crítica necesita protección de costos DDoS y soporte SRT 24×7.
→AWS Shield Advanced en CloudFront / ALB / NLB / Global Accelerator. Incluye protección de costos (reembolsos por el gasto de escalado durante un ataque) + acceso al Equipo de Respuesta de Shield.
Por qué: Shield Standard es automático y gratuito; Advanced añade protecciones y SLA. CloudFront siempre es la puerta principal recomendada.
Referencia↗
Elegir entre grupo de seguridad y NACL.
→Con estado, adjuntar a ENI, solo permitir → grupo de seguridad (predeterminado). Sin estado, a nivel de subred, permitir + denegar explícitamente → NACL. Usar NACLs para reglas de denegación general (bloquear rangos IP); SGs para todo lo demás.
Por qué: Las NACLs evalúan el tráfico entrante y saliente por separado. Los SGs permiten automáticamente el tráfico de retorno.
Referencia↗
Una instancia EC2 en una subred privada debe alcanzar S3/DynamoDB sin el costo de salida de NAT.
→Endpoint de puerta de enlace de VPC para S3 y DynamoDB. Gratuito, entrada en tabla de rutas, sin NAT.
Por qué: Los endpoints de puerta de enlace son solo para S3/DynamoDB. Ahorra cargos de procesamiento de datos de NAT y mantiene el tráfico en la red troncal de AWS.
Referencia↗
Una subred privada debe alcanzar las APIs de servicios de AWS (KMS, Secrets Manager, ECR, etc.) de forma privada.
→Endpoint de interfaz de VPC (PrivateLink) por servicio. ENI en su VPC, con cargo por hora + por GB.
Por qué: Los endpoints de interfaz funcionan para casi todos los servicios de AWS. Úselos para eliminar la salida de NAT para las llamadas a servicios.
Referencia↗
Un proveedor SaaS expone su servicio en-VPC a cuentas de clientes de forma privada, sin emparejamiento de VPC ni mantenimiento de enrutamiento del cliente.
→Servicio de endpoint de AWS PrivateLink respaldado por un NLB. Los clientes crean endpoints de interfaz para consumir.
Por qué: Sin preocupaciones de superposición de CIDR, sin mallado de peering, exposición unidireccional (el proveedor no ve el tráfico del cliente).
Referencia↗
Conectar más de 30 VPCs entre cuentas y on-premises en una topología de hub-and-spoke.
→AWS Transit Gateway. Un solo adjunto por VPC; las tablas de enrutamiento segmentan el tráfico.
Por qué: El emparejamiento de malla completa requiere N×(N-1)/2 conexiones. TGW escala linealmente y soporta el acceso entre cuentas a través de RAM.
Referencia↗
Conectividad híbrida que necesita ancho de banda predecible, baja latencia y cifrado.
→Direct Connect con una VPN Site-to-Site sobre el DX (MACsec o IPsec). DX por sí solo no está cifrado; VPN sobre DX es privado + cifrado + baja fluctuación.
Por qué: Una VPN simple sobre internet es barata pero tiene latencia variable. DX por sí solo es rápido pero en texto claro a nivel de capa de enlace.
Referencia↗
Detección continua de amenazas en VPC Flow Logs, DNS, CloudTrail, auditoría de EKS, eventos de datos de S3.
→Amazon GuardDuty. A nivel de organización a través de la administración delegada de Organizations.
Por qué: Detección de amenazas gestionada. Hallazgos en Security Hub o EventBridge para automatización de respuestas.
Referencia↗
Descubrir y clasificar PII / PHI en buckets S3.
→Amazon Macie. Descubrimiento de datos sensibles basado en ML, con ámbito en S3, se integra con Security Hub.
Referencia↗
Escaneo continuo de CVE para instancias EC2, imágenes ECR, funciones Lambda.
→Amazon Inspector v2. Descubre recursos automáticamente mediante Systems Manager Agent, escanea contra CVEs publicados.
Referencia↗
Agregar hallazgos de GuardDuty, Inspector, Macie, IAM Access Analyzer en un único panel.
→AWS Security Hub. CSPM con las mejores prácticas de seguridad fundamentales de AWS y estándares CIS.
Referencia↗
Asegurar que todos los volúmenes EBS estén cifrados; remediar automáticamente los recursos no conformes.
→Reglas de AWS Config (administradas `encrypted-volumes`) + runbook de automatización de Systems Manager para remediación, activado a través de la acción de remediación de Config.
Referencia↗
Registro de auditoría único e inalterable en todas las cuentas de la organización.
→Trail de organización con validación de archivos de registro habilitada, escrito en un bucket S3 central con política de bucket que deniega la eliminación.
Por qué: Los trails de organización se habilitan automáticamente en todas las cuentas miembro (actuales y futuras). Los hashes de validación demuestran que los registros no fueron modificados.
Referencia↗
Varios departamentos necesitan acceso delimitado a diferentes prefijos en un bucket S3 compartido.
→Puntos de acceso de S3 — uno por departamento, cada uno con su propia política de acceso y (opcionalmente) restricción de VPC.
Por qué: Más limpio que una política de bucket extensa; los puntos de acceso tienen sus propios ARNs y nombres DNS.
Referencia↗
Carga de trabajo PCI DSS — aislamiento estricto de cuentas no PCI.
→Cuenta de AWS dedicada dentro de una OU de Organizations con SCPs que restringen el acceso a servicios/regiones. VPC, claves KMS, roles IAM separados. Network Firewall o GWLB para inspección de salida.
Por qué: El límite de cuenta es el aislamiento de radio de explosión más fuerte en AWS de AWS.
Referencia↗
Certificado TLS público para `*.example.com` en ALB y CloudFront. Renovar automáticamente.
→Certificado público de AWS Certificate Manager (ACM) con validación DNS en Route 53. Se renueva automáticamente 60 días antes de la caducidad.
Por qué: Gratuito para usar con servicios integrados de AWS. La validación por correo electrónico funciona, pero la validación DNS se prefiere para la automatización.
Referencia↗