Escenarios de arquitectura segura
Resuelva preguntas basadas en escenarios sobre mínimo privilegio de IAM, cifrado, aislamiento de VPC y WAF/Shield para consolidar sus conocimientos del dominio de seguridad
Escenarios de arquitectura segura es una lección gratuita de Cloud & IT Cert Prep en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cloud & IT Cert Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.
Escenario 1: acceso de EC2 a S3 con privilegios mínimos
Escenario: Una instancia de EC2 ejecuta una aplicación web que necesita leer objetos de un bucket de S3 específico. El equipo de seguridad exige que no se almacenen credenciales de larga duración en la instancia y que el acceso siga el principio de mínimo privilegio. Solución: Cree un IAM role con una política que permita únicamente s3:GetObject sobre el ARN del bucket específico. Asocie el rol a la instancia de EC2 mediante un instance profile. La aplicación utiliza el servicio de metadatos de instancia (IMDS) para obtener automáticamente credenciales temporales; no es necesario almacenar claves.
# IAM policy for least-privilege EC2 -> S3 read
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Action': ['s3:GetObject'],
'Resource': 'arn:aws:s3:::my-app-bucket/*'
}]
}
# Attach role to EC2 instance
aws ec2 associate-iam-instance-profile \
--instance-id i-1234567890abcdef0 \
--iam-instance-profile Name=EC2S3ReadRoleEscenario 2: cifrado de datos en una base de datos de RDS
Escenario: Una empresa almacena información personal identificable (PII) de sus clientes en una base de datos PostgreSQL de RDS. El equipo de cumplimiento exige cifrado en reposo y la posibilidad de auditar el uso de las claves. Solución: Habilite el cifrado de RDS mediante AWS KMS con una Customer Managed Key (CMK). La CMK permite al equipo de seguridad controlar la rotación de claves, consultar su uso en CloudTrail y revocar el acceso si es necesario. Nota: el cifrado debe habilitarse al crear la instancia de RDS; no puede cifrar una instancia de RDS existente y sin cifrar directamente. Para cifrar una base de datos existente, cree una snapshot, cópiela con el cifrado habilitado y restáurela a partir de la snapshot cifrada.
# Create an encrypted RDS instance
aws rds create-db-instance \
--db-instance-identifier prod-postgres \
--db-instance-class db.t3.medium \
--engine postgres \
--master-username admin \
--master-user-password SecurePass123! \
--storage-encrypted \
--kms-key-id arn:aws:kms:us-east-1:123456789012:key/mrk-abc123 \
--allocated-storage 100Escenario 3: bucket de S3: bloqueo del acceso público
Escenario: Un desarrollador hizo público accidentalmente un bucket de S3, exponiendo datos de clientes. El equipo de seguridad quiere garantizar que ningún bucket de S3 de la cuenta pueda hacerse público, aunque un desarrollador lo intente. Solución: Habilite S3 Block Public Access a nivel de cuenta. Esta configuración prevalece sobre cualquier política de bucket o ACL que conceda acceso público, independientemente de lo que configuren los distintos equipos. Combínela con una regla de AWS Config (s3-bucket-public-read-prohibited) para detectar continuamente los buckets que no cumplen las normas y generar alertas.
# Block all public access at account level
aws s3control put-public-access-block \
--account-id 123456789012 \
--public-access-block-configuration \
'BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true'
# Deploy Config rule to detect violations
aws configservice put-config-rule \
--config-rule '{"ConfigRuleName": "s3-bucket-public-read-prohibited", "Source": {"Owner": "AWS", "SourceIdentifier": "S3_BUCKET_PUBLIC_READ_PROHIBITED"}}'Escenario 4: aislamiento de VPC para la capa de base de datos
Escenario: Una empresa quiere garantizar que su base de datos de RDS solo sea accesible desde sus servidores de aplicaciones y no desde Internet. Solución: Coloque RDS en una subred privada sin ninguna ruta a un gateway de Internet. Cree un grupo de seguridad para RDS que solo permita tráfico entrante en el puerto 5432 (PostgreSQL) desde el grupo de seguridad de los servidores de aplicaciones, no desde ningún rango de direcciones IP. Así, aunque un servidor de aplicaciones se vea comprometido, el atacante no podrá acceder a la base de datos desde fuera de la VPC, y el movimiento lateral quedará limitado por las reglas de los grupos de seguridad.
# Create RDS security group allowing only the app tier SG as source
aws ec2 create-security-group \
--group-name rds-sg \
--description 'RDS security group' \
--vpc-id vpc-abc123
aws ec2 authorize-security-group-ingress \
--group-id sg-rds \
--protocol tcp \
--port 5432 \
--source-group sg-app # app tier security group ID onlyEscenario 5: rotación de credenciales de base de datos
Escenario: Actualmente, el código de la aplicación contiene las credenciales de la base de datos codificadas directamente en los archivos de configuración. La auditoría de seguridad lo considera un riesgo crítico. Solución: Almacene las credenciales en AWS Secrets Manager y configure la rotación automática (Secrets Manager cuenta con funciones de rotación integradas de Lambda para RDS). Actualice la aplicación para que obtenga las credenciales de Secrets Manager durante la ejecución mediante el SDK. La aplicación obtiene automáticamente credenciales nuevas sin necesidad de realizar un despliegue en cada rotación. Habilite la plantilla de rotación de secretos de RDS para realizar una rotación de credenciales totalmente gestionada y sin tiempo de inactividad.
# Store RDS credentials in Secrets Manager
aws secretsmanager create-secret \
--name prod/myapp/rds \
--secret-string '{"username":"admin","password":"OldPass123!","host":"rds-endpoint.amazonaws.com","port":5432}'
# Enable automatic rotation every 30 days
aws secretsmanager rotate-secret \
--secret-id prod/myapp/rds \
--rotation-lambda-arn arn:aws:lambda:us-east-1:123:function:SecretsManagerRDSPostgreSQLRotationSingleUser \
--rotation-rules AutomaticallyAfterDays=30Escenario 6: detección de actividad inusual en la API
Escenario: Una empresa quiere detectar si las credenciales de una cuenta de AWS se han visto comprometidas y se están utilizando desde ubicaciones inesperadas. Solución: Habilite Amazon GuardDuty en todas las regiones. GuardDuty analiza eventos de CloudTrail, registros de flujo de VPC y registros de DNS mediante aprendizaje automático para detectar anomalías: llamadas a la API desde ubicaciones geográficas inusuales, patrones de minería de Bitcoin en EC2, comunicación con nodos de salida de Tor o patrones de exfiltración de credenciales. GuardDuty genera hallazgos que pueden activar reglas de EventBridge para notificar automáticamente al equipo de seguridad mediante SNS o crear un ticket de soporte.
# Enable GuardDuty in a Region
aws guardduty create-detector \
--enable \
--finding-publishing-frequency FIFTEEN_MINUTES
# EventBridge rule to react to GuardDuty HIGH severity findings
aws events put-rule \
--name guardduty-high-severity \
--event-pattern '{
"source": ["aws.guardduty"],
"detail-type": ["GuardDuty Finding"],
"detail": {"severity": [{"numeric": [">=", 7]}]}
}'Escenario 7: WAF para bloquear solicitudes maliciosas
Escenario: Una aplicación web que se ejecuta detrás de un ALB está recibiendo ataques de inyección SQL. La aplicación no se puede modificar de inmediato. Solución: Asocie AWS WAF al ALB. Implemente el grupo de reglas AWS Managed Rules for Common Threats (Core Rule Set y el grupo de reglas de SQL Database), que incluye detección preconfigurada de inyección SQL. WAF inspecciona las solicitudes HTTP antes de que lleguen al ALB y bloquea las solicitudes que coincidan con patrones de ataque; no se requiere modificar el código de la aplicación. Habilite también el registro de WAF en Kinesis Firehose para realizar análisis de seguridad.
# Create WAF Web ACL with SQL injection protection
aws wafv2 create-web-acl \
--name AppProtection \
--scope REGIONAL \
--default-action Allow={} \
--rules '[{
"Name": "AWSManagedRulesSQLiRuleSet",
"Priority": 1,
"Statement": {
"ManagedRuleGroupStatement": {
"VendorName": "AWS",
"Name": "AWSManagedRulesSQLiRuleSet"
}
},
"OverrideAction": {"None": {}},
"VisibilityConfig": {"SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "SQLi"}
}]' \
--region us-east-1Escenario 8: asumir un rol entre cuentas
Escenario: Una cuenta central de seguridad necesita acceso de solo lectura a todas las cuentas de cargas de trabajo de una AWS Organisation para realizar auditorías de seguridad. Solución: En cada cuenta de carga de trabajo, cree un IAM role con una política de confianza que permita a la cuenta de seguridad (mediante su ID de cuenta) asumirlo. Asocie una política de solo lectura (por ejemplo, la política gestionada por AWS SecurityAudit). El equipo de seguridad de la cuenta central utiliza STS AssumeRole para asumir temporalmente el rol en cada cuenta de carga de trabajo. Esto sigue el principio de mínimo privilegio: no se crean usuarios de IAM permanentes en las cuentas de carga de trabajo.
# Trust policy in workload account (allows security account to assume role)
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': {
'AWS': 'arn:aws:iam::SECURITY_ACCOUNT_ID:root'
},
'Action': 'sts:AssumeRole'
}]
}
# From security account: assume role in workload account
aws sts assume-role \
--role-arn arn:aws:iam::WORKLOAD_ACCOUNT_ID:role/SecurityAuditRole \
--role-session-name audit-2024-01Escenario 9: restricción de acciones con SCP
Escenario: Una empresa utiliza AWS Organizations y quiere impedir que cualquier cuenta de una OU que no sea de producción lance instancias GPU costosas. Solución: Cree una Service Control Policy (SCP) que deniegue ec2:RunInstances para las familias de instancias GPU (p3, p4, g4 y g5) y asóciela a la OU que no sea de producción. Las SCP se aplican incluso a los usuarios root y a los usuarios de IAM con nivel de administrador de las cuentas miembro; actúan como barreras de protección que ninguna identidad de la cuenta puede anular. Esto evita gastos elevados accidentales o maliciosos en las cuentas de desarrollo y pruebas.
# SCP to deny GPU instance types in non-prod OU
{
'Version': '2012-10-17',
'Statement': [{
'Sid': 'DenyGPUInstances',
'Effect': 'Deny',
'Action': 'ec2:RunInstances',
'Resource': 'arn:aws:ec2:*:*:instance/*',
'Condition': {
'StringLike': {
'ec2:InstanceType': ['p3.*', 'p4d.*', 'g4.*', 'g5.*']
}
}
}]
}Escenario 10: registro de auditoría para cumplimiento
Escenario: Una empresa de servicios financieros debe demostrar a los auditores que todas las llamadas a las API de AWS se registran, no pueden manipularse y se conservan durante 7 años. Solución: Cree un trail de AWS CloudTrail multirregional que entregue los registros a un bucket de S3 dedicado en una cuenta de registro. Habilite Log File Integrity Validation (archivos de resumen criptográficos que detectan la manipulación de registros). Establezca una política de Object Lock de S3 en modo Compliance, con un periodo de retención de 7 años, en el bucket de registro. Así se garantiza que los registros no puedan eliminarse ni modificarse, ni siquiera por el usuario root, durante el periodo de retención requerido.
# Create multi-region trail with integrity validation
aws cloudtrail create-trail \
--name compliance-trail \
--s3-bucket-name central-audit-logs-123 \
--is-multi-region-trail \
--enable-log-file-validation \
--include-global-service-events
aws cloudtrail start-logging --name compliance-trailEscenario 11: VPC Endpoint para acceso privado a S3
Escenario: Las instancias de EC2 de una VPC privada necesitan acceder a S3 sin que el tráfico atraviese la Internet pública. Actualmente se utiliza un NAT Gateway y los costes son elevados debido a las tarifas de procesamiento de datos del NAT Gateway. Solución: Cree un S3 Gateway VPC Endpoint. Añada una entrada de ruta a la tabla de rutas de la subred privada que dirija la lista de prefijos de S3 al endpoint. El tráfico hacia S3 permanecerá completamente dentro de la red troncal de AWS; no se necesitará un NAT Gateway ni un gateway de Internet. Los S3 Gateway Endpoints son gratuitos (a diferencia de los Interface Endpoints, que tienen un coste por hora y por AZ). Esto también mejora la seguridad al eliminar el acceso a S3 de la ruta a través de Internet pública.
# Create S3 Gateway VPC Endpoint
aws ec2 create-vpc-endpoint \
--vpc-id vpc-abc123 \
--service-name com.amazonaws.us-east-1.s3 \
--route-table-ids rtb-private-1a rtb-private-1b
# Result: route table automatically gets a route:
# Destination: pl-63a5400a (S3 prefix list)
# Target: vpce-xyz456 (the Gateway Endpoint)
# EC2 instances now reach S3 privately at no endpoint costComprobación rápida
Compruebe su comprensión de los conceptos de AWS Solutions Architect (SAA-C03) de esta lección.
Resumen de la lección
En esta lección ha trabajado con escenarios que abarcan: roles de IAM y perfiles de instancia para acceder a EC2 sin credenciales, Secrets Manager para la rotación automática de credenciales de bases de datos, AWS WAF para bloquear ataques de inyección sin cambios en el código y CloudTrail con S3 Object Lock para registros de cumplimiento a prueba de manipulaciones. A continuación, abordaremos escenarios de arquitecturas resilientes y de alta disponibilidad.
Preguntas frecuentes
¿La lección «Escenarios de arquitectura segura» es gratis?
Sí — el texto completo de «Escenarios de arquitectura segura» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cloud & IT Cert Prep, actualiza a CoddyKit PRO. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.
¿Qué aprenderé en «Escenarios de arquitectura segura»?
Resuelva preguntas basadas en escenarios sobre mínimo privilegio de IAM, cifrado, aislamiento de VPC y WAF/Shield para consolidar sus conocimientos del dominio de seguridad Practicas Cloud & IT Cert Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Cloud & IT Cert Prep?
No se requiere experiencia previa. Cloud & IT Cert Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Escenarios de arquitectura segura»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Cloud & IT Cert Prep?
Sí. Cada lección de Cloud & IT Cert Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Escenarios de arquitectura segura
- Escenarios de arquitecturas resilientes y de alta disponibilidad
- Escenarios de alto rendimiento y optimización de costes
- Mini examen completo de dominios combinados