2017-02-16 67 views
2

目前我的功能可以公開訪問。有沒有辦法讓它只能通過別的東西來訪問,比如API網關,而不是直接訪問?我嘗試通過「網絡」刀片添加VNET,但我不認爲它做了什麼(我仍然可以公開地調用這些功能)......我認爲這樣做可以使功能訪問專用網絡上的資源。我沒有看到設置中的任何選項使IP隱私。我對網絡相關問題不太熟悉,如果我不清楚,請致歉。使Azure功能無法公開訪問?

+0

我會爲此使用App Service環境,但功能應用程序似乎尚未在「可用應用程序類型」選項中可用 –

+0

@KaiWalter不幸的是,函數未在該UI中列出,但您只需執行頂級創建,選擇「App Service Plan」作爲Function App的託管選項。 –

+0

另請參閱... http://stackoverflow.com/questions/43241431/azure-functions-can-you-use-web-config-restrictions-eg-ip-restriction-or-bas – SteveC

回答

2

built-in keys support旨在爲此提供選項。您可以要求所有請求包含僅與您關心的資源共享的API密鑰。事實上,所有HTTP觸發的功能默認都需要一個密鑰。您將不得不明確選擇刪除此要求。

雖然鑰匙不是網絡解決方案,但如果泄漏密鑰,有人可以訪問您的API(直到您滾動鑰匙)。你是正確的,VNet支持是點對點的,這意味着它可以訪問資源,但功能應用程序本身不受保護。應用程序服務環境可以解決這個問題,儘管Kai對原始問題的評論是正確的 - ASE尚不適用於函數。

除了鑰匙,你可以看看使用App Service Authentication/Authorization要求AAD服務的主體。這實際上就像一個關鍵,但如果您正在爲AAD中的其他實體建模,則會帶來額外的好處。除非你知道你需要這個,但是,我會堅持用鑰匙。

2

使用CORS功能,您可以限制對Azure功能的訪問。要配置它,請檢查以下鏈接:Azure Function Settings,位於CORS部分。

+0

這不僅適用於瀏覽器中的JavaScript嗎? – SteveC