Saltar al contenido

¿Cómo puedo solucionar el error de la política de confianza de IAM «Failed to update trust policy. Invalid principal in policy»?

6 minutos de lectura
0

Intenté editar la política de confianza de mi usuario o rol de identidad de AWS Identity and Access Management (IAM) y recibí el siguiente error: «Failed to update trust policy. Invalid principal in policy».

Breve descripción

Este mensaje de error indica que el valor de un elemento Principal en su política de IAM no es válido. Para solucionar este error, confirme lo siguiente:

  • Su política de confianza del rol de IAM utiliza valores compatibles con el formato correcto para el elemento Principall.
  • Si la política de confianza del rol de IAM utiliza usuarios o roles de IAM como entidades principales, confirme que el usuario o el rol no se eliminaron.

Nota: Si la cuenta de AWS estándar intenta agregar el número de cuenta de AWS GovCloud (EE. UU.), entonces las cuentas de AWS GovCloud (EE. UU.) también pueden recibir este error. No puede crear un rol para delegar el acceso entre una cuenta de AWS GovCloud (EE. UU.) y una cuenta de AWS estándar. Para obtener más información, consulte How difiere IAM en AWS GovCloud (EE. UU.).

Resolución

Comprobación de los valores admitidos para el elemento Principal

El elemento Entidad principal de la política de confianza de IAM de su rol debe incluir los siguientes valores admitidos.

  1. Asegúrese de que la política de IAM incluya el ID de cuenta de AWS de 12 dígitos correcto, similar al siguiente:

    "Principal":
    {"AWS": "123456789012"
    }

    Nota: También puede usar el nombre de recurso de Amazon (ARN) del usuario raíz para especificar la cuenta de AWS. Por ejemplo, arn:aws:iam::123456789012:root.

  2. Si las entidades principales de la política de confianza de IAM son usuarios, roles o usuarios federados de IAM, se debe especificar todo el ARN, como a continuación:

    "Principal":
    {  "AWS": [
        "arn:aws:iam::123456789012:user/user-name",
        "arn:aws:iam::123456789012:role/role-name",
        "arn:aws:sts::123456789012:assumed-role/role-name/role-session-name",
        "arn:aws:sts::123456789012:federated-user/user-name"
      ]
    }
  3. Si la política de confianza de IAM incluye caracteres comodín, siga estas directrices.
    Nota: No puede usar un comodín «*» para encontrar coincidencias con parte de un nombre de entidad principal o ARN. En el siguiente ejemplo se hace un uso incorrecto de un comodín en una política de confianza de IAM:

    "Principal":
    {  "AWS": "arn:aws:iam::123456789012:user/user-*"
    }

    Para usar un comodín para hacer coincidir una parte del nombre de la entidad principal, utilice un elemento Condition con la clave de condición global aws:PrincipalArn. A continuación, especifique un ARN con el comodín. Para especificar identidades de todas las cuentas de AWS, utilice un comodín similar al siguiente:

    "Principal": {
      "AWS": "*"
    }

    Importante: Puede usar un comodín en el elemento Principal con efecto Allow en una política de confianza. Sin embargo, esto permite que cualquier usuario de IAM, sesión de rol asumido o usuario federado de cualquier cuenta de AWS de la misma partición acceda a su rol. Las entidades principales del rol y el usuario de IAM de su cuenta de AWS no requieren ningún otro permiso. Las entidades principales en otras cuentas de AWS deben tener permisos identity-based para asumir su rol de IAM. Este método no permite que las entidades principales de la sesión de identidad web, de la sesión de SAML o del servicio accedan a sus recursos. Se recomienda utilizar este método solo con el elemento Condition y una clave de condición como aws:PrincipalArn para limitar los permisos. En el ejemplo siguiente de política de confianza se usa la clave de condición aws:PrincipalArn para permitir que solo los usuarios con nombres de usuario coincidentes asuman el rol de IAM:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "*"
          },
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringLike": {
              "aws:PrincipalArn": "arn:aws:iam::123456789012:user/user-*"
            }
          }
        }
      ]
    }
  4. Si su rol de IAM es un rol de servicio de AWS, se debe especificar la entidad principal del servicio en su totalidad, como a continuación:

    "Principal": {
      "Service": "ec2.amazonaws.com"
    }
  5. Puede usar entidades principales de sesión de SAML con un proveedor de identidades SAML externo para autenticar usuarios de IAM. La política de confianza del rol de IAM debe tener un elemento Principal similar al siguiente:

    "Principal": {
      "Federated": "arn:aws:iam::123456789012:saml-provider/provider-name"
    }
  6. Puede utilizar entidades principales de sesión de identidad web para autenticar usuarios de IAM. La política de confianza del rol de IAM que proporciona acceso debe tener un elemento Principal similar al siguiente:

    "Principal": {
       "Federated": "cognito-identity.amazonaws.com"
    }
  7. Si utiliza diferentes tipos de entidad principal en una sola instrucción, formatee la política de confianza de IAM como a continuación:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::123456789012:user/user-name",
            "Service": "ec2.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }

Verificación de que la política de confianza no contenga prefijos AIDA o AROA

Si su política de confianza contiene un elemento Principal con un ARN para las entidades de IAM, el ARN cambia a un ID principal único cuando se guarda. Este ID de entidad principal único tiene el prefijo AIDA para los usuarios de IAM y AROA para los roles de IAM similar al siguiente:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": [
          "AIDAW4GTDFISYQEXAMPLE",
          "AROAW4GTDFISYQEXAMPLE"
        ]
      },
      "Action": "sts:AssumeRole",
      "Condition": {}
    }
  ]
}

El ID de entidad principal único de una política basada en recursos indica que se ha eliminado el usuario o el rol de IAM. El identificador de entidad principal aparece porque AWS no puede volver a asignarlo a un ARN válido. Si edita la política de confianza, debe eliminar el ID de entidad principal o reemplazarlo por un ARN de entidad principal válido. El ARN cambia al nuevo ID único del usuario o rol después de guardar la política.

Para obtener más información, consulte ¿Por qué hay un formato de entidad principal desconocido en mi política basada en recursos de IAM?

Información relacionada

¿Cómo puedo usar AWS Identity and Access Management (IAM) para permitir el acceso de los usuarios a los recursos?

¿Cómo accedo a los recursos de otra cuenta de AWS mediante AWS IAM?