Concesión de permisos a un usuario para transferir un rol a un servicio de AWS - AWS Identity and Access Management

Concesión de permisos a un usuario para transferir un rol a un servicio de AWS

Para configurar muchos servicios de AWS, es necesario transferir un rol de IAM al servicio. Esto permite al servicio asumir posteriormente el rol y ejecutar acciones en su nombre. Únicamente tiene que transferir el rol al servicio una vez durante la configuración y no cada vez que el servicio asume el rol. Por ejemplo, suponga que tiene una aplicación que se ejecuta en una instancia Amazon EC2. Dicha aplicación requiere credenciales temporales para la autenticación, así como permisos para realizar acciones en AWS. Cuando configure la aplicación, debe transferir un rol a EC2 para que lo utilice con la instancia que proporciona dichas credenciales. Puede definir los permisos de las aplicaciones que se ejecutan en la instancia asociando una política de IAM al rol. La aplicación asume el rol cada vez que necesita realizar las acciones que este permite.

Para transferir un rol (y sus permisos) a un servicio de AWS, un usuario debe tener permisos para transferir el rol al servicio. Esto ayuda a los administradores a garantizar que solo los usuarios autorizados puedan configurar un servicio con un rol que concede permisos. Para permitir a un usuario transferir un rol a un servicio de AWS, debe conceder el permiso PassRole al usuario, rol o grupo de IAM del usuario.

nota

No puede limitar los permisos para pasar una función basándose en las etiquetas adjuntas a dicha función mediante la clave de condición ResourceTag/key-name. Para obtener más información, consulte Control del acceso a los recursos de AWS.

Si crea un rol vinculado a un servicio, debe disponer también de permiso para transferir ese rol al servicio. Algunos servicios crean automáticamente un rol vinculado a un servicio en su cuenta al realizar una acción en dicho servicio. Por ejemplo, Amazon EC2 Auto Scaling crea el rol vinculado a un servicio AWSServiceRoleForAutoScaling automáticamente la primera vez que se crea un grupo de Auto Scaling. Si intenta crear un grupo de Auto Scaling sin el permiso PassRole, recibirá un error. Para saber qué servicios admiten roles vinculados a servicios, consulte Servicios de AWS que funcionan con IAM. Para saber qué servicios crean automáticamente un rol vinculado a un servicio al realizar una acción en ellos, elija el enlace Yes (Sí) y consulte la documentación relacionada con los roles vinculados a dicho servicio.

Un usuario puede pasar un ARN de rol como parámetro en cualquier operación de API que use el rol para asignar permisos al servicio. A continuación, el servicio comprueba si ese usuario tiene el permiso iam:PassRole. Para que el usuario transfiera únicamente los roles autorizados, puede filtrar el permiso iam:PassRole con el elemento Resources de la instrucción de política de IAM.

Ejemplo 1

Imagine que desea conceder a un usuario la capacidad de transferir cualquier conjunto de roles al servicio de Amazon EC2 al ejecutar una instancia. Necesita tres elementos:

  • Una política de permisos de IAM asociada al rol que determina lo que puede hacer dicho rol. Limite los permisos a únicamente las acciones que deba llevar a cabo el rol y únicamente los recursos que el rol necesite para dichas acciones. Puede utilizar la política de permisos de IAM creada por el cliente o administrada por AWS.

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "A list of the permissions the role is allowed to use" ], "Resource": [ "A list of the resources the role is allowed to access" ] } }
  • Una política de confianza para el rol que permita al servicio asumir dicho rol. Por ejemplo, puede adjuntar la siguiente política de confianza al rol con la acción UpdateAssumeRolePolicy. Esta política de confianza permite a Amazon EC2 utilizar el rol y los permisos asociados al rol.

    { "Version": "2012-10-17", "Statement": { "Sid": "TrustPolicyStatementThatAllowsEC2ServiceToAssumeTheAttachedRole", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } }
  • Una política de permisos de IAM asociada al usuario de IAM que permita al usuario transferir únicamente los roles que se han aprobado. iam:PassRole normalmente va acompañado de iam:GetRole de modo que el usuario puede obtener los detalles del rol que se transfiere. En este ejemplo, el usuario puede pasar únicamente los roles que existen en la cuenta especificada con nombres que empiezan por EC2-roles-for-XYZ-:

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "arn:aws:iam::<account-id>:role/EC2-roles-for-XYZ-*" }] }

Ahora el usuario puede iniciar una instancia Amazon EC2 con un rol asignado. Las aplicaciones que se ejecutan en la instancia pueden acceder a credenciales temporales para el rol a través de los metadatos del perfil de instancia. Las políticas de permisos asociadas al rol determinan lo que puede hacer la instancia.

Ejemplo 2

Amazon Relational Database Service (Amazon RDS) admite una característica denominada Monitorización mejorada. Esta característica permite a Amazon RDS monitorizar una instancia de base de datos mediante un agente. También permite a Amazon RDS registrar métricas en Amazon CloudWatch Logs. Para habilitar esta característica, debe crear un rol de servicio para otorgar a Amazon RDS permisos para monitorizar y escribir métricas en los logs.

Para crear un rol para la monitorización mejorada de Amazon RDS

  1. Inicie sesión en la Consola de administración de AWS y abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. Elija Roles y después Create Role (Crear rol).

  3. Elija el tipo de rol de AWS Service (Servicio de AWS) y, a continuación, elija el servicio Amazon RDS Role for Enhanced Monitoring (Rol de Amazon RDS para monitorización mejorada). A continuación, elija Next: Permissions.

  4. Elija la política de permisos AmazonRDSEnhancedMonitoringRole.

  5. Elija Next: Tags (Siguiente: Etiquetas).

  6. (Opcional) Añadir metadatos al rol asociando las etiquetas como pares de clave-valor. Para obtener más información acerca del uso de etiquetas en IAM, consulte Etiquetado de usuarios y roles de IAM.

  7. Elija Next: Review.

  8. En Role name (Nombre del rol), escriba un nombre de rol que le sea útil para identificar el propósito de este rol. Los nombres de rol deben ser únicos en su cuenta de AWS. No se distingue por caso. Por ejemplo, no puede crear funciones denominado tanto PRODROLE y prodrole. Dado que varias entidades pueden hacer referencia al rol, no puede editar el nombre del rol después de crearlo.

  9. (Opcional) En Role descripción, escriba una descripción para la nueva función.

  10. Revise el rol y, a continuación, seleccione Create role.

Automáticamente, el rol recibe una política de confianza que otorga los permisos de servicio monitoring.rds.amazonaws.com para asumir el rol. Después, Amazon RDS podrá realizar todas las acciones que permite la política AmazonRDSEnhancedMonitoringRole.

El usuario para el que desea habilitar la monitorización ampliada necesita una política que incluya una instrucción que permita al usuario transferir el rol, como la siguiente. Utilice el número de cuenta y sustituya el nombre del rol por el nombre que ha facilitado en el paso 3:

{ "Sid": "PolicyStatementToAllowUserToPassOneSpecificRole", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam:::role/RDS-Monitoring-Role" }

Puede combinar esta instrucción con instrucciones de otra política o colocarla en su propia política. En lugar de especificar que el usuario pueda transferir cualquier rol que empieza por RDS-, puede sustituir el nombre del rol en el ARN del recurso por un comodín, por ejemplo:

"Resource": "arn:aws:iam:::role/RDS-*"