autenticación aws: iam identity center (sso) - la forma correcta en 2025
La forma correcta de autenticarte en AWS en 2025. Adiós access keys, hola credenciales temporales.
El problema con access keys
Durante años, la forma “normal” de usar AWS CLI era:
aws configure
# Access Key: AKIAIOSFODNN7EXAMPLE
# Secret Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCY...
Problemas:
- Las credenciales nunca expiran (hasta que las borres manualmente)
- Si las subes a Git por error → compromiso de seguridad grave
- Cada dev tiene credenciales diferentes → difícil de gestionar
- Cuando alguien deja la empresa, hay que borrar sus keys manualmente
AWS ya NO recomienda este método para humanos.
La solución: IAM Identity Center (SSO)
Antes se llamaba “AWS SSO”. Es el método recomendado desde 2022 y el estándar en 2025.
Ventajas:
- Credenciales temporales (expiran automáticamente cada 8-12 horas)
- Un solo login para múltiples cuentas AWS
- Integración con identity providers (Google Workspace, Okta, Azure AD)
- MFA built-in
- Cuando alguien se va, pierde acceso automáticamente
Prerequisitos
- AWS CLI v2 (v1 no soporta SSO)
- Una cuenta AWS con permisos de admin (para setup inicial)
- Browser para el login
Setup: Paso a paso
1. Habilitar IAM Identity Center
En AWS Console:
- Ve a: IAM Identity Center
- Click “Enable” (es gratis, no tiene costo)
- Confirma la región (recomendado:
us-east-1o tu región principal)
AWS creará automáticamente la infraestructura necesaria.
2. Elegir identity source
Tienes 3 opciones:
Opción A: IAM Identity Center directory (para múltiples propósitos)
- AWS crea su propio directorio
- Administras usuarios directamente en AWS
Opción B: Active Directory (para empresas con AD on-premise)
- Conecta con un AD existente
- Users y grupos se sincronizan automáticamente
Opción C: External Identity Provider (lo más común en empresas)
- Google Workspace, Okta, Azure AD, etc.
- Single Sign-On verdadero
- Ideal para: equipos que ya usan un IdP
Para este caso, usaremos la Opción A (más simple).
3. Crear primer usuario
Usando IAM Identity Center directory:
- IAM Identity Center → Users → Add user
- Completa:
Username: ed.developer Email: ed@example.com First name: Ed Last name: Dev Display name: Ed Developer - Click Add user
- Se enviará un email con link de activación
Activación usuario:
- Abrir el email
- Click en el link
- Crear password
- Configura MFA (recomendado: app authenticator como Google Authenticator)
4. Crear un grupo
Best practice: asignar permisos a grupos, no a usuarios individuales.
- IAM Identity Center → Groups → Create group
- Nombre:
Developers - Descripción:
Development team with PowerUser access - Click Create group
- Add users to group → seleccionar el usuario → Add users
5. Asignar permisos
- IAM Identity Center → AWS accounts
- Seleccionar tu cuenta AWS
- Click Assign users or groups
- Tab Groups → seleccionar
Developers - Click Next
- Permission sets → seleccionar PowerUserAccess (permite casi todo excepto IAM)
- Para admin completo:
AdministratorAccess - Para readonly:
ViewOnlyAccess
- Para admin completo:
- Click Next → Submit
El proceso toma 1-2 minutos en aplicar.
6. Obtener SSO Start URL
La “SSO Start URL” es la puerta de entrada a AWS.
- IAM Identity Center → Dashboard
- Copiar el AWS access portal URL
- Se ve así:
https://d-9067xxxxxx.awsapps.com/start
- Se ve así:
Configurar AWS CLI con SSO
Instalar AWS CLI v2
Configurar SSO profile
aws configure sso
Preguntará:
SSO session name (Recommended): my-sso
- Nombre
- Ejemplo:
work,personal,company-name
SSO start URL: https://d-9067xxxxxx.awsapps.com/start
- El que se generó del Dashboard
SSO region: us-east-1
- La región donde se habilitó IAM Identity Center
SSO registration scopes: (Enter para default)
- Dejar el default:
sso:account:access
Se abrirá el browser → autorizar el acceso → se verán las cuentas AWS disponibles.
Seleccionar:
- AWS account: cuenta (número de 12 dígitos)
- IAM role:
PowerUserAccess
De vuelta en la terminal:
CLI default client Region: us-east-1
- Región para recursos
CLI default output format: json
- Opciones:
json,yaml,text,table
CLI profile name: dev
- Nombre del profile
- Ejemplos:
dev,work,personal,default
¡Listo! El profile está configurado.
Usar SSO en el día a día
Login
# Primera vez o cuando las credenciales expiran
aws sso login --profile dev
Se abre el browser, se hace login (con MFA si aplica), y listo.
Credenciales válidas por ~8 horas. Cuando expiren, hacer nuevamente aws sso login.
Ejecutar comandos
Opción 1: Especificar profile en cada comando
aws s3 ls --profile dev
aws lambda list-functions --profile dev
Opción 2: Setear profile por defecto para la sesión
export AWS_PROFILE=dev
aws s3 ls
aws lambda list-functions
Verificar credenciales
aws sts get-caller-identity --profile dev
# Output:
# {
# "UserId": "AROAXXXXX:ed.developer",
# "Account": "123456789012",
# "Arn": "arn:aws:sts::123456789012:assumed-role/..."
# }
Logout
aws sso logout --profile dev
Múltiples profiles (trabajo + personal)
Es posible tener varios profiles configurados:
# Configurar profile de trabajo
aws configure sso
# ... seguir wizard, nombrar profile: work
# Configurar profile personal
aws configure sso
# ... seguir wizard, nombrar profile: personal
# Usar cada uno
aws s3 ls --profile work
aws s3 ls --profile personal
# O cambiar entre ellos
export AWS_PROFILE=work
aws s3 ls
export AWS_PROFILE=personal
aws s3 ls
Ver configuración
Los profiles se guardan en ~/.aws/config:
cat ~/.aws/config
Se ve así:
[profile dev]
sso_session = my-sso
sso_account_id = 123456789012
sso_role_name = PowerUserAccess
region = us-east-1
output = json
[sso-session my-sso]
sso_start_url = https://d-9067xxxxxx.awsapps.com/start
sso_region = us-east-1
sso_registration_scopes = sso:account:access
Troubleshooting común
Error: “Token has expired”
# Solución: Login de nuevo
aws sso login --profile dev
Error: “No credentials”
# Verificar que el profile existe
cat ~/.aws/config
# Asegúrarse de especificar el profile
aws s3 ls --profile dev
# O setearlo como default
export AWS_PROFILE=dev
Browser no se abre
# Usar device code flow (manual)
aws configure sso --use-device-code
Generará un código para ingresar manualmente en el browser.
”Profile not found”
# Lista profiles
aws configure list-profiles
# Reconfigura el profile
aws configure sso
Credenciales expiran muy rápido
Esto es normal (seguridad). AWS rota credenciales cada 8-12 horas.
Tip: Crear un alias:
# En .bashrc o .zshrc
alias awsl='aws sso login --profile dev'
# Ahora solo:
awsl
Cuándo SÍ usar access keys
Solo en estos casos:
1. CI/CD pipelines
GitHub Actions, GitLab CI, Jenkins, etc.
# GitHub Actions example
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-east-1
2. Aplicaciones serverless
Lambdas, ECS containers → usan IAM roles, no access keys.
Best Practices
- Siempre usar SSO para humanos
- MFA habilitado en IAM Identity Center
- Least privilege: asignar solo los permisos necesarios
- Grupos, no usuarios: permisos a nivel de grupo
- Auditar accesos: revisar logs en CloudTrail
- No compartir access keys entre personas
- No usar root account para tareas diarias
Comandos de referencia rápida
# Login SSO
aws sso login --profile dev
# Verificar identidad
aws sts get-caller-identity --profile dev
# Listar profiles
aws configure list-profiles
# Ver configuración del profile
aws configure list --profile dev
# Setear profile default para sesión actual
export AWS_PROFILE=dev
# Logout
aws sso logout --profile dev
# Reconfigurar profile
aws configure sso
Configuración avanzada
Profile con diferentes roles
# En ~/.aws/config
[profile dev]
sso_session = my-sso
sso_account_id = 111111111111
sso_role_name = PowerUserAccess
region = us-east-1
[profile dev-readonly]
sso_session = my-sso
sso_account_id = 111111111111
sso_role_name = ViewOnlyAccess
region = us-east-1
[profile prod]
sso_session = my-sso
sso_account_id = 222222222222
sso_role_name = ReadOnlyAccess
region = us-east-1
Recursos
- IAM Identity Center User Guide
- AWS CLI SSO Configuration
- IAM Security Best Practices
- AWS Organizations
TL;DR:
- Habilita IAM Identity Center
- Crea usuario/grupo
- Asigna permisos (PowerUserAccess)
aws configure ssoaws sso login --profile dev- Profit 🚀
Access keys solo para CI/CD. Para todo lo demás: SSO.