Solucionar problemas de roles de IAM - AWS Identity and Access Management

Solucionar problemas de roles de IAM

Utilice la información que se indica aquí para diagnosticar y solucionar los problemas comunes que puedan surgir cuando trabaje con roles de IAM.

No puedo asumir un rol

Compruebe lo siguiente:

  • Para permitir que los usuarios vuelvan a asumir el rol actual dentro de una sesión de rol, especifique el ARN del rol o el ARN de la Cuenta de AWS como entidad principal en la política de confianza de rol. Los Servicios de AWS que proporcionan recursos de computación, como Amazon EC2, Amazon ECS, Amazon EKS y Lambda, brindan credenciales temporales y las actualizan automáticamente. Esto garantiza que siempre disponga de un conjunto de credenciales válido. Para estos servicios, no es necesario volver a asumir el rol actual a fin de obtener credenciales temporales. Sin embargo, si tiene la intención de aprobar etiquetas de sesión o una política de sesión, tendrá que volver a asumir el rol actual. Para obtener información sobre cómo modificar una política de confianza de roles a fin de agregar el ARN del rol o el ARN de la Cuenta de AWS para la entidad principal, consulte Actualizar una política de confianza de rol .

  • Cuando asume un rol utilizando AWS Management Console, asegúrese de utilizar el nombre exacto de su rol. Los nombres de rol distinguen entre mayúsculas y minúsculas al asumir un rol.

  • Cuando asume un rol utilizando API de AWS STS o AWS CLI, asegúrese de utilizar el nombre exacto de su rol en el ARN. Los nombres de rol distinguen entre mayúsculas y minúsculas al asumir un rol.

  • Compruebe que la política de IAM le concede permisos para llamar a sts:AssumeRole para el rol que desea asumir. El elemento Action de su política de IAM debe permitir llamar a la acción AssumeRole. Además, el elemento Resource de la política de IAM debe especificar el rol que desea asumir. Por ejemplo, el elemento Resource puede especificar un rol utilizando el nombre de recurso de Amazon (ARN) o un comodín (*). Por ejemplo, al menos una política aplicable a usted debe conceder permisos similares a los siguientes:

    "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::account_id_number:role/role-name-you-want-to-assume"
  • Compruebe que su identidad de IAM se etiqueta con las etiquetas que la política de IAM requiere. Por ejemplo, en los siguientes permisos de políticas, el elemento Condition requiere que usted, como principal que solicita asumir el rol, tenga una etiqueta específica. Debe ser etiquetados con department = HR o department = CS. De lo contrario, no puede asumir el rol. Para obtener más información sobre el etiquetado de usuarios y roles de IAM, consulte Etiquetas para recursos de AWS Identity and Access Management.

    "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "*", "Condition": {"StringEquals": {"aws:PrincipalTag/department": [ "HR", "CS" ]}}
  • Compruebe que cumple todas las condiciones que se especifican en la política de confianza del rol. Una Condition puede especificar una fecha de vencimiento, un ID externo o que una solicitud debe proceder de unas direcciones IP determinadas. Considere el siguiente ejemplo: si la fecha actual es posterior a la fecha especificada, entonces la política nunca coincidirá y no podrá concederle el permiso para asumir el rol.

    "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::account_id_number:role/role-name-you-want-to-assume" "Condition": { "DateLessThan" : { "aws:CurrentTime" : "2016-05-01T12:00:00Z" } }
  • Compruebe que la Cuenta de AWS desde la que está llamando a AssumeRole es una entidad de confianza para el rol que va a tomar. Las entidades de confianza se definen como Principal en la política de confianza del rol. El siguiente ejemplo es una política de confianza que está asociada a la función que desea asumir. En este ejemplo, el ID de la cuenta con el usuario de IAM con el que ha iniciado sesión debe ser 123456789012. Si el número de cuenta no está incluido en el elemento Principal de la política de confianza del rol, no se puede asumir el rol. No importa los permisos que le otorguen las políticas de acceso. Tenga en cuenta que esta política de ejemplo limita los permisos a acciones que se producen entre el 1 de julio de 2017 y el 31 de diciembre de 2017 (UTC), ambos incluidos. Si inicia sesión antes o después de dichas fechas, entonces la política no coincidirá y no podrá asumir el rol.

    "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "sts:AssumeRole", "Condition": { "DateGreaterThan": {"aws:CurrentTime": "2017-07-01T00:00:00Z"}, "DateLessThan": {"aws:CurrentTime": "2017-12-31T23:59:59Z"} }
  • Identidad de fuente: los administradores pueden configurar roles para requerir que las identidades pasen una cadena personalizada que identifique a la persona o aplicación que está realizando acciones en AWS, llamados Identidad de fuente. Compruebe si el rol que se asume requiere que se establezca una identidad de fuente. Para obtener más información acerca de las identidades de fuente, consulte Monitorear y controlar las acciones realizadas con roles asumidos.

Un nuevo rol ha aparecido en la cuenta de AWS

Algunos servicios de AWS exigen que utilice un tipo único de rol de servicio vinculado directamente al servicio. El servicio define previamente este rol vinculado al servicio e incluye todos los permisos que el servicio requiere. Esto simplifica la configuración de un servicio porque ya no tendrá que añadir manualmente los permisos necesarios. Para obtener información general acerca de los roles vinculados a servicios, consulte Creación de un rol vinculado al servicio.

Es posible que ya esté utilizando un servicio cuando este comience a admitir roles vinculados a servicios. De ser así, es posible que reciba un mensaje de correo electrónico informándole de un nuevo rol en su cuenta. Este rol incluye todos los permisos que el servicio necesita para realizar acciones en su nombre. No es necesario realizar ninguna acción para admitir este rol. Sin embargo, no debe eliminar el rol de su cuenta. Si lo hace, podría eliminar los permisos que el servicio necesita para obtener acceso a los recursos de AWS. Puede consultar los roles vinculados a servicios en su cuenta en cualquier momento a través de la página de Roles de IAM de la consola de IAM. Los roles vinculados con servicios aparecen con el texto (Service-linked role (Función vinculada al servicio)) en la columna Trusted entities (Entidades de confianza) de la tabla.

Para obtener información sobre los servicios que admiten roles vinculados a servicios, consulte Servicios de AWS que funcionan con IAM y busque los servicios que tengan Yes (Sí)en la columna Service-Linked Role (Rol vinculado al servicio). Para obtener más información acerca del uso de roles vinculados a servicios en un servicio, elija el enlace Yes (Sí).

No logro editar o eliminar un rol en mi Cuenta de AWS

No es posible eliminar ni editar los permisos de un rol vinculado a un servicio desde IAM. Estos roles incluyen permisos y políticas de confianza predefinidos exigidos por el servicio para poder realizar acciones en su nombre. Puede utilizar la consola IAM, la AWS CLI o la API para editar solo la descripción de un rol vinculado a un servicio. Puede consultar los roles vinculados a servicios en su cuenta en cualquier momento a través de la página de Roles de IAM de la consola. Los roles vinculados con servicios aparecen con el texto (Service-linked role (Función vinculada al servicio)) en la columna Trusted entities (Entidades de confianza) de la tabla. Un banner en la página Summary (Resumen) del rol también indica que es un tipo de rol vinculado a un servicio. Puede administrar y eliminar estos roles vinculados únicamente a través del servicio vinculado, si dicho servicio admite esa acción. Tenga cuidado a la hora de modificar o eliminar roles vinculados a servicios, ya que podría eliminar permisos que el servicio necesita para acceder a los recursos de AWS.

Para obtener información sobre los servicios que admiten roles vinculados a servicios, consulte Servicios de AWS que funcionan con IAM y busque los servicios que tengan Yes (Sí)en la columna Service-Linked Role (Rol vinculado al servicio).

No estoy autorizado a realizar la operación: iam: PassRole

Si crea un rol vinculado a un servicio, debe disponer 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á el siguiente error:

ClientError: An error occurred (AccessDenied) when calling the PutLifecycleHook operation: User: arn:aws:sts::111122223333:assumed-role/Testrole/Diego is not authorized to perform: iam:PassRole on resource: arn:aws:iam::111122223333:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling

Para solucionar este error, pida al administrador que añada el permiso iam:PassRole para usted.

Para saber qué servicios admiten roles vinculados a servicios, consulte Servicios de AWS que funcionan con IAM. Para saber si un servicio crea automáticamente una función vinculada al servicio por usted, haga clic en el enlace Yes (Sí) para consultar la documentación relacionada con las funciones vinculadas a servicios.

¿Por qué no puedo asumir un rol con una sesión de 12 horas? (AWS CLI o API de AWS)

Cuando se utiliza la API de AssumeRole* de AWS STS o las operaciones de CLI assume-role* para asumir un rol, es posible especificar un valor para el parámetro DurationSeconds. Puede especificar un valor comprendido entre 900 segundos (15 minutos) y la duración máxima de la sesión para el rol. Si especifica un valor superior al indicado en esta opción, la operación producirá un error. Este ajuste puede tener un valor máximo de 12 horas. Por ejemplo, si especifica una duración de 12 horas para la sesión, pero el administrador establece la duración máxima de la sesión en 6 horas, la operación genera un error. Para obtener información sobre cómo ver el valor máximo para el rol, consulte Actualizar la duración máxima de la sesión para un rol.

Si utiliza el encadenamiento de roles (en el que se usa un rol para asumir otro), la sesión tendrá una duración máxima de una hora. Si utiliza a continuación el parámetro DurationSeconds para proporcionar un valor superior a una hora, la operación generará un error.

Recibo un error cuando intento cambiar de rol en la consola de IAM

La información que introduzca en la página Cambiar rol debe coincidir con la información del rol. De lo contrario, la operación falla y recibirá el siguiente error:

Invalid information in one or more fields. Check your information or contact your administrator.

Si recibe este error, confirme que la siguiente información es correcta:

  • ID de cuenta o alias: El ID de la Cuenta de AWS es un número de 12 dígitos. Es posible que su cuenta tenga un alias, que es un identificador descriptivo, como el nombre de su empresa, que se puede utilizar en lugar de su ID de Cuenta de AWS. Puede utilizar el ID de cuenta o el alias en este campo.

  • Nombre de rol – Los nombres de rol distinguen entre mayúsculas y minúsculas. El Id. de cuenta y el nombre del rol deben coincidir con la configuración del rol.

Si continúa recibiendo un mensaje de error, póngase en contacto con el administrador para verificar la información anterior. La política de confianza de rol o la política de usuario de IAM pueden limitar el acceso. El administrador puede verificar los permisos de estas directivas.

Mi función tiene una política que me permite realizar una acción, sin embargo, obtengo "acceso denegado"

Puede que su sesión de función se vea limitada por las políticas de la sesión. Al solicitar las credenciales de seguridad temporales mediante programación utilizando AWS STS, tiene la opción de pasar las políticas de sesión administradas o insertadas. Las políticas de sesión son políticas avanzadas que se pasan como parámetro cuando se crea una sesión de credenciales temporal mediante programación para un rol. Puede transferir un único documento de política de sesión insertada JSON utilizando el parámetro Policy. Puede utilizar el parámetro PolicyArns para especificar hasta 10 políticas de sesión administrada. Los permisos de la sesión resultantes son la intersección de las políticas basadas en identidades del rol y las políticas de la sesión. De manera alternativa, si el administrador o un programa personalizado le proporcionan credenciales temporales, es posible que hayan incluido una política de sesión para limitar su acceso.

El servicio no creó la versión de directiva predeterminada del rol

Un rol de servicio es un rol que asume funciones para realizar acciones en su cuenta en su nombre. Al configurar algunos de los entornos de los servicios de AWS, debe definir un rol que el servicio asumirá. En algunos casos, el servicio crea la función de servicio y su política de IAM para usted. Aunque puede modificar o eliminar la función de servicio y su política desde dentro de IAM, AWS no lo recomienda. El rol y la directiva están pensados para su uso exclusivo de ese servicio. Si edita la directiva y configura otro entorno, cuando el servicio intenta utilizar el mismo rol y la misma directiva, la operación puede fallar.

Por ejemplo, cuando se utiliza AWS CodeBuild por primera vez, el servicio crea un rol denominado codebuild-RWBCore-service-role. Ese rol de servicio utiliza la directiva denominada codebuild-RWBCore-managed-policy. Si edita la directiva, creará una nueva versión y la guardará como la versión predeterminada. Si realiza una operación posterior en AWS CodeBuild, el servicio podría intentar actualizar la directiva. Si lo hace, recibirá el siguiente error:

codebuild.amazon.com did not create the default version (V2) of the codebuild-RWBCore-managed-policy policy that is attached to the codebuild-RWBCore-service-role role. To continue, detach the policy from any other identities and then delete the policy and the role.

Si recibe este error, debe realizar cambios en IAM antes de poder continuar con la operación de servicio. En primer lugar, establezca la versión de directiva predeterminada en V1 e intente la operación de nuevo. Si V1 se eliminó anteriormente, o si V1 no funciona, limpie y elimine la política y el rol existentes.

Para obtener más información sobre la edición de directivas administradas, consulte Edición de políticas administradas por el cliente (Consola). Para obtener más información acerca de las versiones, consulte Control de versiones de políticas de IAM.

Para eliminar un rol de servicio y su directiva
  1. Inicie sesión en la AWS Management Console y abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación, seleccione Policies (Políticas).

  3. En la lista de políticas, seleccione el nombre de la política que desea ver.

  4. Seleccione la pestaña Entidades asociadas para ver qué usuarios, grupos o roles de IAM utilizan esta política. Si alguna de estas identidades utiliza la directiva, complete las siguientes tareas:

    1. Cree una nueva directiva administrada con los permisos necesarios. Para asegurarse de que las identidades tienen los mismos permisos antes y después de las acciones, copie el documento de directiva JSON de la directiva existente. Después, cree la nueva política administrada y pegue el documento JSON tal y como se explica en Creación de políticas mediante el editor JSON.

    2. Para cada identidad afectada, adjunte la nueva directiva y, a continuación, desconecte la anterior. Para obtener más información, consulte Adición y eliminación de permisos de identidad de IAM.

  5. Seleccione Roles en el panel de navegación.

  6. En la lista de roles, elija el nombre del rol que desea eliminar.

  7. Seleccione la ficha Relaciones de confianza para ver qué entidades pueden asumir el rol. Si aparece alguna entidad distinta del servicio, complete las siguientes tareas:

    1. Cree un nuevo rol que confíe en esas entidades.

    2. La política que creó en el paso anterior. Si omitió ese paso, cree ahora la nueva directiva administrada.

    3. Notifique a cualquier persona que esté asumiendo el rol que ya no puede hacerlo. Proporcione información acerca de cómo asumir el nuevo rol y tener los mismos permisos.

  8. Elimine la directiva.

  9. Elimine el rol.

No hay ningún caso de uso para un rol de servicio en la consola

Algunos servicios requieren que cree de forma manual un rol de servicio con el fin de otorgar los permisos de servicio para realizar acciones en su nombre. Si el servicio no aparece en la consola de IAM, debe agregarlo manualmente como la entidad principal de confianza. Si la documentación del servicio o de la característica que utiliza no incluye las instrucciones para agregarlo como la entidad principal de confianza, envíe comentarios sobre la página.

Para crear manualmente un rol de servicio, debe conocer la entidad principal de servicio para el servicio que asumirá la función. Un principal de servicio es un identificador que se utiliza para conceder permisos a un servicio. El servicio define la entidad principal de servicio.

Puede encontrar la entidad principal de algunos servicios comprobando lo siguiente:

  1. Abra Servicios de AWS que funcionan con IAM.

  2. Compruebe si el servicio tiene la palabra Yes (Sí) en la columna Service-linked roles (Roles vinculados al servicio).

  3. Seleccione el vínculo para ver la documentación acerca del rol vinculado a servicios para ese servicio.

  4. Consulte la sección de permisos de rol vinculados a servicios de ese servicio para ver la entidad principal del servicio.

Puede crear manualmente un rol de servicio mediante los comandos de la AWS CLI o de las operaciones de la API de AWS. Para crear manualmente una función de servicio mediante la consola de IAM, realice las siguientes tareas:

  1. Cree un rol de IAM con su ID de cuenta. No asocie ninguna política ni otorgue ningún permiso. Para obtener más información, consulte Crear un rol para delegar permisos a un usuario de IAM.

  2. Abra el rol y edite la relación de confianza. En lugar de confiar en la cuenta, el rol debe confiar en el servicio. Por ejemplo, actualice el siguiente elemento de la Principal:

    "Principal": { "AWS": "arn:aws:iam::123456789012:root" }

    Cambie la entidad principal por el valor de su servicio, como IAM.

    "Principal": { "Service": "iam.amazonaws.com" }
  3. Agregue los permisos que requiere el servicio asociando políticas de permisos al rol.

  4. Regrese al servicio que requiere los permisos y utilice el método documentado para notificar al servicio acerca del nuevo rol de servicio.