使用受控識別連線到 Azure 儲存體 (Azure AI 搜尋)
本文說明如何使用受控識別來設定 Azure 儲存體 帳戶的搜尋服務連線,而不是在 連接字串 中提供認證。
您可以使用系統指派的受控識別或使用者指派的受控識別。 受控識別Microsoft Entra 登入,需要角色指派才能存取 Azure 儲存體。
必要條件
- 具有受控識別的 Azure AI 搜尋、基本層或更高 層級。
在 Azure 儲存體 中建立角色指派
登入 Azure 入口網站 並尋找您的記憶體帳戶。
選取 [存取控制 (IAM)]。
選取 [ 新增 ],然後選取 [ 角色指派]。
從作業函式角色清單中,選取搜尋服務所需的角色:
Task 角色指派 使用索引子編製 Blob 索引 新增儲存體 Blob 資料讀者 使用索引子編製 ADLS Gen2 索引 新增儲存體 Blob 資料讀者 使用索引子編製資料表索引 讀者及資料存取 使用索引子編製檔案索引 讀者及資料存取 寫入知識存放區 針對物件和檔案投射新增儲存體 Blob 資料參與者,以及針對資料表投射新增讀者和資料存取。 寫入擴充快取 新增儲存體 Blob 資料參與者 儲存偵錯工作階段狀態 新增儲存體 Blob 資料參與者 選取 [下一步]。
選取 [ 受控識別 ],然後選取 [ 成員]。
依系統指派的受控識別或使用者指派的受控識別進行篩選。 您應該會看到您先前為搜尋服務建立的受控識別。 如果您沒有,請參閱 設定搜尋以使用受控識別。 如果您已經設定一個,但無法使用,請提供幾分鐘的時間。
選取身分識別並儲存角色指派。
在 連接字串 中指定受控識別
擁有角色指派之後,您可以設定與 Azure 儲存體 連線,以在該角色下運作。
索引器會使用數據源物件連接到外部數據源。 本節說明如何在數據源 連接字串 上指定系統指派的受控識別或使用者指派的受控識別。 您可以在受控識別一文中找到更多 連接字串 範例。
提示
您可以在 Azure 入口網站 中建立數據源連線至 Azure 儲存體、指定系統或使用者指派的受控識別,然後檢視 JSON 定義,以查看 連接字串 的制定方式。
系統指派的受控識別
您必須已設定系統指派的受控識別,且必須在 Azure 儲存體 上指派角色。
對於使用系統指派的受控識別所建立的連接,數據源定義的唯一變更是 屬性的格式credentials
。
ResourceId
提供沒有帳號金鑰或密碼的 。 ResourceId
必須包含記憶體帳戶的訂用帳戶標識碼、記憶體帳戶的資源群組,以及記憶體帳戶名稱。
POST https://[service name].search.windows.net/datasources?api-version=2023-11-01
{
"name" : "blob-datasource",
"type" : "azureblob",
"credentials" : {
"connectionString" : "ResourceId=/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/MY-DEMO-RESOURCE-GROUP/providers/Microsoft.Storage/storageAccounts/MY-DEMO-STORAGE-ACCOUNT/;"
},
"container" : {
"name" : "my-container", "query" : "<optional-virtual-directory-name>"
}
}
使用者指派的受控識別
您必須已設定使用者指派的受控識別,並與搜尋服務相關聯,且身分識別必須在 Azure 儲存體 上具有角色指派。
透過使用者指派的受控識別建立的聯機會使用與系統指派的受控識別相同的認證,再加上包含使用者指派受控識別集合的額外身分識別屬性。 建立資料來源時,應該只提供一個使用者指派的受控識別。 設定 userAssignedIdentity
為使用者指派的受控識別。
ResourceId
提供沒有帳號金鑰或密碼的 。 ResourceId
必須包含記憶體帳戶的訂用帳戶標識碼、記憶體帳戶的資源群組,以及記憶體帳戶名稱。
identity
使用下列範例所示的語法來提供 。
POST https://[service name].search.windows.net/datasources?api-version=2023-11-01
{
"name" : "blob-datasource",
"type" : "azureblob",
"credentials" : {
"connectionString" : "ResourceId=/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/MY-DEMO-RESOURCE-GROUP/providers/Microsoft.Storage/storageAccounts/MY-DEMO-STORAGE-ACCOUNT/;"
},
"container" : {
"name" : "my-container", "query" : "<optional-virtual-directory-name>"
},
"identity" : {
"@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
"userAssignedIdentity" : "/subscriptions/00000000-0000-0000-0000-00000000/resourcegroups/MY-DEMO-RESOURCE-GROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MY-DEMO-USER-MANAGED-IDENTITY"
}
}
遠端服務的連線資訊和許可權會在索引器執行期間於運行時間進行驗證。 如果索引子成功,則連接語法和角色指派有效。 如需詳細資訊,請參閱 執行或重設索引器、技能或檔。
存取儲存體帳戶中的網路安全資料
您可以使用防火牆和虛擬網路進一步保護 Azure 儲存體帳戶。 如果您想要從使用防火牆或虛擬網路保護的儲存體帳戶編製內容索引,請參閱建立與 Azure 儲存體的索引子連線作為受信任的服務。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應