Azure App Service 中的輸入和輸出 IP 位址
Azure App 服務 是多租用戶服務,但 App Service 環境 除外。 不在 App Service 環境中的應用程式(不在 隔離層中)與其他應用程式共用網路基礎結構。 因此,應用程式的輸入和輸出 IP 位址可能不同,甚至會在某些情況下變更。
App Service 環境使用專用的網路基礎結構,因此在 App Service 環境中執行的應用程式會針對輸入和輸出連線取得靜態的專用 IP 位址。
IP 位址在 App Service 中的運作方式
App Service 應用程式會在 App Service 方案中執行,而 App Service 方案會部署至 Azure 基礎結構中的其中一個部署單位 (內部稱為網路空間)。 每個部署單位會指派一組虛擬 IP 位址,包括一個公用輸入 IP 位址和一組輸出 IP 位址。 相同部署單位中的所有 App Service 方案,和方案中執行的應用程式執行個體,會共用一組相同的虛擬 IP 位址。 如果是 App Service 環境 (隔離層中的 App Service 方案),App Service 方案即為部署單位本身,所以虛擬 IP 位址是方案專用。
因為您無法在部署單位間移動 App Service 方案,因此指派給應用程式的虛擬 IP 位址通常會維持不變,但有例外狀況。
當輸入 IP 變更時
不論相應放大的執行個體數目為何,每個應用程式都只有一個輸入 IP 位址。 輸入 IP 位址可能會在您執行下列動作之一時變更:
- 刪除應用程式,並在不同資源群組中重建 (部署單位可能會變更)。
- 在資源群組「和」區域組合中,刪除並重新建立最後一個應用程式 (部署單位可能變更)。
- 刪除現有 IP 型 TLS/SSL 繫結,例如在憑證更新期間 (請參閱更新憑證)。
尋找輸入 IP
在本機終端中直接執行下列命令:
nslookup <app-name>.azurewebsites.net
取得靜態輸入 IP
有時候您可能會想讓應用程式使用專用的靜態 IP 位址。 若要取得靜態輸入 IP 位址,您必須使用 IP 型憑證繫結來保護自訂 DNS 名稱。 如果您其實不需要保護應用程式的 TLS 功能,您甚至可以針對此繫結上傳自我簽署憑證。 在IP型TLS系結中,憑證會系結至IP位址本身,因此App Service會建立靜態IP位址,使其發生。
當輸出 IP 變更時
不論相應放大的執行個體數目為何,每個應用程式在任何給定時間都會有一定數目的輸出 IP 位址。 任何來自 App Service 應用程式的輸出連線 (例如連往後端資料庫) 都會使用其中一個輸出 IP 位址來作為來源 IP 位址。 系統會在執行階段隨機選取要使用的 IP 位址,因此後端服務必須對應用程式的所有輸出 IP 位址開啟其防火牆。
執行下列其中一個動作後,應用程式的輸出 IP 位址集合會變更:
- 刪除應用程式,並在不同資源群組中重建 (部署單位可能會變更)。
- 在資源群組「和」區域組合中,刪除並重新建立最後一個應用程式 (部署單位可能變更)。
- 在較低層 (基本、標準和進階)、PremiumV2 層、PremiumV3 層以及 PremiumV3 層中的 Pmv3 選項之間調整您的應用程式 (可在集合中新增或減去 IP 位址數)。
您可以藉由尋找 屬性,或在 Azure 入口網站 的 [屬性] 頁面的 [其他輸出 IP 位址] 字段中尋找possibleOutboundIpAddresses
應用程式可以使用的所有可能輸出 IP 位址集合,而不論定價層為何。 請參閱尋找輸出 IP。
如果 App Service 將新的定價層或選項新增至現有的 App Service 部署,所有可能的輸出 IP 位址集合可能會隨著時間增加。 例如,如果 App Service 將 PremiumV3 層新增至現有的 App Service 部署,則所有可能的輸出 IP 位址集都會增加。 同樣地,如果 App Service 將新的 Pmv3 選項新增至已經支援 PremiumV3 層的部署,則所有可能的輸出 IP 位址集都會增加。 將IP位址新增至部署不會立即生效,因為當新的定價層或選項新增至App Service 部署時,執行應用程式的輸出IP位址不會變更。 不過,如果應用程式切換至先前無法使用的新定價層或選項,則會使用新的輸出位址,而且客戶需要更新下游防火牆規則和IP位址限制。
尋找輸出 IP
若要尋找您應用程式目前在 Azure 入口網站中使用的輸出 IP 位址,請選取您應用程式左側瀏覽中的 [屬性]。 它們會列在 [輸出 IP 位址 ] 欄位中。
您可以在 Cloud Shell 中執行下列命令來找到同樣的資訊。
az webapp show --resource-group <group_name> --name <app_name> --query outboundIpAddresses --output tsv
(Get-AzWebApp -ResourceGroup <group_name> -name <app_name>).OutboundIpAddresses
若要尋找 應用程式的所有 可能輸出IP位址,不論定價層為何,請在應用程式的左側導覽中選取 [屬性 ]。 位址會列在 [其他輸出 IP 位址] 欄位中。
您可以在 Cloud Shell 中執行下列命令來找到同樣的資訊。
az webapp show --resource-group <group_name> --name <app_name> --query possibleOutboundIpAddresses --output tsv
(Get-AzWebApp -ResourceGroup <group_name> -name <app_name>).PossibleOutboundIpAddresses
如需函式應用程式,請參閱 函式應用程式輸出IP位址。
取得靜態輸出 IP
您可以使用虛擬網路整合與虛擬網路 NAT 閘道,透過靜態公用 IP 位址引導流量,來控制來自應用程式的輸出流量 IP 位址。 基本、標準、進階、PremiumV2 和 PremiumV3 App Service 方案提供虛擬網路整合。 若要深入了解此設定,請參閱 NAT 閘道整合。
服務標記
藉由使用AppService
服務標籤,您可以定義 Azure App 服務 服務的網路存取,而不需指定個別IP位址。 服務標籤是一組IP位址前綴,可用來將建立安全性規則的複雜度降到最低。 當您使用服務標籤時,Azure 會在服務變更時自動更新IP位址。 不過,服務標籤不是安全性控制機制。 服務標籤只是IP位址清單。
服務 AppService
標籤只包含多租使用者應用程式的輸入IP位址。 不包含部署在隔離式 (App Service 環境) 的應用程式和使用IP型TLS系結的應用程式輸入IP位址。 此外,在多租用戶和隔離中使用的所有輸出IP位址都不會包含在標記中。
標記可用來允許網路安全組 (NSG) 中的輸出流量傳送至應用程式。 如果應用程式使用以IP為基礎的TLS,或應用程式部署在隔離模式中,您必須改用專用的IP位址。
注意
服務標籤可協助您定義網路存取,但不應將其視為適當網路安全性措施的替代專案,因為它不會提供個別IP位址的細微控制。
下一步
- 瞭解如何 依來源IP位址限制輸入流量 。
- 深入瞭解 服務標籤。