Al intentar asumir un rol de AWS Identity and Access Management (IAM) entre cuentas, pero recibo un error similar al siguiente: «An error occurred (AccessDenied) when calling the AssumeRole operation:» o bien «Invalid information in one or more fields. Check your information or contact your administrator.»
Solución
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Troubleshoot AWS CLI errors. Además, asegúrese de utilizar la versión más reciente de la AWS CLI.
Para asumir el rol de IAM entre cuentas, primero edite los permisos de la cuenta que asumió el rol de IAM. A continuación, edite la política de confianza de la otra cuenta de AWS que permite asumir el rol de IAM.
En el siguiente ejemplo hay dos cuentas: una denominada Account_Bob y la otra Account _Alice. También hay un usuario o rol de IAM denominado Bob en Account_Bob y un rol de IAM denominado Alice en Account_Alice. En este escenario, Bob asumirá el rol de IAM denominado Alice.
Para usar la llamada a la API AssumeRole entre varias cuentas o entre cuentas de AWS, debe tener una política de confianza para conceder permisos para asumir roles.
Ejemplos de permisos necesarios para Bob:
{ "Version": "2012-10-17",
"Statement": [
{
"Sid": "PermissionToAssumeAlice",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::Account_Alice:role/Alice"
}
]
}
Ejemplo de política de confianza necesaria para Alice:
{ "Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNT_Bob:user/Bob"
},
"Action": "sts:AssumeRole"
}
]
}
Ejemplo de comando de AWS CLI para asumir un rol de IAM entre cuentas:
aws sts assume-role --role-arn "arn:aws:iam::123456789012:role/example-role" --role-session-name assume-cross-account
Para obtener más información, consulte ¿Cómo puedo asumir un rol de IAM mediante la AWS CLI?
Para evitar errores al asumir un rol de IAM entre cuentas, asegúrese de seguir estas prácticas recomendadas para su caso de uso:
- El rol que asume, Bob, debe tener permisos para la acción de la API AssumeRole.
- Debe iniciar sesión en la cuenta de AWS como Bob. Para obtener más información, consulte Uso de un alias para su ID de Cuenta de AWS.
- El rol que se está asumiendo, Alice, debe existir. Asegúrese de que no se haya eliminado y de que el nombre de recurso de Amazon (ARN) esté configurado correctamente.
- Si utiliza el encadenamiento de roles, asegúrese de no utilizar las credenciales de IAM de una sesión anterior. Para obtener más información, consulte la sección Encadenamiento de roles en Términos y conceptos de roles.
- Si Account_Bob forma parte de una organización de AWS Organizations, es posible que haya una política de control de servicio (SCP) que limite el acceso AssumeRole con Account_Bob o Account_Alice. Asegúrese de editar o eliminar la SCP que limita el acceso con Account_Bob o Account_Alice. Para obtener más información, consulte SCPs.
Información relacionada
¿Cómo puedo obtener datos para ayudar a solucionar errores de acceso de permiso denegado o no autorizado de IAM?
Cambiar de usuario a rol de IAM (consola)
Cambiar a un rol de IAM (AWS CLI)