¿Cómo puedo resolver los errores HTTP 403 Prohibido al invocar mi API con la autenticación multicuenta de IAM para API Gateway?

Última actualización: 16-09-2022

Llamé a mi API de Amazon API Gateway con una entidad (usuario o rol) de AWS Identity and Access Management (IAM) multicuenta. Aparece el error HTTP 403 Prohibido. ¿Cómo soluciono este problema?

Resolución

API de REST

Para acceder a las API de REST de API Gateway, active la autenticación de IAM para un método de API en la consola de API Gateway. A continuación, use las políticas de IAM y las políticas de recursos a fin de designar los permisos para los usuarios de la API.

Asegúrese de que la entidad multicuenta de IAM tenga permisos para invocar la API y de que se le permita el acceso en la política de recursos.

En este ejemplo, la API de REST de la cuenta A 111111111 tiene habilitada la autenticación de IAM. El usuario1 intenta invocar desde la cuenta B 999999999. El usuario 1 de la cuenta B tiene adjunta la siguiente política de IAM:

}
  ]
    }
      "Resource": "arn:aws:execute-api:us-east-1:111111111:AB12CDEF34/*/*/*"
      ],
        "execute-api:ManageConnections"
        "execute-api:Invoke",
      "Action": [
      "Effect": "Allow",
    {
  "Statement": [
  "Version": "2012-10-17",
{

Para permitir que el usuario de IAM de la cuenta B en la cuenta A invoque el acceso entre cuentas, use una política de recursos similar a la siguiente:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::999999999:user/User1"
      },
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:us-east-1:111111111:AB12CDEF34/stage/*/*"
    }
  ]
}

Para más información, consulte How do I activate IAM authentication for API Gateway REST APIs? (¿Cómo activo la autenticación de IAM para las API de REST de API Gateway?)

API de HTTP

Para acceder a las API HTTP de API Gateway, puede usar la acción de la API sts:AssumeRole a fin de asumir una función para la cuenta de API HTTP. El rol asumido proporciona credenciales de seguridad temporales que se pueden usar para invocar la API HTTP en otra cuenta.

Asegúrese de que las credenciales de seguridad temporales utilizadas para invocar la API HTTP sean correctas y no hayan caducado.

Para más información, consulte ¿Cómo puedo proporcionar autorización de IAM entre cuentas para las API HTTP de API Gateway?


API Gateway resource policy examples (Ejemplos de políticas de recursos de API Gateway)

Activate IAM authentication for API Gateway Rest APIs (¿Cómo activo la autenticación de IAM para las API de REST de API Gateway?)

¿Le resultó útil este artículo?


¿Necesita asistencia técnica o con la facturación?