¿Qué cubriremos??
En esta guía, veremos cómo usar el permiso "IAM Passrole". Como ejemplo específico, veremos cómo conectar una instancia de EC2 con el cubo S3 utilizando el permiso de PasRrole.
Términos y conceptos importantes
Rol de servicio de AWS: Es un papel asumido por 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 de EC2: Es un papel asumido por una aplicación que se ejecuta en una instancia de Amazon EC2 para realizar las tareas en la cuenta de usuario que está permitido por este rol.
Rol ligado al servicio de AWS: Es un papel predefinido y directamente adjunto a un servicio de AWS, como el papel ligado al servicio RDS para lanzar un RDS DB.
Usar el permiso de PasRrole para conectar una instancia de EC2 con S3
Muchos servicios de AWS necesitan un papel para la configuración y este rol es transmitido/administrado a ellos por el usuario. De esta manera, los servicios asumen/toman el rol y realizan las tareas en nombre del usuario. Para la mayoría de los servicios, el rol debe aprobarse una vez mientras configura ese servicio. Un usuario requiere permisos para transmitir un rol a un servicio de AWS. Esto es algo bueno desde un punto de vista de seguridad, ya que los administradores pueden controlar qué usuarios pueden transmitir un rol a un servicio. Un usuario le otorga el permiso de "pasajero" a su usuario, rol o grupo de IAM para transmitir un rol a un servicio de AWS.
Para elaborar el concepto anterior, considere un caso cuando una aplicación que se ejecuta en una instancia de EC2 requiere un acceso al cubo S3. Para esto, podemos adjuntar un rol de IAM con esta instancia para que esta aplicación obtenga el permiso S3 definido en el rol. Esta aplicación necesitará las credenciales temporales para fines de autenticación y autorización. EC2 obtiene credenciales de seguridad temporales cuando un rol se asocia con la instancia que ejecuta nuestra aplicación. Estas credenciales se ponen a disposición de nuestra aplicación para acceder a S3.
Para otorgar a un usuario de IAM la capacidad de transmitir un papel al servicio EC2 al momento de lanzar una instancia, necesitamos tres cosas:
Hagámoslo de una manera más pragmática. Tenemos un usuario de IAM con un permiso limitado. Luego adjuntamos una política en línea para lanzar las instancias de EC2 y el permiso para pasar un rol de IAM a un servicio. Luego, creamos un papel para el acceso S3; Llamémoslo "s3access". Y adjuntarle una política de IAM. En este rol, solo permitimos la lectura de los datos S3 utilizando la política de "Amazons3readonlyaccess" administrada AWS.
Pasos para crear el papel
Paso 1. Desde la consola IAM del administrador (root), haga clic en "rol" y luego seleccione "Crear rol".
Paso 2. De la página "Seleccionar entidad de confianza", seleccione "Servicio AWS" bajo el "Tipo de entidad de confianza".
Paso 3. En el "caso de uso", seleccione el botón de radio correspondiente al "EC2" para los "Casos de uso para otros servicios de AWS":
Etapa 4. En la página siguiente, asigne una política de "Amazons3readonlyaccess":
Paso 5. Dé un nombre a su papel ("S3Access" en nuestro caso). Agregue una descripción para este rol. La siguiente política de confianza se crea automáticamente con este rol:
"Versión": "2012-10-17",
"Declaración": [
"Efecto": "Permitir",
"Acción": [
"STS: Asumerole"
],
"Principal":
"Servicio": [
"EC2.amazonaws.com "
]
]
Paso 6. Haga clic en "Crear rol" para crear el rol:
Política de IAM para usuario
Esta política ofrece al usuario IAM permisos de EC2 y permiso para asociar el papel de "S3Access" con la instancia.
Paso 1. Desde la consola IAM, haga clic en las políticas y luego 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": [
"Efecto": "Permitir",
"Acción": ["EC2:*"],
"Recurso":"*"
,
"Efecto": "Permitir",
"Acción": "Iam: Passrole",
"Resource": "ARN: AWS: IAM :: Account_id: rol/s3Access"
]
Reemplace el texto en negrita "ID de la cuenta"Con la ID de cuenta de usuario.
Paso 3. (Opcional) Dé etiquetas para su política.
Etapa 4. Pon un nombre adecuado para la política ("IAM-USER-POLICY" en nuestro caso) y haga clic en el botón "Crear política" y adjuntar esta política a su usuario de IAM.
Adjuntar el papel de "S3Access" a la instancia de EC2
Ahora, adjuntaremos este papel a nuestra instancia. Seleccione su instancia de la consola EC2 y vaya a "Acción> Seguridad> Modificar el rol de IAM". En la nueva página, seleccione el papel "S3Access" en el menú desplegable y guárdelo.
Verificación de la configuración
Ahora, verificaremos si nuestra instancia de EC2 puede acceder a nuestro cubo S3 creado por el administrador. Inicie sesión en la instancia de EC2 e instale la aplicación AWS CLI. Ahora, ejecute el siguiente comando en esta instancia de EC2:
$ AWS S3 LS
Nuevamente, ejecute el comando anterior desde la cuenta IAM configurada en su máquina local. Notará que el comando se ejecuta correctamente en la instancia de EC2, pero recibimos un error de "acceso denegado" en la máquina local:
El error es obvio porque solo hemos otorgado el permiso de acceso S3 para la instancia de EC2 pero no para el usuario de IAM y para cualquier otro servicio de AWS. Otra cosa importante a tener en cuenta es que no hicimos el balde y sus objetos accesibles públicamente.
Conclusión
En esta guía, demostramos cómo usar el permiso de transacción en AWS. Logramos con éxito conectar el EC2 a S3. Es un concepto muy importante si le importa otorgar los menores privilegios a sus usuarios de IAM.