Presentamos una nueva experiencia de consola para AWS WAF
Ahora puede usar la experiencia actualizada para acceder a las AWS WAF funciones desde cualquier parte de la consola. Para obtener más información, consulte Trabajar con la consola.
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Interpolación dinámica de etiquetas
La interpolación dinámica de etiquetas le permite incrustar valores de etiqueta directamente en los encabezados de solicitud personalizados, los encabezados de respuesta personalizados y los cuerpos de respuesta personalizados mediante la sintaxis. ${namespace:}
AWS WAF En el momento de la evaluación, compara cada marcador de posición con las etiquetas adjuntas a la solicitud, por lo que no es necesario escribir una regla independiente para cada valor de etiqueta.
La interpolación funciona dentro de la AWS WAF API existente sin nuevos campos ni pasos de configuración. La sintaxis de los marcadores de posición se utiliza en los valores de cadena existentes. Los valores de encabezado estático existentes siguen funcionando sin cambios. La interpolación solo se activa cuando un valor contiene ${namespace:} cláusulas.
Dónde se admite la interpolación
Puede utilizar la ${namespace:} interpolación en las siguientes ubicaciones:
-
Encabezados de solicitud personalizados: inserte los valores de etiqueta resueltos en los encabezados que se envíen a su origen. Usa la
${namespace:}sintaxis del campo de valores del encabezado. -
Cuerpos de respuesta personalizados: incrusta valores de etiquetas y etiquetas sintéticas en páginas de bloques, páginas de desafíos y otras respuestas personalizadas. Usa la
${namespace:}sintaxis del campo de contenido del cuerpo de la respuesta. -
Encabezados de respuesta personalizados: inserte valores de etiqueta en los encabezados de respuesta, por ejemplo, en un
Locationencabezado para redireccionamientos. Usa la${namespace:}sintaxis del campo de valor del encabezado de respuesta.
Sintaxis y resolución de interpolación
Para usar la interpolación, incluye ${namespace:} cláusulas en los valores del encabezado o en el contenido del cuerpo de la respuesta personalizada. Los dos puntos finales son significativos. Indica que hay que AWS WAF resolver todas las etiquetas dentro de ese espacio de nombres en lugar de hacer coincidir literalmente con una sola etiqueta.
AWS WAF resuelve cada cláusula en el momento de la evaluación utilizando las siguientes reglas:
-
Coincidencia de una sola etiqueta: la cláusula se resuelve en el valor terminal de la etiqueta. Por ejemplo, si la solicitud tiene la etiqueta
awswaf:managed:aws:bot-control:bot:category:scraping, la cláusula se${awswaf:managed:aws:bot-control:bot:category:}resuelve enscraping. -
Varias etiquetas: cuando varias etiquetas coinciden con el espacio de nombres, los valores se devuelven como una lista separada por comas sin el prefijo del espacio de nombres. Por ejemplo,
scraping,advertising. -
Sin coincidencia: la cláusula se resuelve como una cadena vacía.
nota
Un único valor de cadena admite hasta 10 ${namespace:} marcadores de posición. Si un valor contiene más de 10 marcadores de posición, AWS WAF resuelve los primeros 10 y deja los marcadores de posición adicionales en la salida como texto literal. ${namespace:} Este límite se aplica a cada valor de cadena, no a cada solicitud. Puedes usar hasta 10 marcadores de posición en cada uno de los múltiples encabezados sin problemas.
importante
En las etiquetas personalizadas se utiliza un nombre abreviado. ruleLabels Por ejemplo, app:tier:enterprise. Sin embargo, AWS WAF coloca automáticamente el nombre abreviado como prefijo con el contexto del paquete de protección (ACL web), lo que produce una etiqueta totalmente cualificada. Por ejemplo, awswaf:. La sentencia label match funciona con el espacio de nombres abreviado, pero las referencias de interpolación siempre deben utilizar el espacio de nombres totalmente cualificado.ACCOUNT_ID:webacl:WEBACL_NAME:app:tier:enterprise
Etiquetas sintéticas
La interpolación también admite etiquetas sintéticas. Se trata de valores integrados que se AWS WAF resuelven desde el contexto de la solicitud y no desde el almacén de etiquetas. Puede combinar etiquetas sintéticas con etiquetas basadas en espacios de nombres en la misma cadena de valores.
| Etiqueta sintética | Description (Descripción) |
|---|---|
${awswaf:request_id:} |
El identificador único de la AWS WAF solicitud. |
${awswaf:ip:} |
La dirección IP del cliente. |
${awswaf:ja3:} |
La huella digital TLS del JA3. |
${awswaf:ja4:} |
La huella dactilar del JA4 TLS. |
Ejemplos de interpolación dinámica de etiquetas
Señalización de aplicaciones con encabezados dinámicos
La siguiente regla reenvía varios espacios de nombres de señales de Bot Control a tu origen como encabezados independientes. Una regla cubre todo el espacio de nombres, por lo que no es necesario que la actualices cuando el grupo de reglas gestionado añada nuevas etiquetas.
{ "Name": "forward-waf-signals", "Statement": { "LabelMatchStatement": { "Scope": "NAMESPACE", "Key": "awswaf:managed:aws:bot-control:bot:category:" } }, "RuleAction": { "Count": { "CustomRequestHandling": { "InsertHeaders": [ { "Name": "bot-category", "Value": "${awswaf:managed:aws:bot-control:bot:category:}" }, { "Name": "bot-name", "Value": "${awswaf:managed:aws:bot-control:bot:name:}" }, { "Name": "bot-signals", "Value": "${awswaf:managed:aws:bot-control:signal:}" }, { "Name": "client-ip", "Value": "${awswaf:ip:}" } ] } } } }
El bot-signals encabezado (salida:x-amzn-waf-bot-signals) muestra una resolución con varios valores. El espacio de signal: nombres puede contener varias etiquetas, por ejemplonon_browser_user_agent,automated_browser, que se convierten en una lista separada por comas. El client-ip encabezado (salida:x-amzn-waf-client-ip) utiliza una etiqueta sintética.
Página de bloques personalizada con información de depuración
Las etiquetas sintéticas te permiten crear páginas de bloques que incluyen un contexto específico de la solicitud. Inserta la dirección IP del cliente y el ID de la AWS WAF solicitud directamente en el cuerpo de la respuesta para que los usuarios puedan compartir algo cuando denuncien un falso positivo.
{ "CustomResponseBodies": { "BlockPage": { "Content": "Your request was blocked.\n\nIP: ${awswaf:ip:}\nRequest ID: ${awswaf:request_id:}\n\nIf you believe this is an error, contact support with the Request ID above.", "ContentType": "TEXT_PLAIN" } } }
Interpolación de etiquetas personalizada
La interpolación funciona con cualquier espacio de nombres de etiquetas, incluidas las etiquetas personalizadas que defina en sus propias reglas. En el siguiente ejemplo, se clasifican las solicitudes por clave de API y se reenvía el valor del nivel al origen.
Regla 1: Clasifique el nivel en función de la clave de API
Esta regla hace coincidir las solicitudes con una clave de API empresarial y aplica una etiqueta personalizada.
{ { "Name": "classify-tier", "Priority": 100, "Statement": { "ByteMatchStatement": { "SearchString": "pk_enterprise_", "FieldToMatch": { "SingleHeader": { "Name": "x-api-key" } }, "PositionalConstraint": "STARTS_WITH", "TextTransformations": [{ "Priority": 0, "Type": "NONE" }] } }, "RuleLabels": [{ "Name": "app:tier:enterprise" }], "Action": { "Count": {} } } }
Regla 2: reenviar el valor del nivel resuelto
Esta regla coincide con cualquier etiqueta del espacio de app:tier nombres y reenvía el valor resuelto en forma de encabezado.
{ { "Name": "forward-tier", "Priority": 200, "Statement": { "LabelMatchStatement": { "Scope": "NAMESPACE", "Key": "app:tier:" } }, "Action": { "Count": { "CustomRequestHandling": { "InsertHeaders": [{ "Name": "customer-tier", "Value": "${awswaf:ACCOUNT_ID:webacl:WEBACL_NAME:app:tier:}" }] } } } }
La primera regla aplica la etiqueta. app:tier:enterprise La segunda regla coincide con cualquier etiqueta del espacio de app:tier nombres y reenvía el valor resuelto como encabezado. customer-tier El nombre del encabezado de salida es. x-amzn-waf-customer-tier Puede añadir más reglas de clasificación para otros niveles, como app:tier:standard oapp:tier:trial. La regla de reenvío las recoge sin cambios.
Para ver un ejemplo desplegable que muestre todos estos patrones, consulte el ejemplo de interpolación AWS WAF dinámica de etiquetas