備註
Azure AI 搜尋服務 可透過 Azure 入口網站、REST API 及 Azure SDK 取得。 它同時也是 Foundry IQ 的基礎,這是一個管理式知識層,能將企業內容轉化為可重複使用、權限感知的知識庫,供 Microsoft Foundry 入口網站中的代理使用。
瞭解如何使用 Azure AI 搜尋服務 ,在 Azure Blob 儲存體中以客戶自控金鑰加密的文件編製索引。
一般而言,索引子無法從 Azure Blob 儲存體用戶端程式庫中使用 用戶端加密 加密的 Blob 擷取內容。 這是因為索引子無法存取 Azure Key Vault 中的客戶管理加密金鑰。 不過,使用 DecryptBlobFile 自訂技能 和 [文件擷取] 技能,您可以提供金鑰的受控存取權,以解密檔案,然後從中擷取內容。 這解鎖了索引和豐富這些文檔的能力,而不會影響存儲文檔的加密狀態。
從先前加密的整個文件 (非結構化文字) 開始,例如 Azure Blob 儲存體中的 PDF、HTML、DOCX 和 PPTX,本教學課程會使用 REST 用戶端和搜尋 REST API 來:
- 定義解密文件並從中擷取文字的管線
- 定義索引以儲存輸出
- 執行管線以建立和載入索引
- 使用全文檢索搜尋和豐富的查詢語法探索結果
先決條件
具有有效訂閱的 Azure 帳戶。 免費建立帳戶。
任何層或區域上的 Azure AI 搜尋服務。
Azure 儲存體、標準效能 (一般用途 v2)。
使用客戶管理的金鑰加密的 Blob。 若要建立範例資料,請參閱 教學課程:使用 Azure 金鑰保存庫加密和解密 Blob。
Azure 金鑰保存庫 位於與 Azure AI 搜尋服務相同的訂用帳戶中。 金鑰保存庫必須啟用 軟刪除 和 清除保護。
自訂技能部署會建立 Azure 函式應用程式和 Azure 儲存體帳戶。 這些資源是為您建立的,因此不會列為必要條件。 當您完成本教學課程時,請記得清除資源,這樣就不會針對您未使用的服務付費。
備註
技能集通常需要 附加 Microsoft Foundry 資源。 依照規則,這套技能組不依賴 Foundry,因此不需要鑰匙。 如果您稍後新增叫用內建技能的擴充,請記得相應地更新您的技能集。
部署自訂技能
本教學課程會使用 Azure 搜尋服務 Power Skills GitHub 存放庫中的範例 DecryptBlobFile 專案。 在本節中,您會將技能部署至 Azure 函式,以便在技能組中使用。 內建部署指令碼會建立具有 psdbf-function-app- 前置詞的 Azure 函式資源,並載入技能。 系統會提示您提供訂用帳戶和資源群組。 請務必選擇包含 Azure 金鑰保存庫執行個體的訂用帳戶。
在操作上,DecryptBlobFile 技能使用每個 blob 的 URL 和 SAS 權杖作為輸入。 它會使用 Azure AI 搜尋服務預期的檔案參考合約輸出下載、解密的檔案。 回想一下,DecryptBlobFile 需要加密金鑰才能執行解密。 在安裝過程中,您也可以建立存取原則,以授與 DecryptBlobFile 函式存取 Azure 金鑰保存庫中加密金鑰的存取權。
在 [DecryptBlobFile] 登陸頁面上,選取 [部署至 Azure ],以在 Azure 入口網站中開啟 Resource Manager 範本。
選擇 Azure 金鑰保存庫執行個體所在的訂用帳戶。 如果您選擇不同的訂用帳戶,本教學課程將無法運作。
選取現有的資源群組或建立新群組。 專用資源群組可讓您稍後更輕鬆地進行清理。
選取 [ 檢閱 + 建立],同意條款,然後選取 [ 建立 ] 以部署 Azure 函式。
等待部署完成。
您應該有包含解密邏輯的 Azure 函式應用程式,以及將儲存應用程式資料的 Azure 儲存體資源。 在後續步驟中,您會授與應用程式存取金鑰保存庫的權限,並收集 REST 呼叫所需的資訊。
在 Azure 金鑰保存庫中授與許可權
在 Azure 入口網站中,前往您的 Azure Key Vault 服務。 在 Azure 金鑰保存庫中建立存取原則,以授與自訂技能的金鑰存取權。
從左窗格中,選取 [ 存取原則],然後選取 [+ 建立 ] 以啟動 [ 建立存取原則 精靈]。
在 [許可權] 頁面的 [從範本設定] 底下,選取 [Azure Data Lake 儲存體] 或 [Azure 儲存體]。
選取 下一步。
在 [主體] 頁面上,選取您部署的 Azure 函式執行個體。 您可以使用其資源前置詞來搜尋它,其預設值為 psdbf-function-app。
選取 下一步。
在 [檢閱 + 建立] 頁面上,選取 [建立]。
收集應用程式資訊
移至 Azure 入口網站中的 psdbf-function-app 函式。 記下 REST 呼叫所需的下列屬性。
取得函式 URL,可在函式主頁的 [基本] 下找到。
取得主機金鑰代碼,您可以移至 應用程式金鑰,顯示 預設 金鑰,再複製其值。
取得 Azure AI 搜尋服務的管理員金鑰和 URL
在 Azure 入口網站中移至您的搜尋服務。
在搜尋服務 概觀 頁面上,取得搜尋服務的名稱。 您可以檢閱端點 URL 來確認您的服務名稱。 例如,如果您的端點 URL 是
https://mydemo.search.windows.net,您的服務名稱是mydemo。在 [設定>金鑰] 中,取得系統管理員金鑰,以取得服務的完整權限。 可互換的管理金鑰有兩個,可在您需要變換金鑰時提供商務持續性。 你可以在請求中使用任一鍵來新增、修改或刪除物件。
傳送至您服務的每個請求的標頭中都需要 API 金鑰。 有效的金鑰能為每個要求在傳送要求的應用程式與處理要求的服務之間建立信任。
設定 REST 用戶端
為端點和索引鍵建立下列變數。
| Variable | 哪裡可以買到 |
|---|---|
admin-key |
在 Azure AI 搜尋服務的 [ 金鑰] 頁面上。 |
search-service-name |
Azure AI 搜尋服務的名稱。 URL 是 https://{{search-service-name}}.search.windows.net。 |
storage-connection-string |
在儲存體帳戶的 [ 存取金鑰] 索引標籤上,選取 [key1>連接字串]。 |
storage-container-name |
Blob 容器的名稱,該容器具有要編製索引的加密檔案。 |
function-uri |
在主頁面上 [Essentials] 底下的 Azure 函式中。 |
function-code |
在 Azure 函式中,移至 [應用程式金鑰]、顯示 預設 金鑰,然後複製值。 |
api-version |
保持為 2020-06-30。 |
datasource-name |
保留為 encrypted-blobs-ds。 |
index-name |
保留為 encrypted-blobs-idx。 |
skillset-name |
保留為 encrypted-blobs-ss。 |
indexer-name |
保留為 encrypted-blobs-ixr。 |
檢閱並執行每個要求
使用下列 HTTP 要求來建立擴充管線的物件。
建立索引的 PUT 要求:此搜尋索引會保留 Azure AI 搜尋服務使用和傳回的資料。
用於建立資料來源的 POST 請求:此資料來源指定了與包含加密 Blob 檔案的儲存帳戶的連接。
建立技能集的 PUT 要求:技能集會指定 Azure 函式的自訂技能定義,以解密 Blob 檔案資料。 它也會指定 DocumentExtractionSkill ,以在解密之後從每個文件擷取文字。
建立索引子的 PUT 要求:執行索引子會擷取 Blob、套用技能組,以及編製索引並儲存結果。 您必須最後再執行此要求。 技能集中的自訂技能會叫用解密邏輯。
監視索引
索引和擴充會在您提交建立索引子要求後立即開始。 視儲存體帳戶中的文件數目而定,索引可能需要一段時間。 若要瞭解索引子是否仍在執行中,請傳送 [取得索引子狀態 ] 要求,並檢閱回應,以瞭解索引子是否正在執行,或檢視錯誤和警告資訊。
如果您使用免費方案,則預期會出現下列訊息: "Could not extract content or metadata from your document. Truncated extracted text to '32768' characters"。 出現此訊息是因為免費層上的 Blob 索引對 字元擷取有 32,000 個限制。 對於較高層級的此資料集,您不會看到此訊息。
搜尋您的內容
索引子執行完成後,您可以執行查詢來驗證資料是否已成功解密和編製索引。 移至 Azure 入口網站中的 Azure AI 搜尋服務,並使用 [搜尋總管 ] 對索引資料執行查詢。
清理資源
如果您使用自己的訂用帳戶,當專案結束時,建議您移除不再需要的資源。 讓資源繼續執行可能會產生費用。 您可以個別刪除資源,或刪除資源群組以刪除整組資源。
您可以使用左側瀏覽窗格中的 [所有資源] 或 [資源群組] 連結,在 Azure 入口網站 中找到和管理資源。
後續步驟
既然您已編製加密檔案的索引,您可以新增更多技能來擴充及深入了解資料,以逐一查看此管線。
如果您正在使用雙重加密的資料,您可能想要調查 Azure AI 搜尋服務中可用的索引加密功能。 雖然索引子需要解密的資料來進行索引,但一旦索引存在,就可以使用客戶管理的金鑰在搜尋索引中加密它。 這可確保您的資料在靜態時始終被加密。 如需詳細資訊,請參閱 在 Azure AI 搜尋服務中設定客戶自控金鑰以進行資料加密。