← Volver al blog
🪪 AWS Security9 min de lectura·

IAM Roles Anywhere: credenciales de AWS sin access keys

¿Tienes servidores, contenedores o pipelines fuera de AWS que necesitan acceder a servicios como S3 o DynamoDB? La respuesta tradicional eran las access keys de larga duración: cómodas, pero un riesgo enorme si se filtran. IAM Roles Anywhere te permite usar certificados X.509 para obtener credenciales temporales de AWS, eliminando los secretos permanentes.

El problema de las access keys

Una carga de trabajo on-premise necesita permisos de AWS. Lo fácil es crear un usuario IAM con AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY y ponerlas en el servidor. El problema: esas claves no expiran, suelen terminar en archivos de config o variables de entorno, y si se filtran dan acceso persistente hasta que alguien las revoque manualmente.

🚫 Las claves de larga duración son deuda de seguridad

Cada access key permanente es un secreto que hay que rotar, auditar y proteger para siempre. IAM Roles Anywhere las reemplaza por credenciales que expiran solas.

Qué es IAM Roles Anywhere

Es una capacidad de AWS IAM que extiende los roles a cargas de trabajo que viven fuera de AWS. En lugar de autenticar con una clave, la carga presenta un certificado X.509 emitido por una CA en la que tú confías. AWS valida ese certificado y, a cambio, entrega credenciales temporales de STS.

Las tres piezas clave

  • Trust Anchor: referencia a tu autoridad certificadora (CA), propia o gestionada con AWS Private CA. Define en qué certificados confía AWS.
  • Profile: define qué roles IAM se pueden asumir y qué permisos de sesión se aplican.
  • IAM Role: el rol con la política de permisos real, con una trust policy que permite al servicio rolesanywhere.amazonaws.com asumirlo.
Cuenta AWSCarga on-premX.509X.509Trust Anchor (CA)IAMProfile → RoleSTSfirmavalida contra CAautorizaemite credenciales
Componentes de IAM Roles Anywhere y la frontera de confianza con AWS.

Cómo se obtienen las credenciales

En la carga de trabajo instalas el aws_signing_helper (credential helper). Cada vez que el SDK necesita credenciales, el helper firma una petición con la clave privada del certificado y la envía a Roles Anywhere.

1Carga con certificado X.509 + clave privada2credential-helper firma la petición (SigV4)3rolesanywhere:CreateSession valida el cert4STS devuelve credenciales temporalesCargaIAMSTS
Del certificado X.509 a credenciales temporales de STS, en cuatro pasos.

Configuración típica

El credential helper se integra con el perfil de AWS CLI/SDK así:

# ~/.aws/config
[profile onprem]
credential_process = /usr/local/bin/aws_signing_helper credential-process \
  --certificate /etc/pki/workload.crt \
  --private-key /etc/pki/workload.key \
  --trust-anchor-arn arn:aws:rolesanywhere:us-east-1:111122223333:trust-anchor/xxxx \
  --profile-arn      arn:aws:rolesanywhere:us-east-1:111122223333:profile/yyyy \
  --role-arn         arn:aws:iam::111122223333:role/OnPremWorkloadRole

La trust policy del rol autoriza al servicio y puede exigir atributos del certificado:

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": { "Service": "rolesanywhere.amazonaws.com" },
    "Action": [
      "sts:AssumeRole",
      "sts:TagSession",
      "sts:SetSourceIdentity"
    ],
    "Condition": {
      "StringEquals": {
        "aws:PrincipalTag/x509Subject/CN": "workload.example.com"
      }
    }
  }]
}

Buenas prácticas

  • Emite certificados de vida corta y automatiza su renovación.
  • Usa condiciones sobre atributos del certificado (CN, OU) para acotar qué carga asume qué rol.
  • Aplica el principio de menor privilegio en la política del rol.
  • Habilita CloudTrail para auditar cada CreateSession.
  • Revoca certificados comprometidos vía CRL en el Trust Anchor.

Cuándo usarlo

IAM Roles Anywhere brilla en servidores on-premise, otras nubes, CI/CD externo o dispositivos IoT que ya gestionan una PKI. Si tu carga corre dentro de AWS (EC2, ECS, EKS, Lambda), usa roles nativos: es más simple.

En resumen

IAM Roles Anywhere lleva el modelo de roles temporales a cualquier carga con un certificado X.509 válido, eliminando las access keys permanentes. Trust Anchor, Profile y Role son las tres piezas; el credential helper hace el trabajo pesado de firmar y renovar. Menos secretos, menos superficie de ataque.