Cómo usar el permiso AWS IAM PassRole

En AWS, un rol de IAM es una identidad de AWS como un usuario de IAM. El servicio AWS IAM es un servicio muy complicado que puede generar posibles problemas de seguridad si se configura incorrectamente. Están vinculados a políticas que deciden lo que esa identidad puede y no puede hacer. No está atado a una sola persona, sino que puede ser adoptado por cualquiera que lo necesite. En lugar de credenciales a largo plazo (contraseña o token de acceso) como un usuario de IAM, un rol de IAM tiene credenciales de seguridad temporales. Cuando un usuario, una aplicación o un servicio necesita acceder a los recursos de AWS para los que no tiene permisos, utiliza o asume un rol específico para tal fin. A continuación, se utilizan credenciales de seguridad temporales para esta tarea.

Contenidos

¿Qué cubriremos?

Esta guía le muestra cómo usar el permiso IAM Passrole. Como ejemplo concreto, veremos cómo conectar una instancia EC2 al depósito S3 utilizando el permiso Passrole.

Términos y conceptos importantes

Rol de servicio de AWS: Es un rol que asume un servicio para que pueda realizar las tareas en nombre del usuario o titular de la cuenta.
Rol de servicio de AWS para una instancia EC2: Este es un rol asumido por una aplicación que se ejecuta en una instancia de Amazon EC2 para realizar las tareas en la cuenta de usuario permitida por este rol.
Rol vinculado al servicio de AWS: es un rol predefinido y adjunto directamente a un servicio de AWS, como el rol vinculado al servicio de RDS para iniciar una base de datos de RDS.

Uso del permiso de contraseña para conectar una instancia EC2 a S3

Muchos servicios de AWS requieren que se configure un rol y el usuario les asigna/administra ese rol. De esta forma, los servicios asumen el rol y realizan las tareas en nombre del usuario. Para la mayoría de los servicios, el rol debe pasarse una vez al configurar ese servicio. Un usuario necesita permisos para pasar un rol a un servicio de AWS. Esto es bueno por razones de seguridad, ya que los administradores pueden controlar qué usuarios pueden pasar un rol a un servicio. Un usuario otorga el permiso PassRole a su usuario, rol o grupo de IAM para pasar un rol a un servicio de AWS. Para profundizar en el concepto anterior, considere un caso en el que una aplicación que se ejecuta en una instancia EC2 necesita acceso al depósito S3. Para ello, podemos asignar un rol de IAM a esta instancia, otorgando a esta aplicación el permiso S3 definido en el rol. Esta aplicación necesita las credenciales temporales para fines de autenticación y autorización. EC2 obtiene credenciales de seguridad temporales al asociar un rol a la instancia que ejecuta nuestra aplicación. Luego, estas credenciales se proporcionan a nuestra aplicación para acceder a S3. Para permitir que un usuario de IAM transfiera un rol al servicio EC2 al lanzar una instancia, necesitamos tres cosas:

  1. Una política de permisos de IAM para el rol que define el alcance del rol.
  2. Una política de confianza adjunta al rol que permite que EC2 asuma el rol y use los permisos definidos en el rol.
  3. Una política de permisos de IAM para el usuario de IAM, que enumera los roles que pueden propagar.

Seamos más pragmáticos. Tenemos un usuario de IAM limitado. Luego, adjuntamos una política en línea para lanzar las instancias EC2 y permitir que se pase un rol de IAM a un servicio. Luego creamos un rol para el acceso a S3; llamémoslo «S3Access». Y agregue una política de IAM. En esta función, solo permitimos la lectura de los datos de S3 con la política «AmazonS3ReadOnlyAccess» administrada por AWS.

Pasos para crear el rol

Paso 1. En la consola IAM del administrador (raíz), haga clic en Rol y luego seleccione Crear rol. Paso 2. En la página Seleccionar entidad de confianza, en Tipo de entidad de confianza, seleccione Servicio de AWS. Paso 3. En Caso de uso, seleccione el botón de radio correspondiente a EC2 para Casos de uso para otros servicios de AWS:

Paso 4. En la página siguiente, asigne una política AmazonS3ReadOnlyAccess:

Paso 5. Asigne un nombre a su función (en nuestro caso, «S3Access»). Agregue una descripción para este rol. Este rol crea automáticamente la siguiente política de confianza: { «Versión»: «2012-10-17», «Declaración»: [        {            «Effect»: «Allow»,            «Action»: [                «sts:AssumeRole»            ]»Servicio al cliente»: [                    «ec2.amazonaws.com»                ] } } ]} Paso 6. Haga clic en Crear rol para crear el rol:

Política de IAM para usuarios

Esta política otorga al usuario de IAM permisos EC2 completos y permiso para asociar el rol S3Access con la instancia. Paso 1. En la consola de IAM, haga clic en Políticas y luego haga clic en Crear políticas. Paso 2. En la nueva página, seleccione la pestaña json y pegue el siguiente código: { «Versión»: «2012-10-17», «Declaración»: [{    «Effect»:»Allow»,    «Action»:[«ec2:*»]»Ressource»:»*» }, { «Effect»:»Permitir», «Acción»:»iam:PassRole», «Resource»:»arn:aws:iam::Account_ID:role/S3Access» }]} Reemplazar el texto en negrita «ID de la cuenta‘ con el ID de la cuenta de usuario. Paso 3. (Opcional) Especifique etiquetas para su política. Paso 4. Ingrese un nombre apropiado para la política (en nuestro caso, «Política de usuario de IAM»), haga clic en el botón «Crear política» y adjunte esta política a su usuario de IAM.

Adjunte el rol S3Access a la instancia EC2

Ahora agreguemos este rol a nuestra instancia. Seleccione su instancia en la consola de EC2 y vaya a Acción > Seguridad > Cambiar rol de IAM. En la nueva página, seleccione el rol «S3Access» del menú desplegable y guárdelo.

Verificación de la instalación

Ahora, verifiquemos si nuestra instancia EC2 puede acceder a nuestro depósito S3 creado por el administrador. Inicie sesión en la instancia EC2 e instale la aplicación AWS CLI. Ahora ejecute el siguiente comando en esta instancia EC2: Ejecute el comando anterior nuevamente desde la cuenta de IAM configurada en su computadora local. Notará que el comando se ejecutó correctamente en la instancia EC2, pero la máquina local recibió un error de «Acceso denegado»:

El error es obvio ya que solo otorgamos permiso de acceso S3 a la instancia EC2 pero no al usuario de IAM y otros servicios de AWS. Otro punto importante es que no hemos hecho que el depósito y sus objetos sean de acceso público.

Conclusión

En esta guía, mostramos cómo usar el permiso PassRole en AWS. Hemos logrado conectar con éxito el EC2 al S3. Es un concepto muy importante si desea otorgar privilegios mínimos a sus usuarios de IAM.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.