¿Cómo puedo solucionar el error de la política de confianza de IAM «Failed to update trust policy. Invalid principal in policy»?
Se muestra el error «Failed to update trust policy. Invalid principal in policy.» cuando intento editar la política de confianza para mi rol de AWS Identity and Access Management (IAM) con la Consola de administración de AWS.
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 Entidad principal.
- Si la política de confianza del rol de IAM utiliza identidades de IAM (usuarios, grupos de usuarios y roles) como entidades principales, confirme que no se haya eliminado el usuario o el rol.
Nota: Las cuentas de AWS GovCloud (EE. UU.) también pueden recibir este error si la cuenta de AWS estándar intenta agregar el número de cuenta de AWS GovCloud (EE. UU.). 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 IAM Differs for AWS GovCloud (US).
Solución
Comprobación de los valores admitidos para el elemento Principal
El elemento 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: La cuenta de AWS también se puede especificar con el nombre de recurso de Amazon (ARN) del usuario raíz. 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 hacer coincidir una parte del nombre de la entidad principal con un comodín, 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. Por ejemplo, el archivo puede tener un aspecto similar al siguiente:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:PrincipalArn": "arn:aws:iam::123456789012:user/user-*" } } } ] }
En este ejemplo 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.
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 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" } ] }
El usuario o rol de IAM debe ser una identidad existente
Si la política de confianza del rol de IAM utiliza usuarios o roles de IAM como entidades principales, confirme que esas identidades de IAM no se hayan eliminado. El error «Invalid principal in policy» se produce si modifica la política de confianza de IAM y se ha eliminado la entidad principal.
Nota: Si se ha eliminado la entidad principal, anote el ID único de la entidad principal en la política de confianza de IAM, no el ARN.
Información relacionada
¿Cómo accedo a los recursos de otra cuenta de AWS mediante AWS IAM?
¿Por qué hay un formato de entidad principal desconocida en mi política basada en recursos de IAM?
Contenido relevante
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 3 años