Lab práctico · Semana 1: Fundamentos de AWS e IAM a fondo
Alta de una cuenta de AWS segura y con control de costes
Qué vas a construir
La cuenta de AWS que usarás durante todo el curso, configurada como lo haría un arquitecto en una empresa:
- Alta con la experiencia clásica («Sign up for AWS (advanced)»), que crea usuario root y te deja elegir región.
- Usuario root protegido con MFA (dos dispositivos) y guardado en un cajón.
- Región Europa (España)
eu-south-2activada. - Presupuestos y alertas con AWS Budgets y avisos de la capa gratuita para que nada te sorprenda.
- Un usuario administrador en IAM Identity Center con MFA, que será tu identidad diaria en la consola y en CloudShell.
flowchart LR
R["Usuario root<br/>(MFA x2, sin claves)"] -->|"solo tareas de root"| C["Cuenta de AWS<br/>(cuenta de administración)"]
IC["IAM Identity Center<br/>(eu-west-1)"] -->|"permission set<br/>AdministratorAccess"| C
U["Tu usuario diario<br/>(MFA)"] -->|"AWS access portal"| IC
C --> B["AWS Budgets<br/>zero spend + mensual"]
C --> F["Alertas de capa gratuita"]
Antes de empezar
- Una dirección de correo que controles y que no uses para nada más en AWS. Truco: si tu proveedor admite alias con
+(por ejemplotunombre+aws-root@…), úsalo; así separas el root del correo de tu usuario de Identity Center. - Un móvil con una aplicación autenticadora (TOTP) y, si tienes, una llave de seguridad FIDO o una passkey de tu gestor de contraseñas.
- Un gestor de contraseñas para guardar la contraseña del root y la de tu usuario diario.
- Una tarjeta a mano: según las FAQ oficiales, la mayoría de clientes nuevos ya no tiene que dar un método de pago, pero AWS puede pedirlo para verificar tu identidad.
- Lee en el módulo la sección 2.1 (planes de la capa gratuita).
Paso 1: Date de alta con «Sign up for AWS (advanced)»
AWS está desplegando para algunos clientes una experiencia de alta nueva basada en proyectos y en el portal AWS Settings. Para estudiar el SAA no te sirve: en ella no existe usuario root, los usuarios de IAM solo sirven para acceso programático, las SCP las gestiona AWS, la región la asigna AWS (en Europa, eu-north-1) y servicios del temario como AWS Organizations, Control Tower o IAM Identity Center no están disponibles sin activar las funciones avanzadas.
- Entra en la página de alta de AWS y, si te ofrece elegir, escoge Sign up for AWS (advanced). Si la página te lleva a la experiencia nueva, busca la opción de activar las funciones avanzadas (advanced features); consulta Compare sign-up options.
- Rellena correo, nombre de la cuenta (por ejemplo
borja-saa-lab) y verifica el correo. - Datos de contacto: tipo Personal, país España. Es posible que AWS te recomiende activar la región opt-in de tu país (Europa (España)); acéptalo si aparece.
- Elige plan. Lee la tabla y decide:
| Plan gratuito | Plan de pago | |
|---|---|---|
| ¿Puede cobrarte? | Nunca | Sí, cuando se agote el crédito o en servicios sin crédito |
| ¿Qué pasa a los 6 meses o al agotar el crédito? | La cuenta se cierra; AWS guarda el contenido 90 días y puedes pasar a plan de pago en ese plazo; el crédito que quede se aplica a futuras facturas | Sigues pagando por uso |
| ¿Puedes usar Organizations, Control Tower o IAM Identity Center (instancia de organización)? | Solo pasando a plan de pago: se convierte automáticamente al crear o unirte a una organización o al montar una landing zone de Control Tower | Sí |
Para este curso acabarás en el plan de pago en el paso 6 (IAM Identity Center crea una organización). Puedes empezar en el plan gratuito y dejar que la conversión ocurra entonces, o elegir ya el de pago. En ambos casos, el crédito de alta se consume antes de que te cobren nada.
- Verificación por SMS o llamada y elección del plan de soporte Basic (gratuito).
Paso 2: Protege el usuario root con MFA
- Inicia sesión en la consola como Root user con tu correo y contraseña.
- Arriba a la derecha, menú de la cuenta → Security credentials.
- En Multi-factor authentication (MFA) → Assign MFA device:
- Primer dispositivo: Passkey or security key si tienes llave FIDO o passkey; si no, Authenticator app.
- Repite y registra un segundo dispositivo (AWS permite hasta 8 en el root). Si pierdes el primero, el segundo te salva de un proceso de recuperación lento.
- En la misma página, comprueba que no hay claves de acceso en Access keys. Si hubiera alguna, elimínala.
Paso 3: Ajustes de la cuenta y región eu-south-2
Sigue como root (son tareas de configuración de la cuenta):
- Menú de la cuenta → Account.
- Alternate contacts: añade contactos de Billing, Operations y Security (pueden ser tu mismo correo con distintos alias). AWS avisa por ahí de incidencias de seguridad y facturación.
- IAM user and role access to Billing information → Edit → activa Activate IAM Access. Sin esto, ni siquiera un administrador que no sea root puede ver la facturación, los créditos ni los presupuestos.
- AWS Regions → busca Europe (Spain)
eu-south-2→ Enable. La activación es gratuita y puede tardar de minutos a horas. Mientras tanto, sigue con el lab.
Paso 4: Presupuestos con AWS Budgets
Crear tu primer presupuesto es además una de las actividades que dan 20 USD de crédito. Supervisar presupuestos y recibir avisos es gratis (las dos primeras action-enabled budgets también).
- Abre Billing and Cost Management → Budgets → Create budget.
- Elige Use a template (simplified) → Zero spend budget. Nombre:
zero-spend. Correo: el tuyo. Create budget. Te avisará en cuanto la cuenta tenga cualquier gasto que no cubra el crédito o la capa gratuita. - Create budget otra vez → plantilla Monthly cost budget. Nombre:
mensual-10usd, importe10, tu correo. Esta plantilla avisa si superas el importe o si la previsión indica que lo vas a superar. Si quieres umbrales propios (por ejemplo, un aviso al 50 %), en Template settings elige Custom y añade más alertas.
Paso 5: Actividades de crédito y avisos de la capa gratuita
- En la página de inicio de la consola o de Billing and Cost Management verás el panel del plan gratuito y de los créditos con las actividades pendientes (lanzar y terminar una instancia EC2, crear una base de datos RDS, crear una aplicación web con Lambda, probar un modelo en el playground de Amazon Bedrock y crear un presupuesto). La del presupuesto ya la tienes.
- Billing and Cost Management → Billing preferences → Alert preferences → Edit: comprueba que está marcado Receive AWS Free Tier alerts (avisan al superar el 85 % del límite gratuito de cada servicio) y pon el correo donde quieres recibirlas. En cuentas independientes vienen activadas; en una cuenta de administración de una organización no, por eso volverás aquí en el paso 7.
Paso 6: Tu usuario administrador en IAM Identity Center
Vas a dejar de usar el root. IAM Identity Center te dará un usuario con MFA que entra por un portal y obtiene credenciales temporales.
- Arriba a la derecha, cambia la región a Europe (Ireland)
eu-west-1. Motivo: Identity Center guarda sus datos en la región donde lo activas y, si eliges una región opt-in comoeu-south-2, todas las cuentas que añadas en el futuro deberán tenerla activada. Tus recursos podrás crearlos eneu-south-2igualmente. - Abre IAM Identity Center → Enable. Como tu cuenta es independiente, verás Enable IAM Identity Center with AWS Organizations: esto crea una organización con tu cuenta como cuenta de administración (y, si estabas en el plan gratuito, la pasa al de pago). Confirma con Enable.
- Settings → Authentication → Multi-factor authentication → Configure: elige el método Always-on (MFA en cada inicio de sesión) en lugar de Context-aware, en Users can authenticate with these MFA types marca Security keys and built-in authenticators y Authenticator apps, y en If a user does not yet have a registered MFA device deja Require them to register an MFA device at sign in. Guarda.
- Users → Add user: nombre de usuario
borja-admin, tu correo (otro alias distinto del root), nombre y apellidos. Elige Send an email to this user with password setup instructions. Crea el usuario. - Permission sets → Create permission set → Predefined permission set → AdministratorAccess. En Session duration deja 1 h o sube a 4 h para no tener que volver a entrar tan a menudo. Crea.
- AWS accounts → selecciona tu cuenta → Assign users or groups →
borja-admin→ permission setAdministratorAccess→ Submit. Identity Center crea en tu cuenta un rolAWSReservedSSO_AdministratorAccess_…. - Copia la AWS access portal URL que aparece en el panel (Dashboard → Settings summary). Guárdala en favoritos.
Ruta alternativa: si prefieres no crear todavía una organización
Si quieres quedarte de momento en el plan gratuito, crea un usuario IAM administrador en lugar de usar Identity Center:
- Como root, abre IAM → Users → Create user:
borja-admin, marca Provide user access to the AWS Management Console con contraseña personalizada. - Attach policies directly → AdministratorAccess (mejor: crea un grupo
Administradorescon esa política y mete al usuario). - Entra con ese usuario (URL de inicio de sesión de la cuenta, en el panel de IAM) y en Security credentials registra MFA.
- No crees claves de acceso: usa CloudShell para la CLI.
Es una solución válida para una cuenta personal, pero en el examen la respuesta para personas es federación e Identity Center. Cuando llegues a la tarea multicuenta, cambia a Identity Center.
Paso 7: Entra como tu usuario diario y verifica con CloudShell
- Cierra la sesión del root.
- Abre el correo de invitación, acepta, pon una contraseña fuerte y registra tu MFA (el portal te lo pedirá).
- Entra en la AWS access portal URL → despliega tu cuenta → AdministratorAccess → Management console.
- Arriba a la derecha verás algo como
AWSReservedSSO_AdministratorAccess_…/borja-admin. Cambia la región a Europe (Spain)eu-south-2(si ya ha terminado de activarse) y abre CloudShell (icono de terminal de la barra superior). - Ejecuta:
# ¿Quién soy?
aws sts get-caller-identity
# ¿Está activada la región de España?
aws account get-region-opt-status --region-name eu-south-2
# ¿Qué zonas de disponibilidad tiene? (nombre y AZ ID)
aws ec2 describe-availability-zones --region eu-south-2 \
--query "AvailabilityZones[].[ZoneName,ZoneId,State]" --output table
# Tus presupuestos
aws budgets describe-budgets \
--account-id "$(aws sts get-caller-identity --query Account --output text)" \
--query "Budgets[].[BudgetName,BudgetLimit.Amount,BudgetLimit.Unit]" --output table
La primera orden debe mostrar un ARN del tipo arn:aws:sts::<cuenta>:assumed-role/AWSReservedSSO_AdministratorAccess_…/borja-admin: estás usando credenciales temporales de un rol, no un usuario con claves.
-
Vuelve a Billing preferences → Alert preferences y activa de nuevo Receive AWS Free Tier alerts: ahora eres la cuenta de administración de una organización y en ese caso vienen desactivadas.
-
(Opcional, práctica de CLI) Crea con la CLI un presupuesto de uso de EC2 igual que el mensual, para ver el formato:
cat > presupuesto.json <<'EOF'
{
"BudgetName": "ec2-5usd",
"BudgetLimit": { "Amount": "5", "Unit": "USD" },
"BudgetType": "COST",
"TimeUnit": "MONTHLY",
"FilterExpression": {
"Dimensions": { "Key": "SERVICE", "Values": ["Amazon Elastic Compute Cloud - Compute"] }
}
}
EOF
cat > avisos.json <<'EOF'
[
{
"Notification": {
"NotificationType": "ACTUAL",
"ComparisonOperator": "GREATER_THAN",
"Threshold": 80,
"ThresholdType": "PERCENTAGE"
},
"Subscribers": [ { "SubscriptionType": "EMAIL", "Address": "tu-correo@ejemplo.com" } ]
}
]
EOF
aws budgets create-budget \
--account-id "$(aws sts get-caller-identity --query Account --output text)" \
--budget file://presupuesto.json \
--notifications-with-subscribers file://avisos.json
Cambia el correo antes de ejecutarlo. FilterExpression es el formato actual de filtros de la API de Budgets (el antiguo CostFilters, que verás en ejemplos viejos, está marcado como deprecated). Si el filtro por servicio te da error, quita el bloque FilterExpression y tendrás un presupuesto de coste total.
Paso 8: Entiende el calendario de tu cuenta
Apúntalo en tu agenda:
- Créditos: en Billing and Cost Management → Credits ves saldo y caducidad. Las fuentes oficiales no coinciden del todo (el blog de lanzamiento habla de hasta 12 meses; las FAQ actuales, de 6 meses para el crédito de alta y 12 meses para el ganado con actividades). Fíate de lo que te diga esa página.
- Si sigues en el plan gratuito: recibirás correos cuando quede el 50 %, 25 % y 10 % del crédito y a 15, 7 y 2 días del final. Al acabar (6 meses o crédito agotado) la cuenta se cierra; tienes 90 días para pasar a plan de pago y recuperar el acceso; después se elimina todo.
- En el plan de pago: al agotarse o caducar el crédito, AWS empieza a cobrar lo que tengas encendido. Tus presupuestos te avisarán; tú borra siempre al final de cada lab.
- Recursos que cobran aunque estén parados: volúmenes EBS y snapshots, IPv4 públicas y Elastic IP, NAT Gateway, balanceadores, el almacenamiento de las bases de datos RDS paradas, etc. Lo verás lab a lab.
Comprueba que funciona
- El root tiene dos dispositivos MFA y ninguna clave de acceso.
-
aws sts get-caller-identityen CloudShell muestra un assumed-role deAWSReservedSSO_…. -
eu-south-2aparece comoENABLED. - Hay al menos dos presupuestos (
zero-spendymensual-10usd) y has recibido el correo de confirmación de las suscripciones si AWS lo envía. - Las alertas de la capa gratuita están activadas en Billing preferences.
- Puedes entrar por el AWS access portal con MFA sin usar el root.
Limpieza
Este lab no crea recursos de pago, así que no borres nada: la cuenta, el usuario de Identity Center y los presupuestos te acompañan todo el curso. Solo:
- Cierra la sesión del root y guarda sus credenciales y dispositivos MFA en un lugar seguro.
- Si en el paso 5 completaste actividades de crédito, confirma en la consola de EC2 (en todas las regiones, con EC2 Global View) y de RDS que no queda nada encendido.
- Borra en CloudShell los ficheros
presupuesto.jsonyavisos.jsonsi los creaste (rm presupuesto.json avisos.json).
Preguntas para pensar como arquitecto
1. ¿Por qué no basta con proteger bien la contraseña del root y usarlo a diario con cuidado?
Porque el root no se puede limitar con políticas de IAM (solo con SCP si es cuenta miembro), tiene acceso a la facturación y al cierre de la cuenta, y cualquier error o robo de sesión tiene un alcance total. El mínimo privilegio exige usar identidades con los permisos justos y credenciales temporales; el root queda para las tareas que solo él puede hacer.
2. Tu usuario diario tiene AdministratorAccess. ¿Qué cambiarías en una empresa real?
Tener permission sets por función (por ejemplo ReadOnlyAccess para el día a día y AdministratorAccess solo para cambios, con sesiones cortas), grupos en lugar de asignaciones individuales, una fuente de identidad corporativa (Entra ID, Okta o AD) y cuentas separadas por entorno. En la organización, SCP que impidan desactivar CloudTrail o salir de ella.
3. ¿Por qué activar Identity Center en eu-west-1 y no en eu-south-2, si vas a trabajar en España?
Porque eu-south-2 es una región opt-in: si Identity Center vive allí, cada cuenta nueva de la organización tendría que activar esa región para que el acceso funcione. Una región activada por defecto evita ese paso. Además, dónde vive Identity Center no limita en qué regiones creas recursos.
4. Un presupuesto de AWS Budgets, ¿impide que gastes más de 10 USD?
No por sí mismo: un presupuesto normal solo avisa. Para actuar hay budget actions (por ejemplo aplicar una política de IAM o una SCP que deniegue crear recursos, o parar instancias EC2 o RDS) que se disparan al superar el umbral. La experiencia de alta nueva ofrece además spend limits por proyecto, pero no aplica a una cuenta con la experiencia avanzada.