Azure Functions 網路管理

Posted by blueskyson on September 26, 2022

Azure Functions 網路管理

下圖來自 Azure Functions networking options 展示不同方案中可以做的網路設定。

限制可以直接存取 Function App 的 IP

Networking -> Access Restriction 設定 IP 及其子網路存取 Function App 的規則。每條規則的 Priority 的值越小,會越先被採納。

使用 VNet 與 NAT Gateway 限制 outbound request 的 IP

Azure Functions 的 App Service Plan 和 Premium Plan 允許開發者使用 VNet 來配置對外 IP,如此一來就方便我們去設定第三方服務的 Allow IP List。

首先登入 Azure 並創建一個測試用的 Resource Group。

> az login
> az group create --name Jack-Test --location japaneast

新增一個 Storage Account。

> az storage account create --name jack1 --location japaneast --resource-group Jack-Test --sku Standard_LRS

接著參考 az functionapp plan 新增一個最便宜的 App Service (D1) 方案、用 Windows 系統、命名為 Plan1。

> az functionapp plan create --resource-group Jack-Test --name Plan1 --min-instances 1 --sku D1

創建一個 Function App 並套用剛剛新增的 Plan1。

> az functionapp create --resource-group Jack-Test --runtime dotnet --functions-version 4 --name jack-linux --storage-account jack1 --plan Plan1

在 Azure Portal 新增一個 VNet。

啟用 jack-linux 的 VNet Integration,將剛剛創建的 VNet 啟用。

接著新增一個 Public IP Address。

新增一個 NAT Gateway,將剛剛的 Function App 所用到的 Subnet 加進去。

將 Function 推送到 Azure 上。

> func azure functionapp publish jack-nat-function

最後在 Configuration 設定環境變數 WEBSITE_VNET_ROUTE_ALL 的值為 1,如此一來 Function App 的 outbound request 就會固定使用剛剛創建的 Public IP Address。