【Azure API 管理】Azure API Management通过请求中的Path来限定其被访问的频率(如1秒一次) - LuBu0505/My-Code GitHub Wiki

问题描述

Azure API Management 是否可以通过请求中的Path来限定其被访问的频率? 在系统Request中发现某个Path 在短时间内被频繁的调用,影响了后台服务的性能及安全,所以想限制在一定时间内允许被调用(Call)的次数,如1秒钟一次。如被限制的URL Path的格式为:/api/prodregist/00001。

而在Azure APIM的Policy设定文档中,可以通过设定” 按密钥限制调用速率 “ 来限制客户端的访问。同理,可以根据该文档示例写出能限制URL Path的表达式。

解决办法

在APIM中设定访问限制API 入站策略(Inbound Policy)。 如下的内容就是对URL = ”https://testapi.azure-api.cn/prodregist/sessions“ 进行了每一秒钟call一次的限制。renewal-period = “1” 表示一秒钟。

<rate-limit-by-key 
calls="1" 
renewal-period="1" 
counter-key="@(context.Request.OriginalUrl.ToString())" 
increment-condition="@(context.Request.OriginalUrl.ToString()=="https://testapi.azure-api.cn/prodregist/sessions")" 
/>

在API的策略设置页面添加的位置如下图所示:

2021053001.png

同理,如果需要对客户端的IP地址进行限制,可以使用如下表达式: 2021053002.png

参考资料

APIM管理访问限制策略(按密钥限制调用速率) :https://docs.microsoft.com/zh-cn/azure/api-management/api-management-access-restriction-policies#limit-call-rate-by-key 

当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

分类: 【Azure API 管理】

标签: 限制请求URL限制IP地址策略Azure API Management通过请求中的Path来限定其被访问的频率(如1秒一次)APIM