Configura el límite de frecuencia con Google Cloud Armor

En este documento, se describe cómo puedes aplicar la límite de frecuencia de uso compartido equitativo a tus clientes de Cloud Service Mesh, lo que te ayudará a administrar el consumo equitativo de tus servicios y evitar que los clientes maliciosos o con un comportamiento inadecuado sobrecarguen tus servicios.

El proceso de configuración requiere que crees una política de seguridad de Cloud Armor y una política de extremos. Si no conoces las políticas de seguridad de Cloud Armor, te recomendamos que leas la Descripción general de la política de seguridad.

Cómo funciona la límite de frecuencia

La limitación de frecuencia restringe la cantidad de solicitudes que tu servicio puede recibir de los clientes dentro de un intervalo de tiempo especificado para mejorar la disponibilidad del servicio y compartir de manera equitativa la capacidad disponible entre los clientes. El umbral de solicitudes, el intervalo y la acción que Cloud Armor aplica al tráfico entrante que supera el umbral de límite de frecuencia se pueden configurar por el usuario. Para la límite de frecuencia de Cloud Service Mesh, Cloud Armor usa el tipo de política de seguridad CLOUD_ARMOR_INTERNAL_SERVICE y las reglas de política de seguridad usan la acción fairshare.

Cada política de seguridad de Cloud Armor contiene una o más reglas. Cada regla consta de una condición de coincidencia y una acción. Cuando una solicitud cumple con la condición de coincidencia, Cloud Armor le aplica la acción configurada. Cuando configuras el límite de frecuencia, creas una regla de política de seguridad con una de las acciones de límite de frecuencia mencionadas anteriormente y cualquier condición de coincidencia que se ajuste a tu caso de uso (incluida la coincidencia en todas las solicitudes entrantes con la marca --src-ip-ranges "*"). Las reglas dentro de una política se evalúan en orden de prioridad. La regla con la prioridad numérica más baja tiene la prioridad lógica más alta y se evalúa primero. Cloud Armor realiza la limitación de frecuencia del servidor, lo que significa que el servidor aplica el límite de frecuencia en lugar del dispositivo cliente.

Las acciones de límite de frecuencia tienen campos adicionales que se usan para ajustar el umbral del límite de frecuencia. Los siguientes campos se comparten entre todas las reglas de límite de frecuencia:

  • rate_limit_threshold_count: Es la cantidad de solicitudes por intervalo de tiempo configurado por el usuario durante el cual Cloud Armor debe aplicar el límite de frecuencia.
  • interval_sec: Es el intervalo de tiempo, en segundos, para rate_limit_threshold_count.
  • exceed_action: Es la acción que se realizará en las solicitudes que superen el umbral del límite de frecuencia.
  • conform_action: Es la acción que se realizará en las solicitudes que no superen el umbral del límite de frecuencia.

Limitación de frecuencia con Cloud Service Mesh

En esta sección, se proporciona una descripción general de los pasos que debes seguir para configurar la límite de frecuencia con Cloud Service Mesh.

Primero, crea una política de extremos y asegúrate de que EndpointMatcher seleccione tus instancias de Cloud Service Mesh para aplicar límites de frecuencia en el tráfico entrante. El EndpointMatcher usa etiquetas de extremos para identificar las instancias a las que se adjunta.

A continuación, crea una política de seguridad de Cloud Armor con el tipo CLOUD_ARMOR_INTERNAL_SERVICE. La única acción disponible para este tipo de política de seguridad es fairshare. En esta política, crearás una regla predeterminada con la acción fairshare para aplicar la límite de frecuencia de uso compartido equitativo a todo el tráfico que no cumpla con una regla de mayor prioridad. Puedes agregar reglas nuevas de mayor prioridad para aplicar un límite de frecuencia diferente a los distintos tipos de tráfico. Por ejemplo, puedes asignar un límite de frecuencia más bajo o más alto a un rango de direcciones IP específico.

Por último, después de terminar de crear tu política de seguridad con una o más reglas de límite de frecuencia, la adjuntas a la política de extremos. Después de adjuntar la política de seguridad, Cloud Armor aplica la límite de frecuencia del servidor a todo el tráfico entrante que coincide con una condición de coincidencia de una regla y que se conecta a las instancias de malla de servicios que seleccionó EndpointMatcher.

Cloud Service Mesh configura un límite de velocidad global en todas las instancias. Esto significa que el volumen total de tráfico en todas las instancias del servidor se agrega para determinar cuándo aplicar el límite de frecuencia. Cualquier cliente que envíe solicitudes a ese servicio está sujeto al mismo umbral de aplicación y a la misma política. Esto significa que, cuando la tasa de tráfico agregada supera el umbral, se descartan algunas solicitudes.

Si deseas configurar la límite de frecuencia con Cloud Service Mesh, consulta Configura la límite de frecuencia de Google Cloud Armor con Envoy.

Limitaciones

Cuando configures el límite de frecuencia con Cloud Armor, ten en cuenta las siguientes limitaciones:

  • Las cuotas de Cloud Armor limitan la cantidad de reglas personalizadas que puedes crear. Te recomendamos que verifiques tu cuota antes de crear más de 20 reglas personalizadas.
  • Cada recurso de política de extremo debe hacer referencia a una política de seguridad diferente. No puedes adjuntar una política de seguridad a una política de extremo nueva si ya se hace referencia a ella en una política de extremo existente.
  • Las políticas de seguridad con la acción fairshare se limitan a la clave de limitación de velocidad ALL.
  • Cuando implementas políticas de seguridad con la acción fairshare, Cloud Armor ignora el campo preview durante la aplicación de la regla.
  • No puedes configurar una política de seguridad de Cloud Armor si usas el enrutamiento de tráfico TCP.

Además, las políticas de seguridad de Cloud Armor con el tipo CLOUD_ARMOR_INTERNAL_SERVICE se limitan a los siguientes atributos del lenguaje de expresiones personalizado (CEL):

  • request.headers
  • request.method
  • request.path
  • request.scheme
  • request.query

Para obtener más información sobre los atributos de CEL, consulta Cómo configurar atributos de lenguaje de reglas personalizadas.