¿Cómo puedo solucionar los errores de acceso denegado al invocar las API de API Gateway con una política basada en recursos?

4 minutos de lectura
0

Recibo un error de acceso denegado al invocar una operación de la API de Amazon API Gateway con una política de recursos.

Resolución

Siga estos pasos de solución de problemas para su operación de API Gateway pública o privada.

Operaciones de API públicas

1.    Compruebe si la operación de la API tiene una política de recursos que permita o bloquee la solicitud en función de las direcciones IP. Si no tiene configurado el registro de acceso, configure el registro de acceso para API Gateway. Los registros de acceso contienen las direcciones IP de origen de las operaciones de la API. Asegúrese de que la dirección IP no esté en la lista de denegaciones. La dirección IP o el rango CIDR deben permitir explícitamente el acceso en la política de recursos.

Ejemplo de política de recursos que solo permite tres direcciones IP:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:<region>:<account_number>:<api_id>/*"
        },

        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:<region>:<account_number>:<api_id>/*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": [
                        "52.36.146.106",
                        "34.216.36.206/32",
                        "205.251.233.179/32"
                    ]
                }
            }
        }
    ]
}

Ejemplo de política de recursos que bloquea dos direcciones IP:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
                "arn:aws:execute-api:<region>:<account_number>:<api_id>/*"
            ]
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": [
               "arn:aws:execute-api:<region>:<account_number>:<api_id>/*"
            ],
            "Condition" : {
                "IpAddress": {
                    "aws:SourceIp": ["52.36.146.106", "34.216.36.206/32" ]
                }
            }
        }
    ]
}

2.    El método HTTP (GET, POST) y el recurso API Gateway (/,/foo,/foo/bar) para la solicitud de la API deben permitir el acceso de forma explícita. Compruebe el atributo de política de recursos similar al siguiente:

"Resource": [
               "arn:aws:execute-api:<region>:<account_number>:<api_id>/<stage>/<http_method>/<resource_path_specifier>/*"
            ],

3.    Compruebe si la política de recursos utiliza otros tipos de métodos de autenticación o autorizadores. La evaluación de la política de recursos de API Gateway se ve afectada por el tipo de autenticación. Los ejemplos de tipos de autenticación incluyen un autorizador de AWS Lambda o una autenticación de Amazon Cognito. Asegúrese de que la política de recursos se encuentre configurada correctamente para el tipo de autenticación definido para su API.

4.    Asegúrese de volver a implementar su solicitud de API para que todos los cambios surtan efecto. Para volver a implementar su solicitud de API, repita los pasos a fin de implementar una API de REST en una etapa.

5.    Si utiliza un ejemplo de política de recursos de API Gateway, asegúrese de haber configurado todas las variables para su entorno.

6.    Si su política de recursos solo permite el acceso dentro de las direcciones IP de Amazon Virtual Private Cloud (Amazon VPC), realice una de las siguientes acciones:

Permita el acceso a la dirección IP del enrutador y a la dirección IP de NAT Gateway (dirección IP pública) en su política de recursos.

De forma alternativa, haga lo siguiente:

Cambie el punto de conexión de la API pública por un punto conexión de la API privada.

Operaciones de API privadas

1.    Si la política de recursos tiene un punto de conexión de Amazon VPC, compruebe la clave de condición en la política. Si la política de recursos usa la clave de condición aws:SourceVpce, su valor debe ser el ID de punto de conexión de Amazon VPC, no el ID de VPC. Si la política de recursos usa la clave de condición aws:SourceVpc, su valor debe ser el ID de Amazon VPC, no el ID del punto de conexión de VPC.

Para comprobar el tipo de punto de conexión, abra la consola de Amazon VPC, seleccione Endpoints (Puntos de conexión) y, a continuación, elija su punto de conexión.

2.    Asegúrese de volver a implementar su solicitud de API para que todos los cambios surtan efecto. Para volver a implementar su solicitud de API, repita los pasos a fin de implementar una API de REST en una etapa.

3.    Si utiliza un ejemplo de política de recursos de API Gateway, asegúrese de configurar todas las variables para su entorno.

4.    El método HTTP (GET, POST) y el recurso API Gateway (/,/foo,/foo/bar) para la solicitud de la API deben permitir el acceso de forma explícita. Compruebe el atributo de política de recursos similar al siguiente:

"Resource": [
               "arn:aws:execute-api:<region>:<account_number>:<api_id>/<stage>/<http_method>/<resource_path_specifier>/*"
            ],

5.    Compruebe si la política de recursos utiliza otros tipos de métodos de autenticación o autorizadores. La evaluación de la política de recursos de API Gateway se ve afectada por el tipo de autenticación. Los ejemplos de tipos de autenticación incluyen un autorizador de AWS Lambda o una autenticación de Amazon Cognito. Asegúrese de que la política de recursos se encuentre configurada correctamente para el tipo de autenticación definido para su API.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año