Azure AI 搜尋服務的安全性概觀
本文說明 Azure AI 搜尋服務中保護資料和作業的安全性功能。
資料流程 (網路流量模式)
Azure AI 搜尋服務裝載於 Azure 上,通常由用戶端應用程式透過公用網路連線存取。 雖然這是主要的模式,但並非唯一需要注意的流量模式。 了解所有進入點以及輸出流量,乃是保護開發和實際執行環境的必要條件。
Azure AI 搜尋服務有三種基本網路流量模式:
- 使用者或用戶端對搜尋服務提出的輸入要求 (主要模式)
- 搜尋服務對 Azure 等位置上其他服務發出的輸出要求
- 透過安全 Microsoft 骨幹網路的內部服務對服務要求
輸入流量
以搜尋服務端點為目標的輸入要求包括:
- 在搜尋服務上建立、讀取、更新或刪除索引和其他物件
- 透過搜尋文件載入索引
- 查詢索引
- 觸發索引子或技能集執行
REST API 描述搜尋服務所處理的完整輸入要求範圍。
至少必須使用下列其中一個選項來驗證所有輸入要求:
- 金鑰型驗證 (預設)。 輸入要求提供有效的 API 金鑰。
- 角色型存取控制。 授權是透過您的搜尋服務上的 Microsoft Entra 身分識別和角色指派進行的。
此外,您可以新增網路安全功能,以進一步限制端點的存取。 您可以在 IP 防火牆中建立輸入規則或建立私人端點,讓您的搜尋服務完全不受公用網際網路威脅。
內部流量
內部要求會受到 Microsoft 保護和管理。 您無法設定或控制這些連線。 如果您要鎖定網路存取,則不需要採取任何動作,因為客戶無法設定內部流量。
內部流量包含:
- 針對工作的服務對服務呼叫,例如透過 Microsoft Entra ID 進行驗證和授權、傳送至 Azure 監視器的資源記錄,以及利用 Azure Private Link 的私人端點連線。
- 對 Azure AI 服務 API 提出的內建技能要求
- 對支援語意排名的機器學習模型提出要求。
輸出流量
輸出要求可以受到您的保護和管理。 輸出要求是從由搜尋服務中發出,目標是其他應用程式。 這些要求通常由索引子發出,用於基於文字的索引、基於自訂技能的 AI 豐富化,以及查詢時的向量化處理。 輸出要求包括讀取和寫入作業。
下列清單是您可以為其設定安全連線的輸出要求的完整列舉。 搜尋服務可代表其本身,以及索引子或自訂技能提出要求。
作業 | 案例 |
---|---|
索引子 | 連線到外部資料來源以擷取資料。 如需詳細資訊,請參閱索引子存取受 Azure 網路安全性保護的內容。 |
索引子 | 連線到 Azure 儲存體以持久保存知識存放區、快取的豐富化、偵錯工作階段。 |
自訂技能 | 連線到 Azure 函式、Azure Web 應用程式或執行服務之外裝載的外部程式碼的其他應用程式。 外部處理的要求會在技能集執行期間傳送。 |
索引子和整合向量化 | 連線到 Azure OpenAI 和已部署的內嵌模型,或透過自訂技能連線到您所提供的內嵌模型。 搜尋服務會在編製索引期間將文字傳送至內嵌模型以進行向量化處理。 |
向量化工具 | 在查詢時連線到 Azure OpenAI 或其他內嵌模型,將使用者文字字串轉換成向量以進行向量搜尋。 |
搜尋服務 | 連線到 Azure Key Vault,以取得用於加密和解密敏感性資料的客戶管理的加密金鑰。 |
輸出連線可以使用資源的完整存取連接字串 (包括金鑰或資料庫登入) 或受控識別 (如果您使用的是 Microsoft Entra ID 和角色型存取) 來建立。
若要存取防火牆後面的 Azure 資源,請在允許搜尋服務要求的其他 Azure 資源上建立輸入規則。
若要存取受 Azure Private Link 保護的 Azure 資源,請建立共用私人連結以讓索引子用來建立其連線。
相同區域搜尋和儲存體服務的例外狀況
如果 Azure 儲存體和 Azure AI 搜尋服務位於相同的區域,網路流量會透過私人 IP 位址路由傳送,並透過 Microsoft 骨幹網路進行。 由於使用私人 IP 位址,因此您無法針對網路安全性設定 IP 防火牆或私人端點。
使用下列其中一種方法設定相同區域連線:
網路安全性
網路安全性會控制網路流量,以防止有人未經授權存取或攻擊資源。 Azure AI 搜尋服務所支援的網路功能,可成為抵禦未經授權存取的第一道防線。
透過 IP 防火牆的輸入連線
搜尋服務會佈建公用端點,以允許使用公用 IP 位址進行存取。 若要限制可通過公用端點的流量,請建立輸入防火牆規則,以允許來自特定 IP 位址或 IP 位址範圍的要求。 所有用戶端連線都必須透過允許的 IP 位址進行,否則連線會遭到拒絕。
您可以使用入口網站來設定防火牆存取權。
或者,您可以使用管理 REST API。 從 API 2020-03-13 版開始,您可以使用 IpRule 參數來識別要授與搜尋服務存取權的 IP 位址 (個別或範圍),藉此限制服務的存取權。
私人端點 (網路隔離、沒有網際網路流量) 的輸入連線
如需更嚴格的安全性,您可以為 Azure AI 搜尋服務建立私人端點,讓虛擬網路上的用戶端透過 Private Link 安全地存取搜尋索引中的資料。
私人端點會使用來自虛擬網路位址空間的 IP 位址,連線至您的搜尋服務。 用戶端和搜尋服務之間的網路流量會經過 Microsoft 骨幹網路上的虛擬網路和私人連結,避免暴露在公開網際網路中。 虛擬網路可讓您保護資源之間、內部部署網路和網際網路的通訊。
雖然此解決方案最安全,不過使用更多服務會產生額外成本,因此在採用前,請務必先清楚了解優點。 如需成本的詳細資訊,請參閱定價頁面。 如需這些元件如何一起運作的詳細資訊,請觀看這段影片。 私人端點選項的涵蓋範圍從影片的 5:48 開始。 如需如何設定端點的指示,請參閱建立 Azure AI 搜尋服務的私人端點。
驗證
在要求獲准進入搜尋服務後,仍然必須經過驗證和授權,以判斷是否允許要求。 Azure AI 搜尋服務支援兩種驗證方法:
Microsoft Entra 驗證會建立呼叫者 (而不是要求) 作為已驗證的身分識別。 Azure 角色指派會決定授權。
金鑰式驗證會在要求上透過 API 金鑰執行 (不會呼叫應用程式或使用者),金鑰是由隨機產生的數字和字母組成的字串,可證明要求來自可信任的來源。 每項要求都必須使用金鑰。 提交有效的金鑰可證明要求源自受信任的實體。
您可以使用這兩種驗證方法,或將您不想在搜尋服務上使用的方法停用。
授權
Azure AI 搜尋服務針對服務管理和內容管理提供不同的授權模型。
Azure 服務管理
資源管理是透過您的 Microsoft Entra 租用戶中的角色型存取控制來進行授權。
在 Azure AI 搜尋服務中,可以使用 Resource Manager 來建立或刪除服務、管理 API 金鑰、調整服務規模,以及設定安全性。 因此,Azure 角色指派可以決定可執行這些工作的人員,無論他們是使用入口網站、PowerShell 或管理 REST API 都一樣。
三個基本角色 (擁有者、參與者、讀者) 適用於搜尋服務管理。 角色指派可以透過任何支援的方法 (入口網站、PowerShell 等) 執行,並適用於整個服務。
注意
透過 Azure 通用的機制,您可以鎖定訂用帳戶或資源,以防止具有系統管理權限的使用者意外或未經授權地刪除您的搜尋服務。 如需詳細資訊,請參閱鎖定資源以避免非預期的刪除。
授與內容的存取權
內容管理是指在搜尋服務上建立和裝載的物件。
針對角色型授權,使用 Azure 角色指派來建立作業的讀寫存取權。
針對金鑰型授權,API 金鑰和合格端點決定存取權。 端點可能是服務本身、索引集合、特定索引、文件集合或特定文件。 當鏈結在一起時,端點、作業 (例如,建立要求) 和金鑰類型 (系統管理或查詢) 會授權對內容和作業的存取。
限制索引的存取權
使用 Azure 角色,您可以在以程式設計方式完成的情況下,設定個別索引的權限。
任何人只要擁有您服務的系統管理金鑰,便可讀取、修改或刪除該相同服務中的任何索引。 為防止發生意外或惡意刪除索引,針對程式碼資產的內部來源控制,可作為防範非預期索引刪除或修改的解決方案。 Azure AI 搜尋服務會在叢集內提供容錯移轉功能以確保可用性,但無法儲存或執行用來建立或載入索引的專屬程式碼。
針對需要索引層級安全性界限的多租用戶解決方案,通常會在應用程式程式碼的中間層處理索引隔離。 如需有關多租用戶使用案例的詳細資訊,請參閱多租用戶 SaaS 應用程式與 Azure AI 搜尋服務的設計模式。
限制文件的存取權
Azure AI 搜尋服務原生不支援文件層級的使用者權限 (也稱為資料列層級安全性)。 如果您從提供資料列層級安全性的外部系統 (例如 Azure Cosmos DB) 匯入資料,這些權限不會隨資料一起傳輸,因為資料已由 Azure AI 搜尋服務編製索引。
如果您需要對搜尋結果中的內容具有許可的存取權,有一種技術可用來根據使用者身分識別來套用包含或排除文件的篩選條件。 此因應措施會在資料來源中新增字串欄位,此欄位代表群組或使用者身分識別,您可以在索引中進行篩選。 如需此模式的詳細資訊,請參閱根據身分識別篩選器的安全性調整。
資料落地
當您設定搜尋服務時,您可以選擇一個區域來決定客戶資料的儲存和處理位置。 每個區域都存在於一個通常包含多個區域的地理位置 (Geo) 內 (例如,瑞士是一個包含瑞士北部和瑞士西部的地理位置 (Geo))。 Azure AI 搜尋服務可能會將您的資料複寫到相同地理位置內的另一個區域,以實現持久性和高可用性。 該服務不會在您的指定地理位置之外儲存或處理客戶資料,除非您所設定的功能相依於另一個 Azure 資源,且該資源是在不同的區域中佈建配的。
目前,搜尋服務會寫入其中的唯一外部資源是 Azure 儲存體。 儲存體帳戶是您提供的帳戶,且可以位於任何區域中。 如果您使用下列任一項功能,則搜尋服務會寫入 Azure 儲存體:
如需資料落地的詳細資訊,請參閱 Azure 中的資料落地。
資料落地承諾的例外狀況
物件名稱會出現在 Microsoft 用來為服務提供支援的遙測記錄中。 物件名稱會在您選取的區域或位置之外進行儲存和處理。 物件名稱包括索引和索引欄位、別名、索引子、資料來源、技能集、同義字對應、資源、容器和金鑰保存庫存放區的名稱。 客戶不該在名稱欄位中放置任何敏感性資料,或者建立用途是在這些欄位中儲存敏感性資料的應用程式。
遙測記錄會保留一年半。 在此期間,Microsoft 可能會在下列情況下存取和參考物件名稱:
診斷問題、改善功能或修正錯誤。 在此案例中,資料存取僅供內部使用,沒有第三方存取權。
在支援期間,此資訊可用於快速解決問題,並視需要呈報產品小組
資料保護
在儲存體層級,資料加密會套用於儲存至磁碟的所有服務管理內容,包括索引、同義字對應,以及索引子、資料來源和技能集的定義。 服務管理的加密適用於長期資料儲存體和暫存資料儲存體。
您可以選擇新增客戶自控金鑰 (CMK) 作為索引內容的補充加密,從而對待用資料進行雙重加密。 針對在 2020 年 8 月 1 日之後建立的服務,CMK 加密延伸至暫存磁碟上的短期資料。
傳輸中資料
對於透過公用網際網路進行的搜尋服務連線,Azure AI 搜尋服務會接聽 HTTPS 連接埠 443。
Azure AI 搜尋服務支援 TLS 1.2 和 1.3 用於用戶端到服務之間的通道加密:
- TLS 1.3 是較新的用戶端作業系統和 .NET 版本的預設加密協定。
- TLS 1.2 是較舊系統的預設加密協定,但您可以在用戶端的要求上明確設定 TLS 1.3。
不支援舊版的 TLS (1.0 或 1.1)。
如需詳細資訊,請參閱 .NET Framework 中的 TLS 支援。
待用資料
針對由搜尋服務內部處理的資料,下表描述其資料加密模型。 某些功能 (例如知識存放區、累加擴充,以及索引子為基礎的索引編制) 會讀取或寫入其他 Azure 服務中的資料結構。 相依於 Azure 儲存體的服務可以使用該技術的加密功能。
模型 | 索引鍵 | 需求 | 限制 | 適用於 |
---|---|---|---|---|
伺服器端加密 | Microsoft 管理的金鑰 | 無 (內建) | 無,適用於 2018 年 1 月 24 日之後建立的內容,所有層級、所有區域皆可使用。 | 資料磁碟和暫存磁碟上的內容 (索引和同義字對應 )和定義 (索引子、資料來源、技能集) |
伺服器端加密 | 客戶自控金鑰 | Azure Key Vault | 適用於 2020 年 8 月 1 日之後建立的內容,計費層級、特定區域可使用。 | 資料磁碟上的內容 (索引和同義字對應) |
伺服器端完整加密 | 客戶自控金鑰 | Azure Key Vault | 2021 年 5 月 13 日之後的搜尋服務,計費層級、所有區域皆可使用。 | 資料磁碟和暫存磁碟上的內容 (索引和同義字對應) |
服務受控金鑰
服務管理的加密是 Microsoft 內部作業,使用 256 位元 AES 加密。 此加密會在所有索引編製程序上自動執行,包括針對未完全加密索引 (建立時間在 2018 年 1 月以前) 的累加式更新。
服務管理的加密適用於長期和短期儲存體上的所有內容。
客戶自控金鑰 (CMK)
客戶自控金鑰需要其他的計費服務 (Azure Key Vault),該服務可以位於不同的區域,但與 Azure AI 搜尋服務屬於相同訂用帳戶下。
CMK 支援分兩個階段推出。 如果您在第一個階段建立搜尋服務,則 CMK 加密僅限於長期儲存體和特定區域。 在 2021 年 5 月之後的第二個階段中建立的服務,可以在任何區域中使用 CMK 加密。 在第二波推出期間,內容在長期和短期儲存體上均經過 CMK 加密。 如需 CMK 支援的詳細資訊,請參閱完整雙重加密。
啟用 CMK 加密會增加索引大小,並降低查詢效能。 根據迄今為止的觀察,查詢時間大約會增加 30%-60%,不過實際效能會取決於索引定義和查詢類型。 由於此效能負面影響,我們建議您僅在有實際需求的索引上啟用此功能。 如需詳細資訊,請參閱在 Azure AI 搜尋服務中設定客戶自控加密金鑰。
安全性管理
管理 API 金鑰
若採用 API 金鑰式驗證,則根據 Azure 安全性最佳做法,您應該定期重新產生系統管理金鑰。 每個搜尋服務最多有兩個系統管理金鑰。 如需保護與管理 API 金鑰的詳細資訊,請參閱建立及管理 API 金鑰。
活動和資源記錄
Azure AI 搜尋服務不會記錄使用者身分識別,因此您無法參考記錄以取得特定使用者的相關資訊。 不過,此服務會記錄建立/讀取/更新/刪除作業,將此資訊與其他記錄相互關聯或許能了解特定動作的執行者。
透過 Azure 中的警示和記錄基礎結構,您可以選擇查詢磁碟區尖峰,或其他偏離預期工作負載的動作。 如需設定記錄的詳細資訊,請參閱收集和分析記錄資料和監視查詢要求。
認證和合規性
Azure AI 搜尋服務會參與定期稽核,並已獲得許多針對公用雲端和 Azure Government 的全球、地區以及產業專屬的認證。 如需完整清單,請從官方稽核報告頁面下載 Microsoft Azure 合規性供應項目白皮書。
為符合規範,您可以使用 Azure 原則來實作 Microsoft 雲端安全性基準的高安全性最佳做法。 Microsoft 雲端安全性基準測試是安全性建議的集合,且編列為安全性控制項,對應至您應該採取的重要動作,進而減輕服務與資料的威脅。 目前有 12 個安全性控制項,包括網路安全性、記錄和監視,以及資料保護。
Azure 原則是 Azure 內建的功能,可協助您管理多個標準的合規性,也包括 Microsoft 雲端安全性基準。 針對已知的基準測試,Azure 原則具有內建定義,提供解決不符合規範的準則和可採取動作的回應。
針對 Azure AI 搜尋服務,目前有一個內建定義。 此定義用於資源記錄。 您可以指派原則來識別任何遺漏資源記錄的搜尋服務,然後啟用記錄。 如需更多資訊,請參閱適用於Azure AI 搜尋服務的 Azure 原則法規合規性控制項。
觀看這段視訊
請觀看這個簡潔的影片,了解安全性架構和每個功能類別的概觀。