Solución de problemas IAM y Amazon EC2 - AWS Identity and Access Management

Solución de problemas IAM y Amazon EC2

Utilice la información que se indica aquí para diagnosticar y solucionar los problemas de acceso denegado u otros problemas que puedan surgir cuando trabaje con Amazon EC2 e IAM.

Cuando intento lanzar una instancia, no veo el rol que esperaba en la lista rol de IAM de la consola de Amazon EC2.

Compruebe lo siguiente:

  • Si ha iniciado sesión como usuario de IAM, verifique que tenga permiso para llamar a ListInstanceProfiles. Para obtener información sobre los permisos necesarios para trabajar con roles, consulte "Permisos necesarios para utilizar roles con Amazon EC2" en Uso de un rol de IAM para conceder permisos a aplicaciones que se ejecutan en instancias Amazon EC2. Para obtener información sobre cómo añadir permisos a un usuario, consulte Administración de políticas de IAM.

    Si no puede modificar sus propios permisos, debe ponerse en contacto con un administrador que pueda trabajar con IAM para actualizar los permisos.

  • Si ha creado un rol utilizando IAM la CLI o una API, verifique que haya creado un perfil de instancia y que haya añadido el rol a dicho perfil de instancias. Además, si el rol y el perfil de instancias tienen un nombre diferente, no verá el nombre de rol correcto en la lista de roles de IAM de la consola de Amazon EC2. La lista Rol de IAM de la consola de Amazon EC2 establece una lista de los nombres de perfiles de instancia, pero no de los nombres de rol. Tendrá que seleccionar el nombre del perfil de instancia que contiene el rol que desea. Para obtener más información acerca de los perfiles de instancia, consulte Uso de perfiles de instancia.

    nota

    Si utiliza la consola de IAM para crear roles, no es necesario que trabaje con perfiles de instancias. Por cada rol que cree en la consola de IAM, se creará un perfil de instancias con el mismo nombre que el rol, y este se agregará automáticamente a dicho perfil de instancias. Un perfil de instancias puede contener un único rol de IAM y este límite no se puede aumentar.

Las credenciales de mi instancia tienen un rol erróneo.

La función del perfil de instancia podría haber sido reemplazada recientemente. En caso afirmativo, la aplicación tendrá que esperar a la siguiente rotación de credenciales programada automáticamente para que las credenciales de la función estén disponibles.

Para forzar el cambio, debe desvincular el perfil de instancia y, a continuación, asociar el perfil de instancia, o bien puede detener la instancia y después reiniciarla.

Cuando intento llamar a AddRoleToInstanceProfile, recibo el error AccessDenied.

Si realiza las solicitudes como usuario de IAM, compruebe que los siguientes permisos se cumplan:

  • iam:AddRoleToInstanceProfile con el recurso que coincide con el ARN del perfil de instancia (por ejemplo, arn:aws:iam::999999999999:instance-profile/ExampleInstanceProfile).

Para obtener más información acerca de los permisos necesarios para trabajar con roles, consulte la sección sobre cómo comenzar en Uso de un rol de IAM para conceder permisos a aplicaciones que se ejecutan en instancias Amazon EC2. Para obtener información sobre cómo añadir permisos a un usuario, consulte Administración de políticas de IAM.

Amazon EC2: cuando intento lanzar una instancia con un rol, obtengo un error AccessDenied

Compruebe lo siguiente:

  • Lance una instancia sin un perfil de instancia; Esto le servirá para asegurarse de que el problema se limita a los roles de IAM para instancias Amazon EC2.

  • Si realiza las solicitudes como usuario de IAM, compruebe que los siguientes permisos se cumplan:

    • ec2:RunInstances con un recurso de comodín ("*")

    • iam:PassRole con el recurso que coincide con el ARN del rol (por ejemplo, arn:aws:iam::999999999999:role/ExampleRoleName)

  • Llame a la acción GetInstanceProfile de IAM para asegurarse de que está utilizando un nombre de perfil de instancias válido o un ARN de perfil de instancias válido. Para obtener más información, consulte Uso roles de IAM con instancia de Amazon EC2.

  • Llame a la acción GetInstanceProfile de IAM para asegurarse de que el perfil de instancias tenga un rol. Los perfiles de instancia vacíos darán un error AccessDenied. Para obtener más información sobre cómo crear un rol, consulte Creación de roles de IAM.

Para obtener más información acerca de los permisos necesarios para trabajar con roles, consulte la sección sobre cómo comenzar en Uso de un rol de IAM para conceder permisos a aplicaciones que se ejecutan en instancias Amazon EC2. Para obtener información sobre cómo añadir permisos a un usuario, consulte Administración de políticas de IAM.

No puedo obtener acceso a las credenciales de seguridad temporales de mi instancia EC2.

Para acceder a las credenciales de seguridad temporales en la instancia EC2, primero debe utilizar la consola de IAM para crear un rol. A continuación, debe lanzar una instancia EC2 que utilice ese rol y examinar la instancia en ejecución. Para obtener más información, consulte la sección How Do I Get Started? (¿Cómo comenzar?) en Uso de un rol de IAM para conceder permisos a aplicaciones que se ejecutan en instancias Amazon EC2.

Si sigue sin poder acceder a sus credenciales de seguridad temporales en la instancia EC2, compruebe lo siguiente:

  • ¿Puede obtener acceso a otra parte del Servicio de metadatos de la instancia (IMDS)? Si no puede, compruebe que el firewall no tenga reglas que bloqueen el acceso a las solicitudes al IMDS.

    [ec2-user@domU-12-31-39-0A-8D-DE ~]$ GET http://169.254.169.254/latest/meta-data/hostname; echo
  • ¿Existe el subárbol iam del IMDS? De lo contrario, verifique que su instancia tenga un perfil de instancia de IAM asociado. Para ello, llame a la operación de la API DescribeInstances de EC2 o utilice el comando de la CLI aws ec2 describe-instances.

    [ec2-user@domU-12-31-39-0A-8D-DE ~]$ GET http://169.254.169.254/latest/meta-data/iam; echo
  • Consulte el documento info del subárbol de IAM por si hay un error. Si detecta un error, consulte ¿Qué significan los errores del documento info en el subárbol de IAM? para obtener más información.

    [ec2-user@domU-12-31-39-0A-8D-DE ~]$ GET http://169.254.169.254/latest/meta-data/iam/info; echo

¿Qué significan los errores del documento info en el subárbol de IAM?

El documento iam/info indica "Code":"InstanceProfileNotFound"

Su perfil de instancias de IAM se ha eliminado y Amazon EC2 ya no puede proporcionar credenciales a su instancia. Debe asociar un perfil de instancias válido a la instancia de Amazon EC2.

Si existe un perfil de instancia con ese nombre, compruebe que el perfil de instancia no se haya eliminado y que no se haya creado otro con el mismo nombre:

  1. Llame a la operación IAM de GetInstanceProfile para obtener el InstanceProfileId.

  2. Llame a la operación Amazon EC2 de DescribeInstances para obtener el IamInstanceProfileId de la instancia.

  3. Compruebe que el InstanceProfileId de la operación de IAM coincida con el IamInstanceProfileId de la operación de Amazon EC2.

Si los ID son diferentes, el perfil de instancia asociado a sus instancias ya no es válido. Debe asociar un perfil de instancia válido a la instancia.

El documento iam/info indica una operación correcta, pero también indica "Message":"Instance Profile does not contain a role..."

Se ha eliminado el rol del perfil de instancias mediante la acción RemoveRoleFromInstanceProfile de IAM. Puede utilizar la acción AddRoleToInstanceProfile de IAM para adjuntar un rol al perfil de instancias. La aplicación tendrá que esperar hasta la siguiente actualización programada para obtener acceso a las credenciales del rol.

Para forzar el cambio, debe desvincular el perfil de instancia y, a continuación, asociar el perfil de instancia, o bien puede detener la instancia y después reiniciarla.

El documento iam/security-credentials/[role-name] indica "Code":"AssumeRoleUnauthorizedAccess"

Amazon EC2 no tiene permiso para asumir el rol. El permiso para asumir el rol se controla mediante la política de confianza asociada al rol, como en el ejemplo siguiente. Utilice la API UpdateAssumeRolePolicy de IAM para actualizar la política de confianza.

{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"Service": ["ec2.amazonaws.com"]},"Action": ["sts:AssumeRole"]}]}

La aplicación tendrá que esperar hasta la siguiente actualización programada automáticamente para obtener acceso a las credenciales del rol.

Para forzar el cambio, debe desvincular el perfil de instancia y, a continuación, asociar el perfil de instancia, o bien puede detener la instancia y después reiniciarla.