Cuando una herramienta externa necesita entrar en tu cuenta de AWS hay dos caminos. El conocido: crear un usuario IAM y darle una clave de acceso, que es una contraseña que no caduca y que puede acabar en un fichero de configuración, un repositorio o un correo. El bueno: crear un rol que la herramienta asume desde su propia cuenta de AWS. No hay clave que guardar ni filtrar; AWS entrega credenciales temporales que caducan solas, y tú puedes cortar el acceso en un segundo borrando el rol.
Para esto la herramienta tiene que soportarlo (te pedirá "acceso por rol", "cross-account role" o "ARN del rol") y darte dos datos: el número de su cuenta de AWS y un identificador externo (external ID). Con eso, en diez minutos está hecho.
Antes de empezar: qué significa cada cosa
- IAM
- El servicio de AWS que gestiona quién puede hacer qué en tu cuenta.
- Cuenta de AWS
- Cada cliente de Amazon tiene una cuenta con un número de doce dígitos. La herramienta externa tiene la suya; tú tienes la tuya.
- Clave de acceso
- El "usuario y contraseña" para programas. No caduca, y por eso es lo que esta guía evita.
- Rol
- Un conjunto de permisos que no pertenece a nadie fijo: quien está autorizado lo "asume" y recibe credenciales temporales que caducan solas.
- Asumir un rol
- Pedir a AWS esas credenciales temporales para actuar con los permisos del rol durante un rato.
- Entidad de confianza
- Quién tiene permiso para asumir el rol. Aquí, la cuenta de AWS de la herramienta externa.
- External ID (identificador externo)
- Una contraseña adicional que acompaña a la petición de asumir el rol, para que solo esa herramienta, actuando para ti, pueda usarlo.
- Política
- La lista de permisos, en formato JSON. La guía te da un ejemplo.
- ARN
- El nombre completo y único del rol (arn:aws:iam::...). Es lo que le das a la herramienta.
- CloudTrail
- El registro de todo lo que ocurre en tu cuenta de AWS: quién hizo qué y cuándo. Sirve para ver qué hace la herramienta.
Paso a paso
Reúne los datos del proveedor
Apunta el ID de cuenta de la herramienta (doce dígitos) y el external ID que te asigna, una cadena única para ti. El external ID evita el llamado "problema del ayudante confuso": que otro cliente de la misma herramienta pueda hacer que esta use tu rol. No lo compartas ni lo reutilices.
Crea la política de permisos mínimos
En la consola de IAM, Políticas, Crear política, pestaña JSON. Pega solo las acciones que la herramienta necesita; el proveedor serio te da la lista exacta. Por ejemplo, para ver y manejar máquinas Lightsail:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "lightsail:GetInstances", "lightsail:GetInstance", "lightsail:GetInstanceState", "lightsail:StartInstance", "lightsail:StopInstance", "lightsail:RebootInstance", "lightsail:GetInstanceSnapshots", "lightsail:CreateInstanceSnapshot" ], "Resource": "*" }] }Dale un nombre reconocible, como
PanelExterno-Maquinas. Si te pidenAdministratorAccess, pregunta por qué.Crea el rol con la otra cuenta como entidad de confianza
IAM, Roles, Crear rol. Tipo de entidad de confianza: Cuenta de AWS, opción Otra cuenta de AWS, y escribe el ID de cuenta del proveedor. Marca Requerir ID externo y pega el external ID. No marques "Requerir MFA": la herramienta es un programa, no una persona. Siguiente.
Adjunta la política y da nombre al rol
Busca la política que creaste en el paso 2, márcala y continúa. Nombre del rol: algo que diga para qué sirve y de quién es, por ejemplo
PanelExterno-Simplio. Revisa el resumen: la política de confianza debe mostrar la cuenta del proveedor y la condiciónsts:ExternalId. Crea el rol.Entrega el ARN del rol
Abre el rol recién creado y copia su ARN, con la forma
arn:aws:iam::123456789012:role/PanelExterno-Simplio. Es lo único que la herramienta necesita; pégalo donde te lo pida. No es un secreto en sí mismo (sin el external ID y sin estar en la cuenta de confianza no sirve de nada), pero tampoco hace falta publicarlo.Comprueba el acceso y el registro
La herramienta debería conectar al momento. Para ver qué hace, en CloudTrail, historial de eventos, filtra por el nombre del rol: cada acción que ejecute aparece con el rol como identidad. Si algún día quieres cortar el acceso, borra el rol o cambia el external ID; el efecto es inmediato en cuanto caducan las credenciales temporales en curso, que duran como máximo una hora salvo que lo hayas ampliado.
Qué puede salir mal
La herramienta dice "not authorized to perform sts:AssumeRole"
O el ID de cuenta de confianza no es el correcto, o el external ID no coincide, o la herramienta está intentando asumir el rol con otro principal del que tú has autorizado. Revisa la pestaña Relaciones de confianza del rol y compárala letra a letra con lo que te dio el proveedor.
Conecta pero le falta permiso para algo
El mensaje de AWS dice exactamente qué acción falta. Añádela a la política del paso 2; el cambio se aplica a las siguientes llamadas sin tocar el rol.
¿Y si la herramienta no soporta roles?
Entonces un usuario IAM con permisos mínimos y una clave de acceso es el plan B (tienes la guía en esta sección). Rota la clave de vez en cuando y vigila su "último uso" en IAM.
He creado el rol en la cuenta equivocada
Con varias cuentas pasa. El rol debe estar en la cuenta cuyos recursos quieres que vea la herramienta. Bórralo y créalo en la buena; el ARN cambiará, actualízalo en la herramienta.
En Simplio
Simplio admite la conexión por rol: en la ayuda te muestra el ID de cuenta de Simplio y un external ID generado para ti, y te genera la política de confianza y la de permisos marcando con casillas qué quieres permitir. Pegas el ARN del rol y listo: no hay clave que guardar, y las credenciales que Simplio pide a AWS caducan en una hora.
Lo mismo, en AWS y en Simplio
| En la consola de AWS | En Simplio | |
|---|---|---|
| Crear el rol | Política, rol, entidad de confianza, external ID, ARN: 6 pasos, 15 minutos sabiendo lo que haces | La ayuda te da la cuenta, el external ID y las dos políticas ya escritas: pegar y copiar el ARN, 3 minutos |
| Permisos justos | Conocer el nombre de cada acción | Casillas: solo ver, sin cortafuegos, sin terminal, una región |
| Revocar | Borrar el rol en IAM | Borrar la conexión en Simplio o el rol en IAM; sin claves que perseguir |