Análisis del contenido del cuerpo de POST

En esta página, se proporciona información para configurar el análisis del contenido del cuerpo de la solicitud POST, una función opcional que puedes usar con tus políticas de seguridad de Google Cloud Armor.

De forma predeterminada, Google Cloud Armor evalúa el contenido completo de un cuerpo de POST como una cadena uniforme (sujeta a limitaciones de tamaño del cuerpo) en función de las firmas de tus reglas de WAF preconfiguradas. En el caso de las solicitudes que contienen codificación alternativa, como JSON, los componentes estructurales del mensaje (no especificados por el usuario) pueden activar coincidencias con las firmas del WAF preconfiguradas. Para evitar el ruido y reducir el riesgo de falsos positivos, te recomendamos que configures Google Cloud Armor para habilitar el análisis alternativo de cualquier tipo de contenido admitido si tus cargas de trabajo protegidas hacen lo siguiente:

  • Publica APIs de REST
  • Usa GraphQL
  • Recibe cualquier solicitud con contenido codificado en JSON.

Puedes habilitar o inhabilitar el análisis del contenido del cuerpo JSON de las solicitudes POST para cada política de seguridad. Cuando el encabezado Content-Type se configure como application/json, usa la marca --json-parsing en Google Cloud CLI.

De forma predeterminada, esta opción está inhabilitada. La sintaxis de la marca es la siguiente:

--json-parsing=[STANDARD | STANDARD_WITH_GRAPHQL | DISABLED]

La marca solo está disponible con gcloud compute security-policies update. No puedes crear una política de seguridad nueva con esta opción, a menos que crees una política de seguridad en un archivo y, luego, importes ese archivo. Para obtener más información, consulta Importa políticas de seguridad.

Usa el análisis de JSON

En el siguiente ejemplo, se configura una lista de valores de encabezado Content-Type personalizados para los que se aplica el análisis alternativo. En el ejemplo, se actualiza la política de seguridad POLICY_NAME para habilitar el análisis de JSON y se especifican los tipos de contenido application/json, application/vnd.api+json, application/vnd.collection+json y application/vnd.hyper+json:

gcloud compute security-policies update POLICY_NAME \
    --json-parsing STANDARD \
    --json-custom-content-types "application/json,application/vnd.api+json,application/vnd.collection+json,application/vnd.hyper+json"

Usa el análisis de GraphQL

Para configurar el análisis de GraphQL, actualiza tu política de seguridad para establecer la marca --json-parsing en STANDARD_WITH_GRAPHQL:

gcloud compute security-policies update POLICY_NAME \
    --json-parsing STANDARD_WITH_GRAPHQL

Logging

Cada solicitud HTTP(S) que se evalúa en función de una política de seguridad de Google Cloud Armor se registra a través de Cloud Logging. Los registros proporcionan detalles, como el nombre de la política de seguridad aplicada, la regla de coincidencia y si se aplicó la regla. El registro de solicitudes para recursos de servicio de backend nuevos está inhabilitado de forma predeterminada. Para registrar las solicitudes de Google Cloud Armor, debes habilitar el parámetro de configuración de registro de HTTP(S) para cada servicio de backend protegido por una política de seguridad. Para obtener más información, consulta Registro y supervisión del balanceador de cargas de aplicaciones externo global.

Limitaciones

Ten en cuenta las siguientes limitaciones cuando configures el análisis de JSON:

  • De forma predeterminada, Google Cloud Armor inspecciona el cuerpo de HTTP POST hasta los primeros 8 KB. Puedes configurar este límite en 8 kB, 16 kB, 32 kB, 48 kB o 64 kB. Si el contenido JSON supera el límite de inspección configurado, Google Cloud Armor aplica el análisis de JSON hasta este límite, que luego se inspecciona con cualquiera de las reglas de WAF preconfiguradas.

    Para obtener más información sobre cómo configurar el límite de inspección del cuerpo de la solicitud cuando se usan reglas de WAF preconfiguradas, consulta Limitación de inspección del cuerpo de POST y PATCH.

  • Si el analizador de JSON no muestra ningún resultado, se puede intentar el análisis de URI. Si el analizador de URI no muestra parámetros de nombre-valor o muestra solo parámetros nombre-valor parciales, la string completa o parcial podría tratarse como el nombre de parámetro para la inspección.

¿Qué sigue?