使用輸入私人端點私下連線到 APIM
適用於:開發人員 | 基本 | 標準 | 進階
您可以針對 APIM 執行個體設定輸入私人端點,以允許私人網路中的用戶端透過 Azure Private Link 安全地存取執行個體。
私人端點使用來自其裝載所在之 Azure VNet 的 IP 位址。
私人網路上的用戶端與 API 管理之間的網路流量會流經 VNet 以及 Microsoft 骨幹網路上的私人連結,進而排除公開網際網路的風險。
設定自訂 DNS 設定或 Azure DNS 私人區域,以將 API 管理主機名稱對應至端點的私人 IP 位址。
使用私人端點和 Private Link,您可以:
建立多個與 APIM 執行個體的 Private Link 連線。
使用私人端點,以在安全連線上傳送輸入流量。
使用原則,以區分來自私人端點的流量。
僅將傳入流量限制為私人端點,以防止資料外流。
重要
限制
- 目前只有 APIM 執行個體的閘道端點支援輸入 Private Link 連線。
- 每個 APIM 執行個體最多支援 100 個 Private Link 連線。
- 在自我裝載閘道或工作區閘道上不支援連線。
必要條件
- 現有的 API 管理執行個體。 若您還沒有執行個體,請加以建立。
- 要裝載私人端點的虛擬網路和子網路。 子網路可能會包含其他 Azure 資源。
- (建議) 虛擬網路中相同或不同子網路內的虛擬機器,以測試私人端點。
私人端點的核准方法
一般而言,網路管理員會建立私人端點。 根據 Azure 角色型存取控制 (RBAC) 權限,會對您所建立的私人端點進行「自動核准」以將流量傳送至 API 管理執行個體,或需要資源擁有者「手動核准」連線。
核准方法 | 最小 RBAC 權限 |
---|---|
自動 | Microsoft.Network/virtualNetworks/** Microsoft.Network/virtualNetworks/subnets/** Microsoft.Network/privateEndpoints/** Microsoft.Network/networkinterfaces/** Microsoft.Network/locations/availablePrivateEndpointTypes/read Microsoft.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 管理私人端點類型。 在入口網站中,移至 [Private Link 中心] 來尋找此資訊。 選取 [支援的資源]。
您也可以使用可用的私人端點類型 - 列出 REST API 來尋找此資訊。
GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Network/locations/{region}/availablePrivateEndpointTypes?api-version=2021-03-01
輸出應該包括 Microsoft.ApiManagement.service
端點類型:
[...]
"name": "Microsoft.ApiManagement.service",
"id": "/subscriptions/{subscriptionId}/providers/Microsoft.Network/AvailablePrivateEndpointTypes/Microsoft.ApiManagement.service",
"type": "Microsoft.Network/AvailablePrivateEndpointTypes",
"resourceName": "Microsoft.ApiManagement/service",
"displayName": "Microsoft.ApiManagement/service",
"apiVersion": "2021-04-01-preview"
}
[...]
停用子網路中的網路原則
在用於私人端點的子網路中,必須停用網路安全性群組這類網路原則。
如果您使用 Azure PowerShell、Azure CLI 或 REST API 這類工具來設定私人端點,則請手動更新子網路設定。 例如,請參閱管理私人端點的網路原則。
當您使用 Azure 入口網站來建立私人端點時 (如下節所示),會在建立程序期間自動停用網路原則
建立私人端點 - 入口網站
在 Azure 入口網站中,瀏覽至您的 API 管理服務。
在左側功能表中,選取 [網路]。
選取 [輸入私人端點連線]>[+ 新增端點]。
在 [建立私人端點] 的 [基本] 索引標籤中,輸入或選取下列資訊:
設定 值 專案詳細資料 訂用帳戶 選取您的訂用帳戶。 資源群組 選取現有的資源群組或建立新群組。 其必須與虛擬網路位於相同的區域中。 [執行個體詳細資料] 名稱 輸入端點的名稱,例如 myPrivateEndpoint。 網路介面名稱 輸入網路介面的名稱,例如 myInterface 區域 選取私人端點的位置。 其必須與虛擬網路位於相同的區域中。 其可能與裝載 API 管理執行個體的區域不同。 選取 [資源] 索引標籤或頁面底部的 [下一步: 資源] 按鈕。 已填入 API 管理執行個體的下列資訊:
- 訂用帳戶
- 資源群組
- 資源名稱
在 [資源] 的 [目標子資源] 中,選取 [閘道]。
選取 [虛擬網路] 索引標籤或畫面底部的 [下一步: 虛擬網路] 按鈕。
在 [網路] 中,輸入或選取此資訊:
設定 值 虛擬網路 選取您的虛擬網路。 子網路 選取子網路。 私人 IP 設定 在大部分情況下,選取 [動態配置 IP 位址]。 應用程式安全性群組 選擇性地選取應用程式安全性群組。 選取 [DNS] 索引標籤或畫面底部的 [下一步: DNS] 按鈕。
在 [私人 DNS 整合] 中,輸入或選取此資訊:
設定 值 與私人 DNS 區域整合 保留預設值 [是]。 訂用帳戶 選取您的訂用帳戶。 資源群組 選取您的資源群組。 私人 DNS 區域 預設值隨即顯示:(新增) privatelink.azure-api.net。 選取 [標籤] 索引標籤或畫面底部的 [下一步: 索引標籤] 按鈕。 視需要使用標籤來組織 Azure 資源。
選取 [檢閱 + 建立]。
選取 建立。
列出執行個體的私人端點連線
私人端點在建立之後,會出現在入口網站中 APIM 執行個體 [輸入私人端點連線] 頁面的清單中。
您也可以使用私人端點連線 - 依服務列出 REST API 來列出服務執行個體的私人端點連線。
請注意端點的 [連線狀態]:
- [已核准] 指出 API 管理資源會自動核准連線。
- [擱置] 指出資源擁有者必須手動核准連線。
核准擱置私人端點連線
如果私人端點連線處於擱置狀態,則 API 管理執行個體的擁有者必須先手動進行核准,才能予以使用。
如果您有足夠的權限,則請在入口網站的 API 管理執行個體 [私人端點連線] 頁面上核准私人端點連線。
您也可以使用 API 管理私人端點連線 - 建立或更新 REST API。
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{apimServiceName}privateEndpointConnections/{privateEndpointConnectionName}?api-version=2021-08-01
選擇性地停用公用網路存取
若要選擇性地將 API 管理執行個體的傳入流量僅限制為私人端點,請停用公用網路存取。 使用 APIM 服務 - 建立或更新 REST API,將 publicNetworkAccess
屬性設定為 Disabled
。
注意
publicNetworkAccess
屬性只能用來停用使用私人端點 (而不是使用 VNet 插入等其他網路設定) 設定之 APIM 執行個體的公用存取權。
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{apimServiceName}?api-version=2021-08-01
Authorization: Bearer {{authToken.response.body.access_token}}
Content-Type: application/json
使用下列 JSON 主體:
{
[...]
"properties": {
"publicNetworkAccess": "Disabled"
}
}
驗證私人端點連線
建立私人端點之後,請在入口網站中確認其 DNS 設定:
在 Azure 入口網站中,瀏覽至您的 API 管理服務。
在左側功能表中,選取 [網路]>[輸入私人端點連線],然後選取您建立的私人端點。
在左側導覽中,選取 [DNS 設定]。
檢閱私人端點的 DNS 記錄和 IP 位址。 IP 位址是已設定私人端點之子網路位址空間中的私人位址。
在虛擬網路中測試
連線至您在虛擬網路中設定的虛擬機器。
執行 nslookup
或 dig
這類公用程式,以透過 Private Link 查閱預設閘道端點的 IP 位址。 例如:
nslookup my-apim-service.azure-api.net
輸出應該包括與私人端點相關聯的私人 IP 位址。
在虛擬網路內對預設閘道端點起始的 API 呼叫應該會成功。
從網際網路的測試
從私人端點路徑外部,嘗試呼叫 API 管理執行個體的預設閘道端點。 如果停用公用存取,則輸出將會包括狀態碼為 403
的錯誤以及與下面類似的訊息:
Request originated from client public IP address xxx.xxx.xxx.xxx, 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.
下一步
- 搭配使用原則運算式與
context.request
變數,以識別來自私人端點的流量。 - 深入了解私人端點和私人連結,包括 Private Link 定價。
- 深入了解管理私人端點連線。
- 針對 Azure 私人端點連線問題進行疑難排解。
- 使用 Resource Manager 範本來建立具有私人 DNS 整合的 API 管理執行個體和私人端點。