Semana 1 · Módulo 1 de 11
Fundamentos de AWS e IAM a fondo
Infraestructura global, cuenta y herramientas de acceso, modelo de responsabilidad compartida, IAM de principio a fin (con su lógica de evaluación de políticas), federación, multicuenta con Organizations y Control Tower, y la introducción al Well-Architected Framework. Es la base del dominio 1 (30 % del examen).
- Explicar regiones, AZ, Local Zones, Wavelength Zones, Outposts y edge locations, y elegir dónde desplegar según requisitos
- Crear y proteger una cuenta de AWS sin usar el usuario root en el día a día
- Diseñar un modelo de autorización con usuarios, grupos, roles y políticas siguiendo el mínimo privilegio
- Predecir el resultado de una petición aplicando la lógica de evaluación de políticas (deny explícito, SCP, RCP, boundaries, políticas de sesión y de recurso)
- Elegir entre IAM, IAM Identity Center, federación SAML/OIDC, Cognito y Directory Service
- Diseñar una estrategia multicuenta con AWS Organizations, SCP, AWS Control Tower y AWS RAM
- Situar cada responsabilidad de seguridad en el lado de AWS o en el del cliente
Índice del módulo
Reparto de la semana
| Día | Qué hacer | Tiempo |
|---|---|---|
| Lunes | Infraestructura global, cuenta, planes y herramientas (secciones 1-3). Empieza el lab 01 hasta el paso de MFA | 2 h |
| Martes | Termina el lab 01 (presupuestos, alertas, IAM Identity Center, CloudShell) | 2 h |
| Miércoles | IAM: identidades, políticas y estructura JSON (secciones 4.1-4.4) | 2 h |
| Jueves | Lógica de evaluación de políticas y STS (4.5-4.6). Haz los ejemplos a mano | 2 h |
| Viernes | Federación, Identity Center, Directory Service, Access Analyzer (4.7-4.9) | 2 h |
| Sábado | Multicuenta (sección 5) + lab 02 completo | 4 h |
| Domingo | Well-Architected, trampas, test del módulo y tarjetas; repasa los fallos | 2 h |
Por qué importa
El dominio 1 (Design Secure Architectures) pesa un 30 % del examen y la tarea 1.1 (Design secure access to AWS resources) es la puerta de entrada: casi cualquier pregunta de seguridad acaba en «¿quién puede hacer qué, desde dónde y con qué credenciales?». Además, la infraestructura global (regiones y zonas de disponibilidad) aparece en los dominios 2, 3 y 4: es imposible diseñar alta disponibilidad o reducir costes de red sin entenderla.
Cómo lo pregunta el examen:
- Un escenario con varias cuentas y un requisito de gobierno («impedir que nadie desactive CloudTrail en ninguna cuenta») → SCP en AWS Organizations.
- Una aplicación en EC2 que necesita leer de S3 → rol de IAM con perfil de instancia, nunca claves de acceso en el código.
- Empleados que ya tienen usuario en Active Directory y tienen que entrar en la consola → federación (IAM Identity Center o SAML), no crear usuarios IAM.
- «Un auditor externo necesita acceso de solo lectura a nuestra cuenta» → rol entre cuentas con external ID.
- «Aplicar el principle of least privilege» → políticas acotadas por acción, recurso y condición, y herramientas como IAM Access Analyzer.
1. La infraestructura global de AWS
1.1 Regiones y zonas de disponibilidad
- AWS Region (región): ubicación geográfica con varias zonas de disponibilidad, aislada física e independientemente de las demás. Cada región tiene un código (
eu-south-2= Europa (España),eu-west-1= Irlanda,us-east-1= Norte de Virginia). - Availability Zone (AZ, zona de disponibilidad): uno o varios centros de datos con energía, red y conectividad redundantes, en instalaciones separadas del resto de AZ de la región pero unidas con enlaces de baja latencia. Se nombran con el código de región más una letra (
eu-south-2a). El nombre es un alias por cuenta; el identificador estable entre cuentas es el AZ ID (por ejemploeuw1-az1), útil cuando dos cuentas quieren coordinar recursos en la misma AZ física.
A 30/09/2026 la página oficial de infraestructura global indica 39 regiones y 124 AZ lanzadas (la cifra cambia a menudo: consúltala en la página de infraestructura global). En el examen no te preguntarán cifras, sino qué diseño sobrevive a qué fallo:
| Fallo que quieres tolerar | Diseño mínimo |
|---|---|
| Fallo de un servidor o de un disco | Varias instancias, o un servicio gestionado con redundancia interna |
| Fallo de un centro de datos o de una AZ entera | Multi-AZ: recursos repartidos en al menos 2 AZ de la misma región (alta disponibilidad) |
| Desastre regional, requisitos de residencia en otro país o latencia global | Multirregión (recuperación ante desastres, DR, o activo-activo) |
flowchart TB
subgraph R["Región eu-south-2 (España)"]
subgraph A["AZ eu-south-2a"]
A1["Centro de datos"]
end
subgraph B["AZ eu-south-2b"]
B1["Centro de datos"]
end
subgraph C["AZ eu-south-2c"]
C1["Centro de datos"]
end
A1 <-->|"red privada de baja latencia"| B1
B1 <--> C1
A1 <--> C1
end
R <-->|"red troncal global de AWS"| R2["Otra región (p. ej. eu-west-1)"]
E["Edge locations / PoP de CloudFront"] --- R
Cómo elegir región (los cuatro criterios clásicos):
- Cumplimiento y residencia de datos: si la ley o el contrato exigen que los datos no salgan de la UE o de España, eso manda sobre todo lo demás. Los datos no salen de una región salvo que tú los copies o configures replicación.
- Latencia: cerca de tus usuarios.
- Disponibilidad de servicios y funciones: no todas las regiones tienen todos los servicios ni todos los tipos de instancia el mismo día. Compruébalo en la lista de servicios por región.
- Precio: varía entre regiones.
Regiones opt-in (de activación voluntaria). Las regiones lanzadas después del 20/03/2019 vienen desactivadas en las cuentas nuevas y hay que activarlas (sin coste) antes de usarlas. Europa (España) eu-south-2 es opt-in, igual que Milán o Zúrich; Irlanda, Fráncfort, Londres, París y Estocolmo están activadas por defecto. Al activar una región, AWS propaga allí tus datos de IAM; el proceso tarda de minutos a horas. Lo harás en el lab 01.
aws account enable-region --region-name eu-south-2
aws account get-region-opt-status --region-name eu-south-2
1.2 Servicios globales, regionales y zonales
Saber el «alcance» de cada recurso evita muchos errores de diseño:
| Alcance | Ejemplos | Consecuencia |
|---|---|---|
| Global | IAM, AWS Organizations, Route 53, CloudFront, las políticas de WAF para CloudFront | Se configuran una vez para toda la cuenta |
| Regional | VPC, buckets de S3 (el nombre es global, los datos viven en una región), Lambda, DynamoDB, AMI, snapshots de EBS | Para usarlos en otra región hay que copiarlos o replicarlos |
| Zonal (una AZ) | Instancias EC2, volúmenes EBS, subredes, NAT Gateway zonal | Si la AZ cae, el recurso cae: para alta disponibilidad, repártelos |
1.3 Más cerca del usuario: edge, Local Zones, Wavelength y Outposts
| Opción | Qué es | Cuándo elegirla | Palabras clave del enunciado |
|---|---|---|---|
| Edge locations / puntos de presencia (PoP) | Cientos de ubicaciones de la red de AWS (la página oficial habla de más de 750 PoP de CloudFront) donde se ejecutan CloudFront, Route 53, AWS Global Accelerator y AWS Shield | Cachear contenido y acelerar el acceso de usuarios de todo el mundo | global users, cache, static content, reduce latency worldwide (módulo 06) |
| AWS Local Zones | Extensión de una región (región «padre») en una gran ciudad o polo industrial, con cómputo, almacenamiento, bases de datos y otros servicios seleccionados. Se activa por opt-in y extiende tu VPC con subredes en la Local Zone | Latencia de milisegundos de un dígito para usuarios de esa ciudad, migraciones híbridas cercanas, residencia de datos local | single-digit millisecond latency to end users in a metro area, real-time gaming, live streaming |
| AWS Wavelength | Wavelength Zones: infraestructura de AWS dentro de la red 5G de un operador de telecomunicaciones. Se accede a través de un carrier gateway | Latencia ultrabaja para dispositivos móviles y usuarios de una red 5G concreta | 5G, mobile devices, telecommunications carrier, ultra-low latency |
| AWS Outposts | Hardware de AWS (racks de 42U o servidores de 1U/2U) instalado en tu centro de datos, gestionado por AWS y conectado a una región mediante un service link. Ofrece EC2, EBS, S3 on Outposts, ECS, EKS, RDS, etc. (según formato) con las mismas API | Datos que deben quedarse en tus instalaciones, latencia mínima con sistemas locales, procesamiento local | on premises, data must remain in the company’s data center, same APIs and tools as AWS, hybrid |
2. Tu cuenta y cómo accedes a AWS
2.1 La cuenta, el usuario root y los planes de la capa gratuita
Una cuenta de AWS es a la vez un contenedor de recursos, un límite de seguridad (por defecto, nadie de otra cuenta puede tocar tus recursos) y una unidad de facturación. Al darla de alta se crea el usuario root (AWS account root user): la identidad del correo con el que te registras, con acceso total e ilimitado, incluida la facturación. No se le pueden quitar permisos con políticas de IAM (solo las SCP limitan al root de una cuenta miembro).
Desde el 15/07/2025, al crear una cuenta eliges entre dos planes (documentación oficial):
| Plan gratuito (Free account plan) | Plan de pago (Paid account plan) | |
|---|---|---|
| Crédito | 100 USD al registrarte + hasta 100 USD más por actividades | Igual |
| Cobros | Nunca cobra | Pagas por uso cuando se agota el crédito o en servicios a los que no se aplica |
| Duración | 6 meses o hasta agotar el crédito (lo primero). Después la cuenta se cierra; AWS conserva el contenido 90 días y puedes pasar a plan de pago en ese plazo | La cuenta no se cierra |
| Servicios | Solo una selección; sin Savings Plans, Reserved Instances ni ciertas ofertas de Marketplace | Todos |
| Conversión automática a plan de pago | Si te unes a AWS Organizations, creas una landing zone de AWS Control Tower y otros casos (APN, contrato de Enterprise, cuentas HIPAA…) | — |
Las cinco actividades que dan 20 USD cada una son: lanzar (y terminar) una instancia EC2, crear una base de datos RDS, crear una aplicación web con Lambda, usar un modelo en el playground de Amazon Bedrock y crear un presupuesto en AWS Budgets. En el lab 01 verás cómo afecta esto a tu estrategia de cuenta.
2.2 AWS Management Console, AWS CLI y AWS CloudShell
Todo en AWS es una llamada a una API firmada. Hay tres formas de hacerla:
- AWS Management Console: interfaz web. Cómoda para explorar; mala para repetir cosas. Cada consola de servicio es regional salvo los servicios globales.
- AWS CLI (versión 2): línea de comandos. Se configura con perfiles en
~/.aws/config. La forma recomendada de autenticarse es IAM Identity Center (aws configure ssoyaws sso login), que da credenciales temporales renovables; las claves de acceso de larga duración (aws configurecon access key) son el último recurso. - AWS CloudShell: un terminal en el navegador, ya autenticado con tu sesión de consola, con la CLI v2 preinstalada. Sin coste adicional, 1 GB de almacenamiento persistente por región en
$HOME(se borra tras 120 días sin usar la región), hasta 10 shells simultáneos por región, la sesión termina tras 20-30 minutos de inactividad o unas 12 horas seguidas, y no admite conexiones entrantes. Es lo que usarás en todos los labs.
# Configurar un perfil con IAM Identity Center (en tu ordenador; en CloudShell no hace falta)
aws configure sso
aws sso login --profile admin-lab
aws sts get-caller-identity --profile admin-lab
aws sts get-caller-identity es el comando más útil de la semana: te dice quién eres para AWS (cuenta, ARN del usuario o del rol asumido).
3. El modelo de responsabilidad compartida
AWS lo resume así: AWS es responsable de la seguridad de la nube (security OF the cloud); el cliente, de la seguridad en la nube (security IN the cloud).
- AWS: instalaciones físicas, hardware, red global, hipervisor, y el software de los servicios gestionados.
- Cliente: sus datos, quién accede (IAM), la configuración de red (security groups, NACL), el cifrado que elija activar, y todo lo que instale.
La frontera se mueve según el tipo de servicio:
| Tarea | EC2 (IaaS) | RDS (gestionado) | Lambda / S3 / DynamoDB (serverless) |
|---|---|---|---|
| Seguridad física, hardware, hipervisor | AWS | AWS | AWS |
| Parches del sistema operativo | Cliente | AWS | AWS |
| Parches del motor de base de datos | Cliente (si lo instala) | AWS (en la ventana de mantenimiento que eliges) | — |
| Configurar security groups y reglas de red | Cliente | Cliente | Cliente (si usa VPC) |
| Cifrado de datos (activarlo, gestionar claves) | Cliente | Cliente | Cliente |
| Permisos de IAM y políticas de recurso | Cliente | Cliente | Cliente |
| Código de la aplicación | Cliente | Cliente | Cliente |
Hay además controles compartidos: la gestión de parches (AWS parchea la infraestructura, tú tus sistemas), la gestión de configuración y la formación (AWS forma a su personal, tú al tuyo). AWS Artifact (módulo 07) te da acceso a los informes de cumplimiento de AWS.
4. IAM a fondo
AWS Identity and Access Management (IAM) es el servicio global y gratuito que decide quién (autenticación) puede hacer qué sobre qué recursos y en qué condiciones (autorización).
4.1 Vocabulario imprescindible
- Principal: quien hace la petición. Puede ser el usuario root, un usuario IAM, una sesión de rol (un rol asumido), un usuario federado o un servicio de AWS (por ejemplo
ec2.amazonaws.com). - Petición (request): acción (
s3:GetObject) + recurso (ARN) + contexto (IP de origen, hora, si hay MFA, etiquetas…). - ARN (Amazon Resource Name): identificador único de un recurso:
arn:partition:service:region:account-id:resource. Ejemplos:arn:aws:iam::111122223333:role/Auditor(IAM es global, por eso la región va vacía),arn:aws:s3:::mi-bucket/*(S3 no lleva ni región ni cuenta). - Deny implícito: por defecto, todo está denegado. Un permiso solo existe si alguna política lo concede.
4.2 El usuario root y las buenas prácticas de la cuenta
Buenas prácticas oficiales para el root (documentación):
- Contraseña fuerte y única, en un gestor de contraseñas; correo de grupo gestionado por la empresa (no el personal de alguien).
- MFA obligatoria: AWS exige que todas las cuentas (independientes, de administración y miembros) registren MFA para el root; si no está activada, hay que registrarla en un plazo de 35 días desde el primer intento de acceso a la consola. Se pueden registrar hasta 8 dispositivos MFA de cualquier combinación: llaves de seguridad FIDO (passkeys), dispositivos TOTP de hardware o aplicaciones autenticadoras virtuales. Registra al menos dos.
- Nunca crees claves de acceso para el root.
- Úsalo solo para las pocas tareas que lo exigen (por ejemplo, cambiar la configuración de la cuenta o cerrarla, restaurar permisos si el único administrador se los quitó, algunas tareas de facturación y soporte). Para todo lo demás, crea un usuario administrativo (en IAM Identity Center o, en su defecto, IAM).
- En organizaciones: gestión centralizada del acceso root para eliminar las credenciales root de las cuentas miembro, y SCP que limiten lo que el root de una cuenta miembro puede hacer.
- Vigila su uso: GuardDuty, reglas de EventBridge sobre inicios de sesión del root, y comprobaciones de AWS Config, Security Hub CSPM y Trusted Advisor (MFA en root, claves de root).
4.3 Identidades: usuarios, grupos y roles
| Identidad | Qué es | Credenciales | Cuándo usarla |
|---|---|---|---|
| Usuario IAM | Una identidad con credenciales de larga duración: contraseña de consola y/o hasta 2 claves de acceso | Largas (hay que rotarlas) | Casos que no admiten credenciales temporales (algunas herramientas de terceros) y cuentas de emergencia (break-glass). Para personas, mejor Identity Center |
| Grupo IAM | Colección de usuarios para asignar permisos en bloque. No es un principal (no puede aparecer en el Principal de una política) y no se anida |
Ninguna | Gestionar permisos de usuarios IAM por función (Desarrolladores, Auditores) |
| Rol IAM | Identidad sin credenciales propias que alguien «asume» para obtener credenciales temporales. Tiene dos políticas: la política de confianza (trust policy: quién puede asumirlo) y las políticas de permisos (qué puede hacer) | Temporales (de 15 min a 12 h) | Servicios de AWS (EC2, Lambda), acceso entre cuentas, federación, cambios de rol puntuales. Es la respuesta por defecto del examen |
Variantes de rol que conviene reconocer:
- Instance profile (perfil de instancia): contenedor que pasa un rol a una instancia EC2. La aplicación obtiene credenciales temporales del servicio de metadatos (IMDS) y el SDK las renueva solo. Es la forma correcta de dar permisos a EC2.
- Service role: rol que asume un servicio para actuar en tu nombre (por ejemplo, el rol de una función Lambda).
- Service-linked role: rol predefinido y vinculado a un servicio concreto, que solo ese servicio puede asumir y cuyas políticas no puedes editar. Las SCP no le afectan.
iam:PassRole: permiso necesario para «entregar» un rol a un servicio (por ejemplo, al lanzar una instancia con un perfil). Sin él, un desarrollador podría escalar privilegios pasando un rol de administrador a una instancia que controla.
Cuotas verificadas en la documentación de cuotas (por defecto → máximo ampliable):
| Recurso | Por defecto | Máximo |
|---|---|---|
| Grupos por cuenta | 300 | 500 |
| Roles por cuenta | 1.000 | 10.000 |
| Políticas administradas por cliente por cuenta | 1.500 | 10.000 |
| Políticas administradas asociadas a un usuario | 10 | 20 |
| Políticas administradas asociadas a un grupo | 10 | 10 |
| Políticas administradas asociadas a un rol | 20 | 25 |
| Tamaño de una política administrada | 6.144 caracteres (sin contar espacios) | fijo |
| Suma de políticas inline de un usuario / grupo / rol | 2.048 / 5.120 / 10.240 caracteres | fijo |
| Duración de sesión de un rol | de 1 a 12 h (configurable por rol) | 12 h |
4.4 Políticas: tipos y anatomía
| Tipo | Se asocia a | ¿Concede permisos? | Uso típico |
|---|---|---|---|
| Identity-based policy (política basada en identidad): AWS managed, customer managed o inline | Usuario, grupo o rol | Sí | Lo que puede hacer una identidad |
| Resource-based policy (política basada en recurso): bucket policy de S3, key policy de KMS, política de cola SQS, de tema SNS, de función Lambda, trust policy de un rol… | Un recurso | Sí (y nombra un Principal) |
Dar acceso a otras cuentas o servicios sin que asuman un rol |
| Permissions boundary (límite de permisos) | Usuario o rol | No: fija el máximo | Delegar la creación de roles a desarrolladores sin que puedan escalar privilegios |
| SCP (service control policy) de AWS Organizations | Raíz, OU o cuenta | No: máximo para los principales de las cuentas miembro | Guardarraíles organizativos |
| RCP (resource control policy) de AWS Organizations | Raíz, OU o cuenta | No: máximo para los recursos de las cuentas miembro | Perímetro de datos («nadie de fuera de la organización accede a nuestros buckets») |
| Session policy (política de sesión) | Se pasa al asumir un rol o al federarse | No: limita esa sesión | Reducir permisos de una sesión concreta |
| ACL | Algunos recursos (S3, VPC) | Sí (formato antiguo, sin JSON de IAM) | Heredado; en S3 se recomienda desactivarlas (módulo 03) |
AWS managed frente a customer managed frente a inline: las administradas por AWS son cómodas pero amplias y AWS puede cambiarlas; las administradas por el cliente son reutilizables, versionadas (hasta 5 versiones) y las controlas tú; las inline viven dentro de una única identidad y se borran con ella (útiles cuando quieres una relación estricta 1:1).
Anatomía de una política de identidad:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "LeerSoloMiCarpeta",
"Effect": "Allow",
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": "arn:aws:s3:::empresa-datos/equipo-a/*",
"Condition": {
"Bool": { "aws:MultiFactorAuthPresent": "true" },
"IpAddress": { "aws:SourceIp": "203.0.113.0/24" }
}
}
]
}
Version: siempre2012-10-17(la versión del lenguaje, no una fecha tuya).Effect:AllowoDeny.Action/NotAction,Resource/NotResource: admiten comodines (s3:Get*).Principal: solo en políticas de recurso (quién recibe el permiso).Condition: operador + clave + valor. Claves globales muy preguntadas:aws:SourceIp,aws:SourceVpc,aws:SourceVpce(peticiones que llegan por un VPC endpoint),aws:RequestedRegion,aws:MultiFactorAuthPresent,aws:PrincipalOrgID(cualquiera de mi organización),aws:PrincipalTagyaws:ResourceTag(ABAC),aws:SecureTransport(exigir HTTPS).
ABAC (attribute-based access control): en lugar de una política por proyecto, una sola política compara etiquetas del principal y del recurso. Escala mejor que RBAC cuando hay muchos proyectos:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["ec2:StartInstances", "ec2:StopInstances"],
"Resource": "*",
"Condition": {
"StringEquals": { "aws:ResourceTag/Proyecto": "${aws:PrincipalTag/Proyecto}" }
}
}
]
}
Una política de recurso (bucket policy) que da lectura a un rol de otra cuenta y obliga a usar HTTPS:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "LecturaDesdeCuentaAnalitica",
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::444455556666:role/Analitica" },
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::informes-ventas/*"
},
{
"Sid": "SoloHTTPS",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": ["arn:aws:s3:::informes-ventas", "arn:aws:s3:::informes-ventas/*"],
"Condition": { "Bool": { "aws:SecureTransport": "false" } }
}
]
}
¿Cuándo usar una política de recurso en vez de un rol? Cuando el servicio la admite y quieres que el otro lado siga usando sus propios permisos a la vez (con un rol, el principal renuncia a los suyos mientras dura la sesión), cuando el que llama es un servicio de AWS (S3 invocando una Lambda, SNS escribiendo en SQS) o cuando quieres controlar el acceso en el propio recurso (por ejemplo, forzar cifrado o un VPC endpoint). Con un rol, en cambio, centralizas en un sitio muchos permisos sobre muchos recursos.
4.5 La lógica de evaluación de políticas
Es la parte más técnica del módulo y cae seguro. Tres reglas de oro (documentación oficial):
- Por defecto, todo se deniega (salvo al root de la cuenta, que tiene acceso completo; solo una SCP puede limitar al root de una cuenta miembro).
- Un
Denyexplícito en cualquier política aplicable gana siempre. - Para que se permita, hace falta un
Allowexplícito y que ninguna política «limitadora» lo impida.
Orden de evaluación dentro de una cuenta:
flowchart TD
A["Petición autenticada"] --> B{"¿Algún Deny explícito en SCP, RCP, política de recurso, de identidad, boundary o de sesión?"}
B -->|Sí| DENY["DENY final"]
B -->|No| C{"¿Las RCP que aplican al recurso lo permiten?"}
C -->|No| DENY
C -->|Sí o no hay RCP| D{"¿Las SCP que aplican al principal lo permiten?"}
D -->|No| DENY
D -->|Sí o no hay SCP| E{"¿Una política de recurso lo concede directamente a este usuario IAM o sesión?"}
E -->|Sí| ALLOW["ALLOW final"]
E -->|No| F{"¿Alguna política de identidad lo permite?"}
F -->|No| DENY
F -->|Sí| G{"¿Hay permissions boundary y no lo permite?"}
G -->|"Sí, no lo permite"| DENY
G -->|"No hay o lo permite"| H{"¿Es una sesión con política de sesión que no lo permite?"}
H -->|"Sí, no lo permite"| DENY
H -->|"No"| ALLOW
Cómo se combinan los tipos (dentro de una misma cuenta):
| Combinación | Resultado |
|---|---|
| Identidad + política de recurso | Unión: basta con que una de las dos lo permita (salvo excepciones como las trust policies y las key policies de KMS, que deben permitirlo explícitamente) |
| Identidad + permissions boundary | Intersección: ambas deben permitirlo |
| Identidad + SCP (+ RCP) | Intersección: todas deben permitirlo |
| Identidad + política de sesión | Intersección |
Cualquier combinación con un Deny explícito |
Deny |
Excepción fina que aparece en preguntas difíciles: si una política de recurso concede el permiso directamente al ARN de un usuario IAM o de una sesión de rol, un deny implícito de la política de identidad, del boundary o de la política de sesión no lo impide. En cambio, si la política de recurso nombra el ARN del rol (no el de la sesión), el boundary y la política de sesión sí limitan.
Entre cuentas (cross-account): la petición se evalúa dos veces, en la cuenta que confía (dueña del recurso) y en la cuenta de confianza (la del principal). Ambas deben dar Allow: la política de identidad del que llama debe permitir la acción sobre el ARN del recurso, y la política de recurso debe nombrar a ese principal (o a su cuenta). Las SCP de la organización del que llama también aplican.
Ejemplos rápidos (hazlos de cabeza antes de leer la solución):
1. Un rol tiene AdministratorAccess y un permissions boundary que solo permite s3:* y cloudwatch:*. ¿Puede lanzar una instancia EC2?
No. Boundary e identidad se intersecan: ec2:RunInstances está en la identidad pero no en el boundary, así que queda denegado implícitamente.
2. Una cuenta miembro tiene una SCP que deniega ec2:* fuera de eu-south-2 y eu-west-1. El root de esa cuenta intenta lanzar una instancia en us-east-1. ¿Qué pasa?
Se deniega. Las SCP afectan a todos los principales de las cuentas miembro, incluido su root. Solo no afectan a la cuenta de administración ni a los service-linked roles.
3. Un usuario de la cuenta A tiene s3:GetObject sobre un bucket de la cuenta B, pero el bucket no tiene política. ¿Puede leer?
No. En acceso entre cuentas hace falta el Allow en las dos: falta la política de recurso en B (o asumir un rol de B).
4.6 AWS STS, roles y acceso entre cuentas
AWS Security Token Service (STS) emite credenciales temporales (clave de acceso, clave secreta y token de sesión) con caducidad. Operaciones que debes reconocer:
| Operación | Quién la usa | Duración (mín. / máx. / por defecto) |
|---|---|---|
AssumeRole |
Usuario o rol que asume otro rol (misma cuenta u otra) | 15 min / máximo del rol (1-12 h) / 1 h |
AssumeRoleWithSAML |
Usuario autenticado por un proveedor SAML 2.0 (AD FS, Entra ID…) | 15 min / máximo del rol / 1 h |
AssumeRoleWithWebIdentity |
Usuario autenticado por un proveedor OIDC (Google, GitHub Actions, Amazon Cognito…) | 15 min / máximo del rol / 1 h |
GetSessionToken |
Usuario IAM que quiere credenciales temporales, por ejemplo para demostrar MFA en la CLI | — |
GetFederationToken |
Aplicación intermediaria con credenciales de usuario IAM (patrón antiguo) | — |
Role chaining (usar la sesión de un rol para asumir otro) limita la nueva sesión a 1 hora, salvo en los casos que la documentación excluye (credenciales de perfiles de instancia EC2, por ejemplo).
Cambio de rol en la consola (switch role): un usuario con permiso sts:AssumeRole sobre el rol pasa a trabajar con sus permisos, y deja temporalmente los suyos.
Acceso entre cuentas con rol (el patrón que más sale):
- En la cuenta B (dueña de los recursos) se crea un rol con una trust policy que confía en la cuenta A (o en un rol concreto de A) y una política de permisos acotada.
- En la cuenta A, la política de identidad del usuario o rol permite
sts:AssumeRolesobre el ARN del rol de B. - El principal de A llama a
AssumeRoley recibe credenciales temporales de B.
Si quien asume es un tercero (un proveedor SaaS que accede a las cuentas de muchos clientes), añade una condición sts:ExternalId en la trust policy para evitar el problema del confused deputy (que otro cliente del proveedor le haga usar tu rol):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::999988887777:root" },
"Action": "sts:AssumeRole",
"Condition": { "StringEquals": { "sts:ExternalId": "cliente-7f3a9" } }
}
]
}
Nombrar arn:aws:iam::999988887777:root en la trust policy significa «delego en la cuenta 999988887777»: dentro de ella, solo podrán asumir el rol los principales a los que su administrador dé sts:AssumeRole.
4.7 Federación e identidades de personas
La federación permite que las personas usen identidades que ya existen fuera de IAM (un directorio corporativo, un proveedor de identidad en la nube, redes sociales) y reciban credenciales temporales de un rol. Ventajas: sin usuarios IAM que mantener, altas y bajas centralizadas, MFA del proveedor.
| Necesidad | Solución | Por qué |
|---|---|---|
| Empleados que deben entrar en varias cuentas de AWS con inicio de sesión único | AWS IAM Identity Center (antes AWS Single Sign-On) | Portal de acceso único, permission sets que se despliegan como roles en cada cuenta, integración con Organizations |
| Empleados con identidades en un IdP SAML 2.0 (Entra ID, Okta…) | Identity Center con ese IdP como fuente de identidad (SAML + SCIM para sincronizar usuarios); o federación SAML directa con IAM en una sola cuenta | Un único punto de federación |
| Empleados en Active Directory local | Identity Center con AD como fuente, a través de AWS Managed Microsoft AD (con confianza hacia el AD local) o AD Connector | Reutilizar las credenciales de AD |
| Usuarios de tu aplicación web o móvil (clientes, no empleados) | Amazon Cognito (grupos de usuarios y de identidades; módulo 07) | Escala a millones de usuarios, inicio de sesión social, credenciales temporales para acceder a AWS |
| Cargas fuera de AWS (servidores locales, CI/CD) | Federación OIDC (por ejemplo GitHub Actions con AssumeRoleWithWebIdentity) o IAM Roles Anywhere con certificados X.509 |
Evitar claves de larga duración |
IAM Identity Center en detalle:
- Instancia de organización (recomendada; se crea en la cuenta de administración de AWS Organizations y es la única que da acceso a cuentas de AWS) frente a instancia de cuenta (solo para aplicaciones gestionadas de AWS dentro de una cuenta).
- Activarlo en una cuenta independiente crea una organización con esa cuenta como cuenta de administración.
- Fuentes de identidad: el directorio propio de Identity Center, Active Directory (Managed Microsoft AD o AD Connector) o un IdP externo (SAML 2.0 + SCIM).
- Permission set: plantilla de permisos (políticas administradas, inline o boundaries) que Identity Center convierte en un rol (
AWSReservedSSO_...) en cada cuenta asignada. - AWS access portal: la URL donde el usuario ve sus cuentas y roles.
- Los datos se guardan en la región donde lo activas; se puede replicar a otras regiones. Si eliges una región opt-in, todas las cuentas deben tenerla activada; por eso es más cómodo activarlo en una región activada por defecto (por ejemplo
eu-west-1).
AWS Directory Service ofrece Microsoft Active Directory en AWS:
| Opción | Qué es | Cuándo |
|---|---|---|
| AWS Managed Microsoft AD | Un Active Directory real de Windows Server gestionado por AWS (ediciones Standard y Enterprise). Admite relaciones de confianza con tu AD local, MFA, extensión de esquema, LDAPS | Aplicaciones compatibles con AD en AWS (SharePoint, SQL Server, RDS for SQL Server), AD «de verdad» en la nube, confianza con el AD local |
| AD Connector | Proxy que reenvía las autenticaciones a tu AD local, sin copiar datos a la nube. Admite MFA vía RADIUS | Usar el AD local existente con servicios de AWS (WorkSpaces, Quick, consola, unir instancias EC2 al dominio) sin sincronizar nada. No es compatible con RDS for SQL Server |
| Simple AD | Directorio compatible con AD basado en Samba 4, barato y básico, sin confianzas ni MFA | En mantenimiento desde el 30/06/2026: no admite clientes nuevos. Puede aparecer en material antiguo |
4.8 Buenas prácticas de IAM (el checklist del examen)
Según las buenas prácticas oficiales:
- Credenciales temporales para personas (federación, Identity Center) y cargas (roles). Las claves de larga duración, solo si no hay alternativa, y rótalas.
- MFA para el root y para cualquier acceso humano privilegiado; se puede exigir con
aws:MultiFactorAuthPresent. - Mínimo privilegio: empieza con políticas administradas de AWS si te ayudan a arrancar y refina con políticas propias. Usa la información de último acceso (last accessed information) y la generación de políticas de IAM Access Analyzer basada en CloudTrail.
- Condiciones para acotar aún más (IP, VPC endpoint, región, HTTPS, etiquetas).
- Valida las políticas con IAM Access Analyzer antes de desplegarlas.
- Guardarraíles en multicuenta: SCP y RCP; permissions boundaries para delegar.
- Revisa y elimina usuarios, roles, permisos y credenciales sin uso; el credential report (
aws iam generate-credential-report) lista todos los usuarios y el estado de sus credenciales.
4.9 IAM Access Analyzer
Herramienta de IAM con varias funciones (documentación):
- External access analyzer (sin coste): define una zona de confianza (tu cuenta o tu organización) y genera un hallazgo por cada recurso compartido fuera de ella (buckets S3, roles, claves KMS, funciones Lambda, colas SQS, secretos, temas SNS, snapshots de EBS y RDS, repositorios ECR, EFS, tablas y streams de DynamoDB…). Es regional: créalo en cada región que uses.
- Internal access analyzer y unused access analyzer (de pago): quién de dentro puede acceder a recursos críticos, y roles, claves, contraseñas y permisos sin usar.
- Validación de políticas (gramática y buenas prácticas) y custom policy checks (¿esta política concede acceso nuevo? ¿permite esta acción crítica?).
- Generación de políticas a partir de la actividad registrada en CloudTrail.
aws accessanalyzer validate-policy \
--policy-type IDENTITY_POLICY \
--policy-document file://politica.json
5. Seguridad multicuenta
5.1 ¿Por qué varias cuentas?
La cuenta es el límite de aislamiento más fuerte de AWS: separa permisos, cuotas de servicio, facturación y el «radio de explosión» de un error o un incidente. La estrategia recomendada (whitepaper) es agrupar cargas por función y requisitos en unidades organizativas (OU): por ejemplo Security (cuentas de seguridad y de logs), Infrastructure (red compartida), Workloads con sub-OU Prod y Dev, Sandbox (experimentos) y Suspended.
5.2 AWS Organizations
- Cuenta de administración (management account): crea la organización, paga la factura consolidada y gestiona políticas. Ninguna SCP le afecta, por eso no se despliegan cargas en ella.
- Cuentas miembro, agrupadas en OU jerárquicas bajo la raíz.
- Consolidated billing: una sola factura, y el uso se agrega para alcanzar tramos de descuento por volumen; los descuentos de Reserved Instances y Savings Plans pueden compartirse entre cuentas.
- Dos modos: solo facturación consolidada, o all features (necesario para las políticas).
- Delegated administrator: una cuenta miembro administra un servicio (GuardDuty, Security Hub, Identity Center…) sin usar la cuenta de administración.
Tipos de política (documentación):
| Categoría | Políticas | ¿Afecta a la cuenta de administración? |
|---|---|---|
| Autorización | SCP (máximo para usuarios y roles; hasta 10 por raíz/OU/cuenta y 10.240 caracteres según la documentación actual) y RCP (máximo para recursos; hasta 5 y 5.120 caracteres) | No |
| Declarativas / de gestión | Políticas de EC2, de backup, de etiquetas (tag policies), de exclusión de servicios de IA, de Security Hub, de Inspector, de S3, entre otras | Sí |
Cómo funcionan las SCP (documentación):
- No conceden permisos; fijan el máximo. El usuario sigue necesitando políticas de IAM.
- Se heredan: una cuenta solo tiene lo que permiten todos los niveles por encima (raíz → OU → cuenta).
- Al activar las SCP se asocia la política
FullAWSAccessa todo; si la quitas sin sustituirla, todo queda bloqueado. - Afectan a todos los usuarios y roles de las cuentas miembro, incluido el root; no afectan a la cuenta de administración ni a los service-linked roles, ni a principales de fuera de la organización a los que una política de recurso dé acceso.
- Estrategias: deny list (dejar
FullAWSAccessy añadirDenyconcretos; lo habitual) o allow list (sustituirFullAWSAccesspor una lista de servicios permitidos; más restrictivo y más trabajo).
SCP típica: impedir el uso de regiones no aprobadas, salvo servicios globales (los que se llaman a través de us-east-1):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenegarFueraDeRegionesAprobadas",
"Effect": "Deny",
"NotAction": [
"iam:*", "organizations:*", "sts:*", "route53:*",
"cloudfront:*", "support:*", "budgets:*"
],
"Resource": "*",
"Condition": {
"StringNotEquals": { "aws:RequestedRegion": ["eu-south-2", "eu-west-1"] }
}
}
]
}
Otras SCP clásicas: impedir salir de la organización (organizations:LeaveOrganization), impedir desactivar CloudTrail o GuardDuty, exigir etiquetas al crear recursos, bloquear acciones del root de las cuentas miembro.
RCP: igual que las SCP pero aplicadas a los recursos (S3, STS, KMS, SQS, Secrets Manager, entre otros). Sirven para construir un perímetro de datos: por ejemplo, denegar el acceso a los buckets de la organización a cualquier principal cuyo aws:PrincipalOrgID no sea el tuyo, aunque alguien escriba por error una bucket policy pública.
5.3 AWS Control Tower
Servicio que orquesta Organizations, IAM Identity Center, AWS Config, CloudTrail y Service Catalog para montar en menos de una hora un entorno multicuenta según buenas prácticas (documentación):
- Landing zone: el entorno multicuenta base (OU de seguridad con una cuenta de archivo de logs y otra de auditoría, CloudTrail de organización, Identity Center configurado).
- Controls (antes guardrails): reglas de gobierno en lenguaje llano.
- Preventivos: impiden la acción (se implementan con SCP o RCP).
- Detectivos: detectan incumplimientos (reglas de AWS Config).
- Proactivos: comprueban los recursos antes de crearlos (hooks de CloudFormation).
- Por obligatoriedad: mandatory, strongly recommended y elective.
- Account Factory: plantilla para dar de alta cuentas nuevas ya configuradas y con los controles aplicados («máquina expendedora» de cuentas, construida sobre Service Catalog).
- Dashboard y detección de drift (desviaciones respecto a la configuración).
5.4 AWS Resource Access Manager (AWS RAM)
AWS RAM permite compartir recursos con otras cuentas, con toda la organización o con OU concretas, sin duplicarlos (documentación). Ejemplos: subredes de VPC (VPC sharing: una cuenta de red posee la VPC y las cuentas participantes lanzan sus recursos en las subredes compartidas), AWS Transit Gateway, reglas de Route 53 Resolver, configuraciones de License Manager, Capacity Reservations, Dedicated Hosts…
Frente a una política de recurso: con RAM puedes compartir con una OU entera sin listar cuentas, el recurso aparece en la consola del consumidor como si fuera suyo y el dueño ve quién tiene acceso. Dentro de la organización no hace falta aceptar invitaciones. RAM no tiene coste propio. Las políticas de IAM y las SCP de la cuenta consumidora siguen aplicando.
5.5 Resumen: ¿qué uso para el acceso en varias cuentas?
| Requisito | Servicio |
|---|---|
| Inicio de sesión único de empleados en muchas cuentas | IAM Identity Center |
| Límite máximo de permisos para todas las cuentas de una OU | SCP |
| Nadie de fuera de la organización accede a nuestros recursos | RCP (y aws:PrincipalOrgID en políticas de recurso) |
| Montar el entorno multicuenta completo con buenas prácticas | AWS Control Tower |
| Compartir una subred o un Transit Gateway con otras cuentas | AWS RAM |
| Que un sistema de la cuenta A lea recursos de la cuenta B | Rol en B asumido desde A, o política de recurso en B |
| Ver recursos compartidos fuera de la cuenta u organización | IAM Access Analyzer |
6. Introducción al AWS Well-Architected Framework
El examen «valida la capacidad de diseñar soluciones basadas en el AWS Well-Architected Framework», así que conviene conocerlo desde el primer día (lo trabajarás a fondo en el módulo 10). Tiene seis pilares (documentación):
| Pilar | Idea clave | Dominio del examen más relacionado |
|---|---|---|
| Operational excellence (excelencia operativa) | Operar y mejorar: infraestructura como código, cambios pequeños y reversibles, aprender de los fallos | Transversal |
| Security (seguridad) | Identidad fuerte, mínimo privilegio, trazabilidad, seguridad en todas las capas, cifrado | Dominio 1 |
| Reliability (fiabilidad) | Recuperarse de fallos, escalar horizontalmente, dejar de adivinar la capacidad | Dominio 2 |
| Performance efficiency (eficiencia del rendimiento) | Usar el recurso adecuado, «ir global en minutos», serverless, experimentar | Dominio 3 |
| Cost optimization (optimización de costes) | Pagar solo lo que usas, medir, elegir el modelo de compra adecuado | Dominio 4 |
| Sustainability (sostenibilidad) | Minimizar el impacto ambiental: maximizar la utilización, servicios gestionados | Transversal |
La AWS Well-Architected Tool es un servicio de la consola que te guía por las preguntas de cada pilar para revisar una carga de trabajo concreta, identifica riesgos altos y medios, genera un plan de mejora, guarda hitos (milestones) para ver la evolución y admite lenses (de AWS, como Serverless Applications Lens, o personalizadas). Se integra con Trusted Advisor.
Trampas típicas del examen
- Claves de acceso en el código, en variables de entorno o en la AMI → siempre es incorrecto si existe la opción de rol (perfil de instancia, rol de ejecución de Lambda, rol de tarea de ECS).
- «Crear un usuario IAM para cada empleado de la empresa» cuando ya tienen un directorio → la respuesta es federación (Identity Center, SAML).
- Grupos como principal: no puedes poner un grupo IAM en el
Principalde una bucket policy ni hacer que un grupo asuma un rol. - Las SCP no conceden permisos y no afectan a la cuenta de administración. Si el enunciado dice «el usuario de la cuenta de administración pudo hacerlo pese a la SCP», es por eso.
- Permissions boundary ≠ política de permisos: por sí solo no concede nada.
- Deny explícito siempre gana, aunque haya un Allow en otra política o en otra cuenta.
- Acceso entre cuentas: hace falta permiso en ambos lados. Una bucket policy que permite a la cuenta A no basta si la política de identidad del usuario de A no permite
s3:GetObject. - Tercero que accede a tu cuenta → rol con external ID, nunca compartir claves ni crear un usuario IAM para él.
- Root: MFA, sin claves de acceso, sin uso diario. «Proteger la cuenta» en una pregunta de opción múltiple casi siempre incluye MFA en root.
- Control Tower frente a Organizations: Organizations es la pieza; Control Tower monta todo el entorno con guardarraíles y fábrica de cuentas.
- AD Connector frente a Managed Microsoft AD: proxy, no data stored in the cloud → AD Connector; trust relationship, AD-aware applications in AWS → Managed Microsoft AD.
- Cognito frente a Identity Center: clientes de una app → Cognito; empleados que acceden a cuentas y aplicaciones de AWS → Identity Center.
- Outposts frente a Local Zones: «los datos deben permanecer en las instalaciones del cliente» → Outposts.
- Simple AD está cerrado a clientes nuevos; si aparece como opción «barata», piénsalo dos veces (y en el examen solo sería válido para necesidades básicas de un directorio independiente).
Resumen
- Una región tiene varias AZ aisladas; multi-AZ da alta disponibilidad, multirregión da DR y cercanía global.
eu-south-2es una región opt-in. - Edge locations (CloudFront, Route 53), Local Zones (ciudad), Wavelength (5G) y Outposts (tu centro de datos) acercan AWS al usuario.
- Responsabilidad compartida: AWS protege la nube; tú, lo que pones en ella. La frontera depende del tipo de servicio.
- Root solo para tareas de root, con MFA y sin claves. Personas → Identity Center/federación; cargas → roles.
- Políticas: identidad y recurso conceden; boundaries, SCP, RCP y políticas de sesión limitan. Deny explícito gana; por defecto todo se deniega.
- Entre cuentas: Allow en las dos cuentas. Terceros → external ID.
- STS da credenciales temporales (15 min-12 h; 1 h con role chaining).
- Organizations + SCP/RCP para guardarraíles; Control Tower para montar y gobernar el entorno; RAM para compartir recursos; Access Analyzer para detectar accesos externos y validar políticas.
- Well-Architected: 6 pilares; la Well-Architected Tool revisa cargas concretas.
Cobertura del temario
Task statement principal: 1.1 Design secure access to AWS resources. También se cubren los puntos de infraestructura global de las tareas 2.2 (y se introducen los de 3.3 y 4.2, que se completan en los módulos 02 y 04).
| Task | Punto de la guía | Dónde se trata |
|---|---|---|
| 1.1 | Knowledge of: Access controls and management across multiple accounts | 4.6 (acceso entre cuentas), 5.2 (Organizations, SCP, RCP), 5.3 (Control Tower), 5.4 (RAM), 5.5 |
| 1.1 | Knowledge of: AWS federated access and identity services (IAM, IAM Identity Center) | 4.3, 4.7 (federación, Identity Center, Directory Service, Cognito); lab 01 |
| 1.1 | Knowledge of: AWS global infrastructure (Availability Zones, AWS Regions) | 1.1-1.3 |
| 1.1 | Knowledge of: AWS security best practices (principle of least privilege) | 4.2, 4.4 (condiciones, ABAC), 4.8, 4.9; lab 02 |
| 1.1 | Knowledge of: The AWS shared responsibility model | 3 |
| 1.1 | Skills in: Applying AWS security best practices to IAM users and root users (MFA) | 4.2, 4.8; lab 01 (MFA en root, sin claves de root) |
| 1.1 | Skills in: Designing a flexible authorization model (users, groups, roles, policies) | 4.3, 4.4, 4.5; lab 02 |
| 1.1 | Skills in: Designing a role-based access control strategy (AWS STS, role switching, cross-account access) | 4.6; lab 02 (AssumeRole, políticas de sesión) |
| 1.1 | Skills in: Designing a security strategy for multiple AWS accounts (AWS Control Tower, SCPs) | 5.1-5.3, 5.5 |
| 1.1 | Skills in: Determining the appropriate use of resource policies for AWS services | 4.4 (cuándo política de recurso frente a rol), 4.5, 5.2 (RCP), 5.4 |
| 1.1 | Skills in: Determining when to federate a directory service with IAM roles | 4.7 (tablas de federación y Directory Service) |
| 2.2 | Knowledge of: AWS global infrastructure (Availability Zones, AWS Regions, Amazon Route 53) | 1.1-1.3 (Route 53 a fondo en el módulo 06) |
| 2.2 | Knowledge of: Service quotas and throttling | 4.3 (cuotas de IAM); se amplía en los módulos 02 y 10 |
| 3.2 | Knowledge of: Distributed computing concepts supported by AWS global infrastructure and edge services | 1.3 (edge, Local Zones, Wavelength, Outposts); se completa en el módulo 02 |
| 4.2 | Knowledge of: AWS global infrastructure; Hybrid compute options (AWS Outposts) | 1.1-1.3; se completa en el módulo 02 |
| 4.x | Knowledge of: AWS cost management service features (multi-account billing) | 5.2 (consolidated billing); AWS Budgets en el lab 01; a fondo en el módulo 10 |
Practica lo aprendido
Alta de una cuenta de AWS segura y con control de costesLab
Políticas, roles y lógica de evaluación de IAM en la práctica
Documentación oficial para ampliar
- AWS Global Infrastructure
- IAM User Guide: Policy evaluation logic
- IAM User Guide: Security best practices in IAM
- IAM and AWS STS quotas
- What is IAM Identity Center?
- AWS Organizations: Service control policies (SCPs)
- What Is AWS Control Tower?
- AWS Directory Service: What is AWS Directory Service?
- Shared Responsibility Model
- AWS Well-Architected Framework
- Organizing Your AWS Environment Using Multiple Accounts (whitepaper)