我們在Azure Functions里面有多個函式,其中一些被托管在blob存盤上的網頁使用。
我希望網頁(blob存盤)使用的函式能夠限制呼叫,所以它們只能被網頁呼叫,不能被其他任何人呼叫。這樣的做法可行嗎?
我找到了通過IP限制訪問的選項,但是網頁幾乎在任何一臺電腦上都會有不同的IP,所以這個選項似乎不是一個好的解決方案。
好的解決方案是限制從域名呼叫函式,但Azure中沒有這個選項。
有人有其他想法嗎?
有人有其他想法嗎?
uj5u.com熱心網友回復:
你可以通過2種方式實作這個目標:
1.
1. 如果你在函式應用中擁有一小部分函式,則是快速和簡單的廉價方式 你可以通過以下方式實作: 1.
您可以通過在您的函式應用程式中啟用 CORS 并指定可以訪問您的函式應用程式(以及它的函式)的域的串列來實作這一目標。
這樣做的步驟 : 2.如果你有更多的預算,并且你的功能是大型企業應用的一部分,則是更安全的方式
跨源資源共享(CORS)允許在外部主機上的瀏覽器中運行的 JavaScript 代碼與外部主機進行互動。
在外部主機上的瀏覽器中運行的JavaScript代碼與您的后臺進行互動。指定
應該被允許進行跨源呼叫的來源(例如
例如。

在你的功能應用前面部署一個新的Azure API管理實體。(
一旦你完成了步驟1和2,你的功能應用就不能被直接訪問。你(或其他任何人)只能通過APIM使用訂閱密鑰訪問它。(資訊: https://docs.microsoft.com/en-us/learn/modules/publish-manage-apis-with-azure-api-management https://docs.microsoft.com/en-us/learn/modules/control-authentication-with-apim/)
在APIM中啟用CORS(https://docs.microsoft.com/en-us/azure/api-management/api-management-cross-domain-policies#CORS)
正如你所看到的,APIM為你提供了一個額外的保護層,你可以通過域名進行限制,除此之外,只允許提供訂閱密鑰的請求訪問你的功能。你可以隨時撤銷和重新生成這些密鑰,確保惡意用戶無法訪問你的功能應用。你還可以配置諸如速率限制之類的東西來防止DDOS攻擊。
PS:估計你也會發現這個答案很有趣。CORS 可以被惡意用戶欺騙。但是在APIM實體后面保護你的功能應用將給你帶來更大的安全。這取決于你希望你的應用程式的安全水平與你的預算 - 怎樣才能阻止惡意代碼欺騙 "Origin "頭以利用 CORS?
您可以遵循 Azure 的 APIM 安全基線建議,通過 APIM 進一步保護您的功能應用程式: https://docs.microsoft.com/en-us/security/benchmark/azure/baselines/api-management-security-baseline
標籤: 上一篇:提示用戶只輸入密碼的一部分
