Presentamos una nueva experiencia de consola para AWS WAF
Ahora puede usar la experiencia actualizada para acceder a las funciones de AWS WAF desde cualquier parte de la consola. Para obtener más información, consulta Trabajo con la experiencia de consola actualizada.
Realizar solicitudes HTTPS a AWS WAF o Shield Advanced
Las solicitudes de AWS WAF y Shield Advanced son solicitudes HTTPS según se define en RFC 2616
URI de solicitud
La solicitud URI siempre es un signo de barra diagonal sencilla, /.
Encabezados HTTP
AWS WAF y Shield Advanced requieren que figure la siguiente información en el encabezado de una solicitud HTTP:
- Host (requerida)
Punto de conexión que especifica dónde se crean los recursos. Para obtener más información acerca de los puntos de enlace, consulte Puntos de enlace de servicio de AWS. Por ejemplo, el valor del encabezado de
Hostpara AWS WAF en una distribución de CloudFront eswaf.amazonaws.com:443.- x-amz-date o Fecha (requerida)
Fecha utilizada para crear la firma que se encuentra en el encabezado de la
Authorization. Especifique la fecha en formato estándar ISO 8601, hora UTC, tal y como se muestra en el ejemplo siguiente:x-amz-date: 20151007T174952ZDebe incluir
x-amz-dateoDate. (Algunas bibliotecas de cliente de HTTP no permiten configurar el encabezado de laDate). Cuando hay un encabezado dex-amz-date, AWS WAF ignora cualquier encabezado deDateal autenticar la solicitud.La marca temporal debe estar en el intervalo de 15 minutos de la hora del sistema AWS a la que se recibe la solicitud. En caso contrario, la solicitud falla y emite el código de error
RequestExpiredpara impedir que otra persona reproduzca sus solicitudes.- Authorization (requerida)
Información necesaria para solicitar la autenticación. Para obtener más información sobre la creación de este encabezado, consulte Autenticación de solicitudes.
- X-Amz-Target (requerida)
Concatenación de
AWSWAF_oAWSShield_, la versión de la API sin puntuación, un punto (.) y el nombre de la operación, por ejemplo:AWSWAF_20150824.CreateWebACL- Content-Type (condicional)
Especifica que el tipo de contenido es JSON, así como la versión de JSON, tal y como se muestra en el ejemplo siguiente:
Content-Type: application/x-amz-json-1.1Condición: obligatorio para las solicitudes de
POST.- Content-Length (condicional)
Longitud del mensaje (sin encabezados) de acuerdo con RFC 2616.
Condición: obligatoria si el texto de la solicitud contiene información (la mayoría de los kits de herramientas agregan este encabezado automáticamente).
A continuación, se muestra un ejemplo de un encabezado en una solicitud de HTTP para crear un paquete de protección (ACL web) en AWS WAF:
POST / HTTP/1.1 Host: waf.amazonaws.com:443 X-Amz-Date: 20151007T174952Z Authorization: AWS4-HMAC-SHA256 Credential=AccessKeyID/20151007/us-east-2/waf/aws4_request, SignedHeaders=host;x-amz-date;x-amz-target, Signature=145b1567ab3c50d929412f28f52c45dbf1e63ec5c66023d232a539a4afd11fd9 X-Amz-Target: AWSWAF_20150824.CreateWebACL Accept: */* Content-Type: application/x-amz-json-1.1; charset=UTF-8 Content-Length: 231 Connection: Keep-Alive
Cuerpo de la solicitud HTTP
Muchas acciones de AWS WAF y de Shield Advanced requieren que se incluyan datos con formato JSON en el cuerpo de la solicitud.
La siguiente solicitud de ejemplo utiliza una declaración JSON simple para actualizar una IPSet e incluir la dirección IP 192.0.2.44 (representada en notación CIDR como 192.0.2.44/32):
POST / HTTP/1.1 Host: waf.amazonaws.com:443 X-Amz-Date: 20151007T174952Z Authorization: AWS4-HMAC-SHA256 Credential=AccessKeyID/20151007/us-east-2/waf/aws4_request, SignedHeaders=host;x-amz-date;x-amz-target, Signature=145b1567ab3c50d929412f28f52c45dbf1e63ec5c66023d232a539a4afd11fd9 X-Amz-Target: AWSWAF_20150824.UpdateIPSet Accept: */* Content-Type: application/x-amz-json-1.1; charset=UTF-8 Content-Length: 283 Connection: Keep-Alive { "ChangeToken": "d4c4f53b-9c7e-47ce-9140-0ee5ffffffff", "IPSetId": "69d4d072-170c-463d-ab82-0643ffffffff", "Updates": [ { "Action": "INSERT", "IPSetDescriptor": { "Type": "IPV4", "Value": "192.0.2.44/32" } } ] }