Configurar la limitación de frecuencia con Google Cloud Armor

En este documento se describe cómo puedes aplicar la limitación de frecuencia de uso compartido a tus clientes de Cloud Service Mesh para gestionar el consumo justo de tus servicios y evitar que los clientes maliciosos o que no se comportan correctamente sobrecarguen tus servicios.

Para completar el proceso de configuración, debe crear una política de seguridad de Cloud Armor y una política de endpoint. Si no conoces las políticas de seguridad de Cloud Armor, te recomendamos que leas el artículo Información general sobre las políticas de seguridad.

Cómo funciona la limitación de la frecuencia

La limitación de la frecuencia restringe el número de solicitudes que puede recibir tu servicio de los clientes en un intervalo de tiempo especificado para mejorar la disponibilidad del servicio y compartir de forma 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 del límite de frecuencia se pueden configurar. Para la limitación de la 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 varias reglas. Cada regla consta de una condición de coincidencia y una acción. Cuando una solicitud cumple la condición de coincidencia, Cloud Armor aplica la acción configurada a la solicitud. Cuando configuras la limitación de frecuencia, creas una regla de política de seguridad con una de las acciones de limitación de frecuencia mencionadas anteriormente y con la condición de coincidencia que se ajuste a tu caso práctico (incluida la coincidencia con todas las solicitudes entrantes con la marca --src-ip-ranges "*"). Las reglas de una política se evalúan por 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 lado del servidor, lo que significa que el servidor aplica el límite de frecuencia en lugar del dispositivo cliente.

Las acciones de limitación de frecuencia tienen campos adicionales que se usan para ajustar el umbral de limitación de frecuencia. Los siguientes campos se comparten entre todas las reglas de limitación de frecuencia:

  • rate_limit_threshold_count: número de solicitudes por intervalo de tiempo configurado por el usuario en el que Cloud Armor debe aplicar la limitación de velocidad.
  • interval_sec: el intervalo de tiempo, en segundos, de rate_limit_threshold_count.
  • exceed_action: la acción que se debe realizar en las solicitudes que superen el umbral del límite de frecuencia.
  • conform_action: la acción que se debe realizar en las solicitudes que no superen el umbral del límite de frecuencia.

Limitación de la frecuencia con Cloud Service Mesh

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

Primero, crea una política de endpoint y asegúrate de que EndpointMatcher selecciona tus instancias de Cloud Service Mesh para aplicar límites de frecuencia al tráfico entrante. El EndpointMatcher usa etiquetas de endpoint 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, se crea una regla predeterminada con la acción fairshare para aplicar la limitación de frecuencia de uso compartido equitativo a todo el tráfico que no cumpla una regla de mayor prioridad. Puedes añadir reglas nuevas con mayor prioridad para aplicar un límite de frecuencia diferente a distintos tipos de tráfico. Por ejemplo, puedes asignar un límite de frecuencia inferior o superior a un intervalo de direcciones IP específico.

Por último, después de crear la política de seguridad con una o varias reglas de limitación de frecuencia, adjúntala a la política de endpoint. Después de adjuntar la política de seguridad, Cloud Armor aplica la limitación de frecuencia del lado del servidor a todo el tráfico entrante que coincida con una condición de coincidencia de una regla y que se conecte a las instancias de malla de servicios que haya seleccionado EndpointMatcher.

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

Para configurar la limitación de frecuencia con Cloud Service Mesh, consulta Configurar la limitación de frecuencia de Google Cloud Armor con Envoy.

Limitaciones

Cuando configures la limitación de frecuencia con Cloud Armor, ten en cuenta las siguientes limitaciones:

  • Las cuotas de Cloud Armor limitan el número de reglas personalizadas que puedes crear. Te recomendamos que compruebes tu cuota antes de crear más de 20 reglas personalizadas.
  • Cada recurso de política de endpoint debe hacer referencia a una política de seguridad diferente. No puedes asociar una política de seguridad a una política de endpoint nueva si ya se hace referencia a ella en una política de endpoint.
  • Las políticas de seguridad con la acción fairshare se limitan a la clave de limitación de ALL.
  • Cuando implementas políticas de seguridad con la acción fairshare, Cloud Armor ignora el campo preview durante la aplicación de las reglas.
  • 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 de tipo CLOUD_ARMOR_INTERNAL_SERVICE están limitadas a los siguientes atributos del lenguaje de expresiones personalizadas (CEL):

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

Para obtener más información sobre los atributos de CEL, consulta el artículo Configurar atributos de idioma de reglas personalizadas.