共用方式為


透過使用內部私有端點私下連接至 API 管理

應用對象:開發者 |基本 |標準 |標準 v2 |高級 |Premium v2

您可以針對 APIM 執行個體設定入站私有端點,以允許私人網路中的用戶端透過 Azure Private Link 安全地存取執行個體。

  • 私人端點會使用其所在的 Azure 虛擬網路中的 IP 位址。

  • 私人網路上的用戶端設備與 API 管理之間的網路流量會透過虛擬網路和 Microsoft 主幹網路上的 Private Link 傳輸,避免暴露於公用網際網路。

  • 設定自訂 DNS 設定或 Azure DNS 私人區域,以將 API 管理主機名稱對應至端點的私人 IP 位址。

此圖表顯示使用私人端點與 API 管理的安全輸入連線。

使用私人端點和 Private Link,您可以:

  • 建立多個與 APIM 執行個體的 Private Link 連線。

  • 使用私人端點,以在安全連線上傳送輸入流量。

  • 使用原則,以區分來自私人端點的流量。

  • 僅將傳入流量限制為私人端點,以防止資料外流。

  • 將私有入站端點整合至標準 v2 實例,並和輸出虛擬網路整合,為 API 管理用戶端和後端服務提供完整的網路隔離。

    此圖表顯示使用私人端點與 API Management Standard v2 的安全輸入連線。

重要

  • 您只能為 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 角色型存取控制 (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 管理實例的私有端點。

建立私人端點 - 入口網站

在經典層級中,你可以在 Azure 入口建立 API 管理實例時建立私有端點,或是在現有實例中新增私有端點。

建立 API 管理實例時建立私有端點

  1. 在 [ 建立 API 管理服務精靈] 中,選取 [ 網络] 索引 標籤。

  2. 連接性類型中,選擇 私有端點

  3. 選取 [+ 新增]。

  4. 在 [ 建立私人端點] 頁面上,輸入或選取下列資訊:

    設定 價值
    訂用帳戶 選取您的訂用帳戶。
    資源群組 選取現有的資源群組或建立新群組。 其必須與虛擬網路位於相同的區域中。
    地點 選取私人端點的位置。 其必須與虛擬網路位於相同的區域中。 它可能與你的 API 管理實例所屬的區域不同。
    名稱 輸入端點的名稱,例如 myPrivateEndpoint
    子資源 選取 閘道
  5. 在 [ 網络] 底下,輸入或選取私人端點的虛擬網路和子網。

  6. [私人 DNS 整合] 底下,選取 [與私人 DNS 區域整合]。 預設 DNS 區域隨即顯示: privatelink.azure-api.net

  7. 請選擇 [確定]

  8. 繼續建立 API 管理實例。

為現有的 API 管理實例建立私有端點

  1. 請前往 Azure 入口網站的 API 管理服務。

  2. 在左側功能表中的 [部署 + 基礎結構] 下,選取 [網路]

  3. 選取 [輸入私人端點連線]>[+ 新增端點]

    顯示如何使用 Azure 入口網站新增私人端點的螢幕擷取畫面。

  4. 在 [ 基本] 索引標籤中 ,輸入或選取下列資訊:

    設定 價值
    專案詳細資料
    訂用帳戶 選取您的訂用帳戶。
    資源群組 選取現有的資源群組或建立新群組。 其必須與虛擬網路位於相同的區域中。
    執行個體詳細資料
    名稱 輸入端點的名稱,例如 myPrivateEndpoint
    網路介面名稱 輸入網路介面的名稱,例如 myInterface
    區域 選取私人端點的位置。 其必須與虛擬網路位於相同的區域中。 它可能與你的 API 管理實例所屬的區域不同。
  5. 選取畫面底部的 [下一步:資源] 按鈕。 已經填入關於您的 API 管理執行個體的下列資訊:

    • 訂用帳戶
    • 資源類型
    • 資源名稱
  6. 在 [資源] 的 [目標子資源] 中,選取 [閘道]

    螢幕擷取畫面顯示在 Azure 入口網站中建立私人端點的設定。

    重要

    API 管理 僅支援閘道子資源。 不支援其他子資源。

  7. 選取畫面底部的 [下一步: 虛擬網路] 按鈕。

  8. 虛擬網絡 中,輸入或選取此資訊:

    設定 價值
    虛擬網路 選取您的虛擬網路。
    子網路 選取子網路。
    私人 IP 設定 在大部分情況下,選取 [動態配置 IP 位址]
    應用程式安全性群組 選擇性地選取應用程式安全性群組
  9. 選取畫面底部的 [下一步:DNS] 按鈕。

  10. 在 [私人 DNS 整合] 中,輸入或選取此資訊:

    設定 價值
    與私人 DNS 區域整合 保留預設值 [是]
    訂用帳戶 選取您的訂用帳戶。
    資源群組 選取您的資源群組。
    私人 DNS 區域 預設值隨即顯示:(新增) privatelink.azure-api.net
  11. 選取螢幕底部的 [下一步:索引標籤]。 如果你願意,可以輸入標籤來組織你的 Azure 資源。

  12. 在螢幕底部選擇 下一步:檢閱 + 建立。 選取 [建立]

列出執行個體的私人端點連線

建立私有端點並更新服務後,私有端點會出現在入口網站 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 設定。

  1. 請前往 Azure 入口網站的 API 管理服務。

  2. 在左側功能表的 [部署 + 基礎結構] 中,選取 [網路]>[輸入私人端點連線],然後選取您建立的私人端點。

  3. 在左側導覽的 [設定] 底下,選取 [DNS 組態]

  4. 檢閱私人端點的 DNS 記錄和 IP 位址。 IP 位址是你設定私有端點的子網位址空間中的一個私有位址。

在虛擬網路中測試

連線至您在虛擬網路中設定的虛擬機器。

執行 nslookupdig 這類公用程式,以透過 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 存放庫