DEV Community

Cover image for IAM Roles Anywhere: Usa credenciales de AWS fuera de la nube
Brian
Brian

Posted on

IAM Roles Anywhere: Usa credenciales de AWS fuera de la nube

Cuando trabajamos con AWS, es común utilizar IAM Roles para gestionar permisos de forma segura dentro de la infraestructura en la nube. Sin embargo, ¿qué pasa cuando queremos acceder a los recursos de AWS desde servidores on-premises, otras nubes o dispositivos locales sin usar claves de acceso estáticas?

Aquí es donde entra en juego IAM Roles Anywhere, una solución que nos permite aprovechar la gestión de identidades y accesos de AWS fuera de AWS sin comprometer la seguridad.


¿Qué es IAM Roles Anywhere?

IAM Roles Anywhere es un servicio que permite a sistemas fuera de AWS asumir roles de IAM sin necesidad de usar credenciales a largo plazo (como claves de acceso y secretos). En su lugar, se basa en certificados firmados por una Autoridad de Certificación (CA) de AWS Private CA o una CA de confianza propia.

Básicamente, IAM Roles Anywhere extiende el uso de IAM roles más allá de la nube de AWS, permitiendo que servidores, aplicaciones y dispositivos autenticados obtengan credenciales temporales para interactuar con los servicios de AWS.


¿Por qué usar IAM Roles Anywhere?

Si gestionas infraestructura híbrida o necesitas acceder a recursos de AWS desde fuera de su ecosistema, este servicio ofrece varias ventajas:

  • Seguridad mejorada → Elimina la necesidad de almacenar credenciales a largo plazo.

  • Menos gestión de claves → Usa certificados en lugar de Access Keys, reduciendo riesgos.

  • Compatibilidad con infraestructuras híbridas → Perfecto para servidores on-premises o en otras nubes.

  • Gestión centralizada de permisos → Se integran con políticas de IAM estándar.

Sin esta solución, muchas organizaciones terminan almacenando credenciales estáticas en servidores externos, lo que representa un riesgo de seguridad si esas claves son comprometidas.


¿Cómo funciona IAM Roles Anywhere?

El servicio se basa en cuatro componentes principales:

  1. AWS Private CA o CA Externa → Emite certificados para autenticar entidades externas.

  2. Profile → Define qué IAM roles puede asumir una entidad autenticada.

  3. IAM Roles → Los mismos roles de AWS con permisos definidos por políticas de IAM.

  4. Trust Anchor → Una CA registrada en IAM Roles Anywhere que verifica la identidad de los certificados.

Cuando un servidor o aplicación externa quiere obtener credenciales temporales, el flujo es el siguiente:

  • Se autentica con su certificado ante IAM Roles Anywhere.

  • Si el certificado es válido y la entidad tiene un profile asignado, se le otorgan credenciales temporales.

  • Con esas credenciales, puede interactuar con servicios de AWS como si estuviera dentro de la nube.

Obtén más información sobre IAM Roles Anywhere aquí.


Ejemplo práctico: Acceder a AWS S3 desde un servidor on-premises

Supongamos que tenemos un servidor on-premises que necesita acceder a un bucket de Amazon S3 sin utilizar credenciales estáticas.

1️⃣ Configurar una Autoridad de Certificación (CA) en AWS

Si no tienes una CA privada en AWS, puedes crear una con AWS Private CA:

aws acm-pca create-certificate-authority \
    --certificate-authority-configuration file://ca-config.json \
    --tags Key=Name,Value=MyPrivateCA
Enter fullscreen mode Exit fullscreen mode

Luego, obtenemos el ARN de la CA para registrarla en IAM Roles Anywhere como Trust Anchor.

aws acm-pca list-certificate-authorities
Enter fullscreen mode Exit fullscreen mode

2️⃣ Crear un Trust Anchor en IAM Roles Anywhere

aws iam-rolesanywhere create-trust-anchor \
    --name MyTrustAnchor \
    --source "sourceType=AWS_ACM_PCA,sourceArn=arn:aws:acm-pca:REGION:ACCOUNT_ID:certificate-authority/CA_ID"
Enter fullscreen mode Exit fullscreen mode

3️⃣ Crear un Profile y asociarlo a un IAM Role

aws iam-rolesanywhere create-profile \
    --name MyIAMProfile \
    --role-arns "arn:aws:iam::ACCOUNT_ID:role/MyIAMRole"
Enter fullscreen mode Exit fullscreen mode

Este Profile permitirá que las entidades autenticadas asuman el rol MyIAMRole.

4️⃣ Obtener credenciales temporales desde el servidor on-premises

En el servidor on-premises, instalamos el agente de IAM Roles Anywhere:

sudo yum install -y aws-signing-helper
Enter fullscreen mode Exit fullscreen mode

Ahora usamos el certificado para autenticarnos y obtener credenciales temporales:

aws_signing_helper credential-process \
    --certificate /path/to/certificate.pem \
    --private-key /path/to/private-key.pem \
    --trust-anchor-arn arn:aws:rolesanywhere:REGION:ACCOUNT_ID:trust-anchor/TRUST_ANCHOR_ID \
    --profile-arn arn:aws:rolesanywhere:REGION:ACCOUNT_ID:profile/PROFILE_ID \
    --role-arn arn:aws:iam::ACCOUNT_ID:role/MyIAMRole
Enter fullscreen mode Exit fullscreen mode

Si todo está configurado correctamente, obtendremos credenciales temporales que podemos usar para acceder a AWS S3:

export AWS_ACCESS_KEY_ID="ACCESS_KEY"
export AWS_SECRET_ACCESS_KEY="SECRET_KEY"
export AWS_SESSION_TOKEN="SESSION_TOKEN"

aws s3 ls s3://my-bucket-name
Enter fullscreen mode Exit fullscreen mode

Conclusión

IAM Roles Anywhere es una solución clave para entornos híbridos, ya que permite extender la seguridad y gestión de permisos de AWS más allá de la nube, sin depender de credenciales estáticas.

Si trabajas con servidores on-premises o infraestructura multicloud, esta herramienta te ayudará a mantener la seguridad y escalabilidad sin complicaciones.

¿Ya has probado IAM Roles Anywhere? ¡Cuéntame tu experiencia en los comentarios! 👇🏻

Top comments (0)