問題描述
Azure API Management 是否可以通過請求中的Path來限定其被訪問的頻率? 在系統(tǒng)Request中發(fā)現(xiàn)某個Path 在短時間內(nèi)被頻繁的調(diào)用,影響了后臺服務(wù)的性能及安全,所以想限制在一定時間內(nèi)允許被調(diào)用(Call)的次數(shù)沪蓬,如1秒鐘一次舍咖。如被限制的URL Path的格式為:/api/prodregist/00001蚓庭。
而在Azure APIM的Policy設(shè)定文檔中娇跟,可以通過設(shè)定” 按密鑰限制調(diào)用速率 “ 來限制客戶端的訪問僻爽。同理春弥,可以根據(jù)該文檔示例寫出能限制URL Path的表達(dá)式呛哟。
解決辦法
在APIM中設(shè)定訪問限制API 入站策略(Inbound Policy)。 如下的內(nèi)容就是對URL = ”https://testapi.azure-api.cn/prodregist/sessions“ 進(jìn)行了每一秒鐘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的策略設(shè)置頁面添加的位置如下圖所示:
同理,如果需要對客戶端的IP地址進(jìn)行限制逃呼,可以使用如下表達(dá)式:
參考資料
APIM管理訪問限制策略(按密鑰限制調(diào)用速率) :https://docs.microsoft.com/zh-cn/azure/api-management/api-management-access-restriction-policies#limit-call-rate-by-key
當(dāng)在復(fù)雜的環(huán)境中面臨問題鳖孤,格物之道需:濁而靜之徐清,安以動之徐生抡笼。 云中苏揣,恰是如此!
分類: 【Azure API 管理】
標(biāo)簽: 限制請求URL, 限制IP地址策略, Azure API Management通過請求中的Path來限定其被訪問的頻率(如1秒一次), APIM