應用對象:開發者 |基本 |標準 |標準 v2 |高級 |Premium v2
您可以針對 APIM 執行個體設定入站私有端點,以允許私人網路中的用戶端透過 Azure Private Link 安全地存取執行個體。
私人端點會使用其所在的 Azure 虛擬網路中的 IP 位址。
私人網路上的用戶端設備與 API 管理之間的網路流量會透過虛擬網路和 Microsoft 主幹網路上的 Private Link 傳輸,避免暴露於公用網際網路。
設定自訂 DNS 設定或 Azure DNS 私人區域,以將 API 管理主機名稱對應至端點的私人 IP 位址。
使用私人端點和 Private Link,您可以:
建立多個與 APIM 執行個體的 Private Link 連線。
使用私人端點,以在安全連線上傳送輸入流量。
使用原則,以區分來自私人端點的流量。
僅將傳入流量限制為私人端點,以防止資料外流。
將私有入站端點整合至標準 v2 實例,並和輸出虛擬網路整合,為 API 管理用戶端和後端服務提供完整的網路隔離。
重要
- 您只能為 APIM 執行個體的輸入流量設定私人端點連線。
- 設定私人端點 之後 ,您只能停用對 API 管理實例的公用網路存取。
限制
- 只有 API 管理實例的 閘道端點 支援輸入 Private Link 連線。
- 每個 APIM 執行個體最多支援 100 個 Private Link 連線。
- 在自我裝載閘道或工作區閘道上不支援連線。
- 在傳統 API 管理 層中,內部或外部虛擬網路中插入的實例不支援私人端點。
一般案例
使用輸入私人端點,直接啟用僅限私人存取 API 管理閘道,以限制敏感數據或後端的暴露。
支援的組態包括:
透過防火牆傳遞用戶端要求,並設定規則以私下將要求路由傳送至 API 管理閘道。
設定 Azure Front Door (或 Azure Front Door 搭配 Azure 應用程式閘道)以接收外部流量,然後將流量私下路由傳送至 API 管理閘道。 例如,請參閱 使用 Private Link 將 Azure Front Door Premium 連線到 Azure API 管理。
附註
目前不支援從 Azure Front Door 私密路由流量到 APIM Premium v2 執行個體。
必要條件
- 現有的 API 管理執行個體。 若您還沒有執行個體,請加以建立。
- 您的訂閱與區域內 API 管理私有端點類型的可用性。
- 包含要裝載私人端點之子網路的虛擬網路。 子網路可以包含其他 Azure 資源,但不能委派給其他服務。
- (建議) 虛擬網路中相同或不同子網路內的虛擬機器,以測試私人端點。
在 Azure Cloud Shell 中使用 Bash 環境。 如需詳細資訊,請參閱開始使用 Azure Cloud Shell。
若要在本地執行 CLI 參考命令,請安裝 Azure CLI。 若您在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱〈如何在 Docker 容器中執行 Azure CLI〉。
如果您使用的是本機安裝,請使用 az login 命令,透過 Azure CLI 來登入。 請遵循您終端機上顯示的步驟,完成驗證程序。 如需其他登入選項,請參閱 使用 Azure CLI 向 Azure 進行驗證。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能的詳細資訊,請參閱 使用和管理 Azure CLI 的擴充功能。
執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
私人端點的核准方法
一般而言,網路管理員會建立私人端點。 根據 Azure 角色型存取控制 (RBAC) 權限,會對您所建立的私人端點進行「自動核准」以將流量傳送至 API 管理執行個體,或需要資源擁有者「手動核准」連線。
| 核准方法 | 最小 RBAC 權限 |
|---|---|
| 自動 | Microsoft.Network/virtualNetworks/**Microsoft.Network/virtualNetworks/subnets/**Microsoft.Network/privateEndpoints/**Microsoft.Network/networkinterfaces/**Microsoft.Network/locations/availablePrivateEndpointTypes/readMicrosoft.ApiManagement/service/**Microsoft.ApiManagement/service/privateEndpointConnections/** |
| 手動 | Microsoft.Network/virtualNetworks/**Microsoft.Network/virtualNetworks/subnets/**Microsoft.Network/privateEndpoints/**Microsoft.Network/networkinterfaces/**Microsoft.Network/locations/availablePrivateEndpointTypes/read |
設定私人端點的步驟
請依照以下步驟建立並配置 API 管理實例的私有端點。
建立私人端點 - 入口網站
在經典層級中,你可以在 Azure 入口建立 API 管理實例時建立私有端點,或是在現有實例中新增私有端點。
建立 API 管理實例時建立私有端點
在 [ 建立 API 管理服務精靈] 中,選取 [ 網络] 索引 標籤。
在 連接性類型中,選擇 私有端點。
選取 [+ 新增]。
在 [ 建立私人端點] 頁面上,輸入或選取下列資訊:
設定 價值 訂用帳戶 選取您的訂用帳戶。 資源群組 選取現有的資源群組或建立新群組。 其必須與虛擬網路位於相同的區域中。 地點 選取私人端點的位置。 其必須與虛擬網路位於相同的區域中。 它可能與你的 API 管理實例所屬的區域不同。 名稱 輸入端點的名稱,例如 myPrivateEndpoint。 子資源 選取 閘道。 在 [ 網络] 底下,輸入或選取私人端點的虛擬網路和子網。
在 [私人 DNS 整合] 底下,選取 [與私人 DNS 區域整合]。 預設 DNS 區域隨即顯示: privatelink.azure-api.net。
請選擇 [確定]。
繼續建立 API 管理實例。
為現有的 API 管理實例建立私有端點
請前往 Azure 入口網站的 API 管理服務。
在左側功能表中的 [部署 + 基礎結構] 下,選取 [網路]。
選取 [輸入私人端點連線]>[+ 新增端點]。
在 [ 基本] 索引標籤中 ,輸入或選取下列資訊:
設定 價值 專案詳細資料 訂用帳戶 選取您的訂用帳戶。 資源群組 選取現有的資源群組或建立新群組。 其必須與虛擬網路位於相同的區域中。 執行個體詳細資料 名稱 輸入端點的名稱,例如 myPrivateEndpoint。 網路介面名稱 輸入網路介面的名稱,例如 myInterface 區域 選取私人端點的位置。 其必須與虛擬網路位於相同的區域中。 它可能與你的 API 管理實例所屬的區域不同。 選取畫面底部的 [下一步:資源] 按鈕。 已經填入關於您的 API 管理執行個體的下列資訊:
- 訂用帳戶
- 資源類型
- 資源名稱
在 [資源] 的 [目標子資源] 中,選取 [閘道]。
重要
API 管理 僅支援閘道子資源。 不支援其他子資源。
選取畫面底部的 [下一步: 虛擬網路] 按鈕。
在 虛擬網絡 中,輸入或選取此資訊:
設定 價值 虛擬網路 選取您的虛擬網路。 子網路 選取子網路。 私人 IP 設定 在大部分情況下,選取 [動態配置 IP 位址]。 應用程式安全性群組 選擇性地選取應用程式安全性群組。 選取畫面底部的 [下一步:DNS] 按鈕。
在 [私人 DNS 整合] 中,輸入或選取此資訊:
設定 價值 與私人 DNS 區域整合 保留預設值 [是]。 訂用帳戶 選取您的訂用帳戶。 資源群組 選取您的資源群組。 私人 DNS 區域 預設值隨即顯示:(新增) privatelink.azure-api.net。 選取螢幕底部的 [下一步:索引標籤]。 如果你願意,可以輸入標籤來組織你的 Azure 資源。
在螢幕底部選擇 下一步:檢閱 + 建立。 選取 [建立]。
列出執行個體的私人端點連線
建立私有端點並更新服務後,私有端點會出現在入口網站 API Management 實例的 「進站私有端點連線 」頁面的清單中。
請注意端點的 連線狀態:
- [已核准] 指出 API 管理資源會自動核准連線。
- [擱置] 指出資源擁有者必須手動核准連線。
核准擱置私人端點連線
如果私人端點聯機處於擱置狀態,API 管理實例的擁有者必須先手動核准才能使用。
如果您有足夠的權限,則請在入口網站的 API 管理執行個體 [私人端點連線] 頁面上核准私人端點連線。 在連線的內容 (...) 功能表中,選取 核准。
您也可以使用 API 管理 私人端點連線 - 建立或更新 REST API 來核准待審核的私人端點連線。
選擇性地停用公用網路存取
若要限制 API Management 實例的流量僅限於私有端點,請停用公共網路存取屬性。
重要
- 你可以在設定私有端點 後 關閉公共網路存取。
- 你可以在 現有 的 API 管理實例中停用公共網路存取,但不能在部署過程中停用。
附註
你可以針對配置為私有端點的 API 管理實例停用公開網路存取,但其他網路配置則無法。
若要使用 Azure CLI 在經典層級中停用公開網路存取屬性,請執行以下 az apim update 指令,將你的 API Management 實例名稱與資源群組替換:
az apim update --name my-apim-service --resource-group my-resource-group --public-network-access false
您也可以使用 APIM 服務 - 更新 REST API,將 publicNetworkAccess 屬性設定為 Disabled,以停用公用網路存取。
驗證私人端點連線
建立私有端點後,請在入口網站確認其 DNS 設定。
請前往 Azure 入口網站的 API 管理服務。
在左側功能表的 [部署 + 基礎結構] 中,選取 [網路]>[輸入私人端點連線],然後選取您建立的私人端點。
在左側導覽的 [設定] 底下,選取 [DNS 組態]。
檢閱私人端點的 DNS 記錄和 IP 位址。 IP 位址是你設定私有端點的子網位址空間中的一個私有位址。
在虛擬網路中測試
連線至您在虛擬網路中設定的虛擬機器。
執行 nslookup 或 dig 這類公用程式,以透過 Private Link 查閱預設閘道端點的 IP 位址。 例如:
nslookup my-apim-service.privatelink.azure-api.net
輸出應該包括與私人端點相關聯的私人 IP 位址。
在虛擬網路內對預設閘道端點起始的 API 呼叫應該會成功。
來自網際網路的測試
從私人端點路徑外部,嘗試呼叫 API 管理執行個體的預設閘道端點。 如果停用公用存取,則輸出會包括狀態碼為 403 的錯誤以及與下面類似的訊息:
Request originated from client public IP address 192.0.2.12, public network access on this 'Microsoft.ApiManagement/service/my-apim-service' is disabled.
To connect to 'Microsoft.ApiManagement/service/my-apim-service', please use the Private Endpoint from inside your virtual network.
v2 層級自訂網域名稱的限制
目前,在標準 v2 與高級版 v2 層級中,API 管理要求一個公開可解析的 DNS 名稱,才能允許流量流向閘道端點。 如果您為閘道端點設定自訂網域名稱,該網域名稱必須能被公開解析,不能受限於私人 DNS 區域。
在限制閘道公用存取權並設定私人功能變數名稱的情況下,您可以設定應用程式閘道以接收私人功能變數名稱上的流量,並將其路由傳送至 API 管理實例的閘道端點。 如需範例架構,請參閱此 GitHub 存放庫。
相關內容
- 搭配使用原則運算式與
context.request變數,以識別來自私人端點的流量。 - 深入了解私人端點和私人連結,包括 Private Link 定價。
- 管理私人端點連線。
- 針對 Azure 私人端點連線問題進行疑難排解。
- 使用 資源管理器範本 建立經典的 API 管理實例和一個私有端點。