透過共享的私人連結建立外向連結

本文說明如何配置 共享私有連結 ,用於從 Azure AI 搜尋服務 到虛擬網路中運行的 Azure 資源進行私密外發連線。 使用共享私有連結時,搜尋服務連接到虛擬網路的 IP 位址,而非公共端點。

共享私人連結是一項按使用量計費的高級功能。 詳情請參閱 Azure Private Link 的定價

如果你正在設定與 SQL 管理實例的私有索引器連線,請參考「 為 SQL 受管實例建立共享私有連結 」。

先決條件

  • 一個支援的 Azure 資源,設定為在虛擬網路中運行。

  • Azure AI 搜尋服務。 需求依工作量而異:

    工作量 階級要求 區域需求 服務建立需求
    未使用技能的索引器 基礎及更高階 沒有 沒有
    具備嵌入技能的技能組合(整合向量化 基礎及更高階 高容量區域 2024年4月3日之後
    使用其他 內建 或自訂技能的技能組合 標準1(S1)及以上 沒有 2024年4月3日之後
    知識庫依賴 Azure OpenAI 基礎及更高階 沒有 沒有
  • Azure AI 搜尋和目標 Azure 資源,或以下特定權限的參與者擁有者角色:

    資源 權限
    Azure AI 搜尋服務 Microsoft.Search/searchServices/sharedPrivateLinkResources/write
    Microsoft.Search/searchServices/sharedPrivateLinkResources/read
    Microsoft.Search/searchServices/sharedPrivateLinkResources/operationStatuses/read
    其他 Azure 資源 授權核准私有端點連線的權限。 例如,在 Azure 儲存裝置中,你需要 Microsoft.Storage/storageAccounts/privateEndpointConnectionsApproval/action

支援的資源類型

你可以為以下資源建立共享私人連結。

資源類型 子資源(或群組ID)
Microsoft.Storage/storageAccounts 1 blobtable, , dfsfile
Microsoft.DocumentDB/資料庫帳戶 2 Sql
Microsoft.Sql/server 3 sqlServer
Microsoft.KeyVault/vaults vault
Microsoft.DBforMySQL/servers(預覽版) mysqlServer
Microsoft.Web/站點 4 sites
Microsoft.Sql/managedInstances (預覽版) 5 managedInstance
Microsoft.CognitiveServices/accounts 67 openai_account
Microsoft CognitiveServices/accounts 8 cognitiveservices_account
Microsoft.CognitiveServices/accounts 9 foundry_account
Microsoft.Fabric/私人連接服務ForFabric 10 workspace
Microsoft.ApiManagement/service 11 Gateway

1 若 Azure 儲存體 與 Azure AI 搜尋服務 位於同一區域,則與儲存的連線是透過 Microsoft 骨幹網路進行,這表示此配置中共享的私有連結是冗餘的。 不過,如果你已經為 Azure 儲存體 設置了私人端點,也應該同時設定共享私有連結,否則儲存端的連線會被拒絕。 另外,如果你在搜尋中針對不同情境使用多種儲存格式,務必為每個子資源建立獨立的共享私有連結。

2 資源 Microsoft.DocumentDB/databaseAccounts 類型用於連接 Azure Cosmos DB for NoSQL 的索引器。 提供者名稱和群組ID是區分大小寫的。

3 資源 Microsoft.Sql/servers 類型用於連接 Azure SQL 資料庫。 目前沒有支援 Azure Synapse SQL 的共享私有連結。

4 資源 Microsoft.Web/sites 類型用於 App 服務與 Azure 函式。 在 Azure AI 搜尋服務 的情境下,Azure 函式是較常見的情況。 Azure 函式常用於承載自訂技能的邏輯。 Azure Function 提供消費型、高級型及專用 App Service 託管方案。 目前不支援App Service 環境(ASE)Azure Kubernetes Service (AKS)。 若要支援Azure API 管理的共享私有連結,請使用 Microsoft.ApiManagement/service 資源類型。

5 請參閱 「為 SQL 管理實例建立共享私有連結 」以獲得說明。

6 資源 Microsoft.CognitiveServices/accounts 類型用於向量器與索引器連接 Azure OpenAI 嵌入模型,實現 整合向量化時的連結。 支援共享私有連結,透過 Microsoft Foundry 資源支援 Azure Vision 多模態嵌入。

7 Azure OpenAI 的共享私有連結僅支援於公有雲和 Microsoft Azure 政府。 其他雲端服務不支援群組 openai_account ID 的共享私有連結。

8 支援共用私有連結以連接 Foundry 資源。 對於用於 AI 強化Foundry 資源技能,Azure AI 搜尋服務 會連結到 Foundry 資源以進行計費。 這些連線可透過共享私有連結實現,僅在技能組定義中設定 管理身份(無密鑰設定) 時才支援。

9 支援共用私有連結以連接 Foundry 資源。 對於 Azure 託管的模型技能,如 生成式 AI 提示技能Azure OpenAI 嵌入技能內容理解技能,Azure AI 搜尋服務 會連接 Foundry 資源來執行底層處理。

10 支援連接 OneLake 工作空間的共用私有連結。 若要建立 privateLinkServicesForFabric 特定工作空間的資源,請將命名空間 註冊Microsoft.Fabric 到你的訂閱,並參考 Azure 中「 建立私有連結服務」中所描述的第 2 步。 請注意,使用共享私有連結時,OneLake 資料來源設定必須依照 OneLake 索引器文件中所述,以特定連接字串定義。

11Microsoft.ApiManagement/service 資源類型提供私有連接至Azure API 管理閘道,該閘道器位於模型端點前端。

使用 Azure 入口網站、Management REST API、Azure CLI 或 Azure PowerShell 來建立共享的私人連結。

以下是幾個建議:

  • 給私人連結一個有意義的名稱。 在 Azure PaaS 資源中,共享的私人連結與其他私人端點並列出現。 像「shared-private-link-for-search」這樣的名稱可以提醒你如何使用它。

完成本節步驟後,你會有一個指定的私人連結,該連結已被配置並處於待執行狀態。 建立連結需要好幾分鐘。 一旦建立,資源擁有者必須先批准請求,才能開始運作。

  1. 請前往 Azure 入口網站的搜尋服務。

  2. 在左側的設定中,選擇網路。

  3. 「共享私人存取 」頁面,選擇 + 新增「共享私人存取」。

  4. 選擇「 連接我的目錄中的 Azure 資源 」或 「依資源 ID 連接 Azure 資源」。

  5. 如果你選擇第一個選項(建議),Azure 入口網站會幫你選擇合適的 Azure 資源,並填寫其他屬性,例如資源的群組 ID 和資源類型。

    新增共享私人存取頁面的截圖,展示建立共享私有連結資源的引導體驗。

  6. 如果你選擇第二個選項,請手動輸入 Azure 資源 ID,並從本文開頭的清單中選擇相應的群組 ID。

    新增共享私人存取頁面的截圖,展示建立共享私人連結資源的手動經驗。

  7. 確認配置狀態為「更新中」。

    新增共享私人存取功能頁面的截圖,顯示資源正在建立中。

  8. 一旦資源成功建立,資源的配置狀態會變為「成功」。

    新增共享私人存取頁面的截圖,顯示資源建立已完成。

成功時會傳回202 Accepted回覆。 建立出站私有端點的過程是一個長時間(非同步)的操作。 這包括部署以下資源:

  • 一個私有端點,在一個 "Pending" 狀態中分配私有 IP 位址。 私有 IP 位址來自於執行環境中分配給搜尋服務專用私有索引器的虛擬網路位址空間。 私有端點核准後,Azure AI 搜尋服務 與 Azure 資源的任何通訊均來自私有 IP 位址及安全的私有連結通道。

  • 根據群組 ID 為資源類型設置一個私人 DNS 區域。 部署這個資源,可以確保任何對私有資源的 DNS 查詢都會使用與私有端點相關的 IP 位址。

2 - 批准私有端點連線

私人端點連線的核准是在 Azure PaaS 端授與。 需要資源擁有者明確批准。 以下步驟涵蓋使用 Azure 入口網站進行核准,這裡提供了一些連結,說明如何從 Azure 平台即服務 (PaaS) 端程式化地批准連線:

使用 Azure 入口網站,請執行以下步驟:

  1. 打開 Azure PaaS 資源的 網路 頁面。正文

  2. 找到列出私有端點連線的區塊。 以下範例是針對儲存帳戶。

    Azure 入口網站的截圖,顯示私有端點連線面板。

  3. 選擇連線,然後選擇 批准。 Azure 入口網站的狀態更新可能需要幾分鐘。

    Azure 入口網站的截圖,私有端點連線面板顯示已核准狀態。

私有端點核准後,Azure AI 搜尋服務 會在為該端點建立所需的 DNS 區域映射。

雖然 網路頁面上的 私有端點連結是啟用的,但無法解決。

Azure PaaS 網路頁面中私人端點連結的截圖。

選擇連結會產生錯誤。 出現一則包含"The access token is from the wrong issuer"must match the tenant associated with this subscription的狀態訊息,原因是後端私有端點資源是由 Microsoft 在 Microsoft 管理的租戶中配置,而連結的資源(Azure AI 搜尋服務)則在你的租戶中。 設計上你無法透過選擇私有端點連線來存取私有端點資源。

請依照下一節的指示檢查你共享的私人連結狀態。

在 Azure AI 搜尋端,您可以重新訪問搜尋服務的 網路 頁面的共享私人存取頁面,以確認請求批准。 連線狀態必須被核准。

Azure 入口網站的截圖,顯示一個已核准的共享私有連結資源。

或者,你也可以透過使用 共享私有連結資源 - Get 來取得連線狀態。

az rest --method get --uri https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/contoso/providers/Microsoft.Search/searchServices/contoso-search/sharedPrivateLinkResources/blob-pe?api-version=2025-05-01

這會回傳一個 JSON,其中會在「properties」部分顯示連線狀態為「status」。 以下是一個儲存帳戶的範例。

{
      "name": "blob-pe",
      "properties": {
        "privateLinkResourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/contoso/providers/Microsoft.Storage/storageAccounts/contoso-storage",
        "groupId": "blob",
        "requestMessage": "please approve",
        "status": "Approved",
        "resourceRegion": null,
        "provisioningState": "Succeeded"
      }
}

若資源的配置狀態properties.provisioningState()為「成功」,連線狀態(properties.status)為「批准」,表示共享私有連結資源正常運作,索引器可設定為透過私有端點通訊。

4 - 將索引器設定為在私有環境中執行

索引器執行會在兩種環境之一中進行:一種是搜尋服務專屬的私人環境,另一種是供內部使用以分擔多個客戶的高成本技能處理的多租用戶環境。

執行環境是透明的,但一旦開始建立防火牆規則或建立私有連線,就必須考慮索引器的執行。 對於私有連線,請設定索引器執行始終在私有環境中執行。

這個步驟會教你如何用 REST API 在私有環境中設定索引器執行。 你也可以在 Azure 入口網站的 JSON 編輯器設定執行環境。

你可以在私有端點連線核准前完成此步驟。 然而,在私有端點連線顯示為核准之前,任何嘗試與安全資源(如儲存帳號)通訊的現有索引器都會陷入暫時性故障狀態,且無法建立新的索引器。

  1. 像平常一樣建立資料來源定義、索引和技能組(如果你有使用的話)。 這些定義中沒有任何屬性在使用共享私有端點時會有所不同。

  2. 建立一個索引器 ,指向你在前一步建立的資料來源、索引和技能組。 此外,透過將索引 executionEnvironment 器設定屬性設 private為 ,強制索引器在私有執行環境中執行。

    {
        "name": "indexer",
        "dataSourceName": "blob-datasource",
        "targetIndexName": "index",
        "parameters": {
            "configuration": {
                "executionEnvironment": "private"
            }
        },
        "fieldMappings": []
    }
    

索引器成功建立後,應該會透過私有端點連線連接到 Azure 資源。 你可以透過使用 Indexer 狀態 API 來監控索引器的狀態。

如果你已經有現有的索引器,可以透過 PUT API 在 Azure 入口網站中設定 executionEnvironment to private 或使用 JSON 編輯器來更新它們。

  1. 如果你還沒這麼做,請確認你的 Azure PaaS 資源是否拒絕從公共網際網路連線。 如果連線被接受,請檢查你 Azure PaaS 資源的 網路 頁面中的 DNS 設定。

  2. 選擇能呼叫外發請求情境的工具,例如索引器連接到私有端點。 一個簡單的選擇是使用 匯入精靈,但你也可以嘗試使用 REST 客戶端和 REST API 來提升精準度。 假設你的搜尋服務沒有設定為私人連線,REST 用戶端的搜尋連線可以是透過公共網際網路。

  3. 將連接字串設為私有的 Azure PaaS 資源。 連線字串的格式不會在共享私有連結中改變。 搜尋服務在內部調用共享私有連結。

    對於索引器工作負載,連接字串會放在資料來源定義中。 一個資料來源的例子可能如下:

     {
       "name": "my-blob-ds",
       "type": "azureblob",
       "subtype": null,
       "credentials": {
         "connectionString": "DefaultEndpointsProtocol=https;AccountName=<YOUR-STORAGE-ACCOUNT>;AccountKey=..."
       }
    
  4. 對於索引器工作負載,請記得在索引器定義中設定執行環境。 索引器定義的範例可能如下:

    "name": "indexer",
    "dataSourceName": "my-blob-ds",
    "targetIndexName": "my-index",
    "parameters": {
       "configuration": {
           "executionEnvironment": "private"
           }
       },
    "fieldMappings": []
    }
    
  5. 執行索引器。 如果索引器執行成功且搜尋索引被填入,則共享的私有連結正在運作。

Azure AI 搜尋服務 在以下情境下會向其他 Azure 資源發出外撥呼叫:

  • 與 Azure OpenAI 的知識庫連接,用於代理檢索工作流程
  • Foundry Tools 中連線至 Azure OpenAI 或 Azure 視覺用於向量化的索引子或查詢
  • 索引器與支援資料來源的連結
  • 索引器(技能集)連接到 Azure 儲存,用於缓存增強功能、調試會話狀態或寫入知識庫。
  • 索引器 (技能) 與 Foundry 工具的連線,用於計費目的。
  • 加密金鑰請求至 Azure Key Vault
  • 自訂技能要求至 Azure Functions 或類似資源

共享私有連結只適用於 Azure 間的連線。 如果你是連接到 OpenAI 或其他外部模型供應商,連線必須透過公共網際網路。

共享私有連結用於透過 私有端點 存取的 Azure 資源或在 Azure 虛擬網路中運行的用戶端的操作與資料。

共享的私人連結如下:

  • 使用 Azure AI 搜尋工具、API 或 SDK 建立
  • 由 Azure 資源擁有者核准
  • Azure AI 搜尋服務 內部使用,透過私有連線連接特定 Azure 資源

只有你的搜尋服務可以使用它所建立的私有連結,且每個資源與子資源組合只能在你的服務上建立一個共享的私人連結。

一旦你設定好私有連結,搜尋服務連接該資源時就會自動使用。 你不需要修改連線字串或更換你使用的用戶端來發出請求,但用於連線的裝置必須使用 Azure 資源防火牆中的授權 IP 連線。

有兩種情境可以用於 Azure Private Link 和 Azure AI 搜尋服務 的整合:

雖然兩種情況都依賴 Azure Private Link,但它們是獨立的。 你可以建立共享的私人連結,而不必設定私人端點的搜尋服務。

限制

在評估你情境下的共享私有連結時,請記得以下限制:

  • 共享私有連結中使用的幾種資源類型目前仍在預覽階段。 如果你要連接預覽資源(適用於 MySQL 的 Azure 資料庫 或 Azure SQL 受控執行個體),請使用 Management REST API 的預覽版來建立共享的私有連結。 我們建議使用 最新的預覽版 API

  • 索引器執行必須使用專屬於你搜尋服務的 私有執行環境 。 多租戶內容處理環境不支援私有端點連線。 此需求的設定設定已在本文中說明。

  • 共享私有連結 資源的限制 會依價格層級而異。

  • 當你 更改定價層級時,共享私有連結資源會根據目標層級的限制進行評估。 如果你的共享私有連結數量超過目標等級的最大值,等級變更將被阻擋。 如果層級變更成功,現有的共享私有連結資源不會被重建,也不需要重新核准。 當搜尋服務回到「成功」配置狀態及「運行中」後,私有索引器連接仍持續運作,前提是共享私有連結配置狀態仍為「成功」且連線狀態維持為「已批准」。

故障排除

  • 如果你的索引器建立失敗,顯示「資料來源憑證無效」,請先查看共享私有連結的核准狀態,再進行連線除錯。 如果狀態是 Approved,請檢查該 properties.provisioningState 屬性。 如果是 Incomplete,可能有潛在的相依關係問題。 此時,請重新發出 PUT 請求以重建共享私有連結。 你可能還需要重複審核流程。

  • 如果索引器持續或間歇性故障,請檢查executionEnvironment索引器的屬性。 值應設為 private。 如果您未設定此屬性,而索引器過去曾成功執行,則表示搜尋服務是自行使用其私人環境進行執行。 當系統負載時,搜尋服務會將處理從多租戶環境中移出。

  • 如果你在建立共享私有連結時遇到錯誤,請檢查 服務限制 ,確認你是否低於你等級的配額。

下一步

了解更多關於私有端點及其他安全連線方式: