Qué es el permiso PassRole en AWS y cómo utilizarlo

Muchos proveedores de servicios en la nube ofrecen un servicio IAM como medida de control del acceso a los recursos en la nube. Determina quién está autentificado y autorizado para acceder a estos recursos. Las identidades de AWS IAM consisten en usuarios, grupos y roles.

En esta guía nos centraremos específicamente en los roles IAM. Esta identidad IAM es igual que un usuario IAM en el sentido de que podemos adjuntarle políticas IAM. Estas políticas determinan el alcance del nivel de permisos de esta identidad. A diferencia de un usuario IAM, que está asociado a un único usuario y tiene credenciales a largo plazo, los roles siguen una estrategia diferente. Tienen credenciales de seguridad temporales y son asumidas/tomadas por otros que las necesitan. Los usuarios normales, las aplicaciones o los servicios que no tienen permiso de acceso a tus recursos de AWS, asumen los roles para obtener este acceso.

¿Qué veremos aquí?

En este tutorial aprenderás a utilizar el permiso «IAM Passrole». También mostraremos un ejemplo sencillo sobre cómo conectar una instancia EC2 con un bucket S3 privado utilizando este concepto.

¿Qué es el permiso Passrole?

Al configurar muchos servicios de AWS, el usuario/administrador debe pasar un rol a ese servicio. A continuación, el servicio asume ese rol para realizar las acciones que están permitidas dentro de ese rol. En la mayoría de los casos, el rol se pasa al servicio sólo una vez mientras se configura el servicio y no cada vez que el rol es asumido por el servicio.

Un usuario debe tener derechos para pasar un rol a un servicio. Este es un aspecto de seguridad fuerte, ya que sólo los usuarios autorizados pueden pasar un rol al servicio. Además, los administradores pueden controlar qué tipo de rol puede pasar un usuario al servicio.

Demostración del permiso Passrole

Vamos a avanzar en este concepto con un ejemplo práctico. En esta demostración, tenemos un bucket S3, una instancia EC2 y una aplicación que se ejecuta en esta instancia que es la propia AWS CLI. Queremos configurar un rol que permita a nuestra aplicación que se ejecuta en la instancia EC2 acceder a nuestro bucket S3. Tenemos que crear el rol de tal manera que sólo el EC2 obtenga el permiso para acceder a S3 pero no cualquier otro servicio AWS del usuario. Para ello, nuestra aplicación debe tener credenciales temporales de autenticación y autorización para acceder a S3. Habrás notado que al lanzar la instancia EC2, se nos pide que seleccionemos un rol IAM, es este rol el que proporciona estas credenciales temporales a nuestra instancia EC2. Nuestra aplicación que se ejecuta en la instancia EC2 recuperará estas credenciales para acceder al cubo S3.

Un usuario IAM puede pasar un rol al servicio EC2, en el momento de lanzar la instancia, utilizando las tres entidades siguientes:

  1. Primero tenemos que crear y adjuntar una política a nuestro rol que decidirá el límite de permisos o el alcance de nuestro rol IAM.
  2. A continuación, una política de confianza asociada a este rol que, básicamente, permitirá al servicio de AWS (EC2 en nuestro caso) tomar/asumir el rol y utilizar los permisos listados con el rol.
  3. Por último, una política de permisos IAM, asociada con el usuario IAM que le permite pasar los roles que está autorizado a pasar.

Crear el rol

En esta sección crearemos un rol llamado ‘EC2S3Access’ y le adjuntaremos una política ‘AmazonS3ReadOnlyAccess’:

Paso 1. Dirígete al panel de control de IAM desde la cuenta de administrador o root y selecciona «Roles» en la opción de gestión de acceso. Haz clic en el botón «Crear rol».

Paso 2. En la sección «Seleccionar entidad de confianza», verás la opción «Tipo de entidad de confianza» y «Caso de uso». Para la primera, selecciona la opción «Servicio AWS» y para la segunda, la opción «EC2».

Selecciona la entidad de confianza

Paso 3. En la siguiente sección ‘Añadir permisos’, adjuntaremos una política ‘S3ReadOnlyAccess’ y luego haremos clic en ‘Siguiente’:

Añadir la política al papel.

Paso 4. Aquí introduce un nombre para el rol:’EC2S3Access’ y una descripción opcional para el mismo. Ten en cuenta que se adjuntará automáticamente una política de confianza con este rol:

{

«Versión»: «2012-10-17»,

«Declaración»: [

{

«Efecto»: «Permitir»,

«Acción»: [

«sts:AsumirRol»

],

«Principal»: {

«Servicio»: [

«ec2.amazonaws.com»

]

}

}

]

}

Paso 5. Por último, haz clic en el botón «Crear rol» para crear el rol anterior:

Detalles de la función

Añadir política IAM para el usuario IAM

Hasta ahora hemos creado un rol y le hemos adjuntado una política y también hemos conseguido una política de confianza. Ahora crearemos una política para el propio usuario IAM. En esta política daremos permiso al usuario para el acceso completo a EC2 y también para asociar el rol ‘EC2S3Access’ anterior a nuestra instancia EC2.

Paso 1. Nuevamente dirígete al panel de control de IAM desde la cuenta de administrador o root y selecciona «Políticas» y haz clic en el botón «Crear política».

Paso 2. En el asistente de creación de políticas, haz clic en la pestaña json y simplemente pega el siguiente código json para esta política

{

«Versión»: «2012-10-17»,

«Declaración»: [{

«Efecto»: «Permitir»,

«Acción»:[«ec2:*»],

«Recurso»: «*»

},

{

«Efecto»: «Permitir»,

«Acción»: «iam:PassRole»,

«Recurso»: «arn:aws:iam::IAM_User_ID:role/EC2S3Access»

}]

}

En este código, sustituye «IAM_User_ID» por el número de cuenta o ID del usuario IAM y «EC2S3Access» por el nombre del rol en tu caso. Haz clic en «Siguiente:Etiquetas».

Paso 3. Especifica las «Etiquetas» opcionales que quieras utilizar y haz clic en «Siguiente:Revisión»:

Paso 4. Aquí pon un nombre para esta política(‘iam_user_policy’ en nuestro caso) y finalmente haz clic en el botón ‘Crear política’ para crear esta política:

Creación de la política IAM para el usuario IAM

Paso 5. Adjunta la política creada anteriormente al usuario IAM:

Adjuntar la política IAM al usuario IAM

Adjuntar el rol a la instancia

Como nuestro rol está listo y el usuario IAM está vinculado con la política requerida, es el momento de adjuntar este rol (‘EC2S3Access’) a la instancia EC2.

Nota: Se puede adjuntar un rol a una instancia mientras se lanza y también a una instancia en funcionamiento.

En nuestro caso, la instancia EC2 ya está en marcha, así que navega a la consola de EC2 y selecciona la instancia de destino. Selecciona ‘Acción > Seguridad > Modificar rol IAM’. Selecciona la opción «EC2S3Access» en el menú desplegable de la nueva página y haz clic en «Guardar» para continuar:

Adjuntar el rol a la instancia

Probando la configuración

Si todo se ha configurado correctamente, nuestra instancia EC2 debería poder acceder a un bucket S3. Primero crea un bucket S3 desde la cuenta de administrador. A continuación, inicia sesión en la instancia EC2 de destino y luego instala y configura la aplicación aws cli para el usuario IAM con la ‘user-iam-policy’. Desde un terminal en la instancia ejecuta el siguiente comando de listado de S3:

$ aws s3 ls

Para verificar de forma cruzada si el permiso Passrole funciona, ejecuta el mismo comando desde el mismo usuario IAM configurado en una máquina diferente. Esta vez es de esperar que encuentres que estamos obteniendo un error de accesibilidad debido a un permiso limitado:

Probar la configuración

El error anterior se ha producido porque sólo hemos dado el permiso de acceso de S3 a la instancia de EC2 configurada con la ‘iam_user_policy’, pero no hemos dado ese permiso a ningún otro servicio de AWS del usuario IAM.

Nota:El bucket y sus objetos no son de acceso público.

Conclusión

En esta guía hemos aprendido a utilizar el permiso PassRole para dar el menor privilegio a un usuario de AWS IAM. Hemos mostrado cómo conectar una instancia EC2 a un bucket S3.

También te podría gustar...