使用受控識別設定 Azure 儲存體的索引器連線

本文說明如何使用受控識別來設定 Azure 儲存體 帳戶的索引器連線,而不是在 連接字串 中提供認證。

您可以使用系統指派的受控識別或使用者指派的受控識別 (預覽版)。 受控識別是 Microsoft Entra 登入,需要 Azure 角色指派才能存取 Azure 儲存體 中的數據。

注意

如果記憶體受到網路保護,且位於與搜尋服務相同的區域中,您必須使用系統指派的受控識別,以及下列其中一個網路選項: 連線為受信任的服務,或使用 資源實例規則進行連線。

必要條件

提示

如需 C# 中的程式代碼範例,請參閱 在 GitHub 上使用 Microsoft Entra ID 編製 Data Lake Gen2 的索引。

建立資料來源

建立數據源,並提供系統指派的受控識別或使用者指派的受控識別(預覽)。

系統指派的受控識別

REST API、Azure 入口網站 和 .NET SDK 支援使用系統指派的受控識別。

當您使用系統指派的受控識別進行連線時,資料來源定義中只需要變更 "credentials" 屬性的格式。 提供沒有帳戶金鑰或密碼的 ResourceId。 ResourceId 必須包含記憶體帳戶的訂用帳戶標識碼、記憶體帳戶的資源群組,以及記憶體帳戶名稱。

以下示範如何使用建立資料來源 REST API 和受控識別連接字串,建立資料來源以便為來自儲存體帳戶的資料編製索引。 對於 REST API、.NET SDK 和 Azure 入口網站,受控識別連接字串格式都相同。

POST https://[service name].search.windows.net/datasources?api-version=2023-11-01
Content-Type: application/json
api-key: [admin key]

{
    "name" : "blob-datasource",
    "type" : "azureblob",
    "credentials" : { 
        "connectionString" : "ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Storage/storageAccounts/[storage account name]/;" 
    },
    "container" : { 
        "name" : "my-container", "query" : "<optional-virtual-directory-name>" 
    }
}   

使用者指派的受控識別 (預覽)

2021-04-30-preview REST API 支援以使用者指派的受控識別為基礎的連線。 當您使用使用者指派的受控識別進行連線時,數據源定義有兩個變更:

  • 首先,“credentials” 屬性的格式是沒有帳戶密鑰或密碼的 ResourceId。 ResourceId 必須包含記憶體帳戶的訂用帳戶標識碼、記憶體帳戶的資源群組,以及記憶體帳戶名稱。 此格式與系統指派的受控識別格式相同。

  • 其次,新增包含使用者指派受控識別集合的「身分識別」屬性。 建立數據源時,應該只提供一個使用者指派的受控識別。 將它設定為輸入 「userAssignedIdentities」。。

以下是如何使用預覽建立或更新資料來源 REST API 來建立索引器數據源物件的範例:

POST https://[service name].search.windows.net/datasources?api-version=2021-04-30-preview
Content-Type: application/json
api-key: [admin key]

{
    "name" : "blob-datasource",
    "type" : "azureblob",
    "credentials" : { 
        "connectionString" : "ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Storage/storageAccounts/[storage account name]/;" 
    },
    "container" : { 
        "name" : "my-container", "query" : "<optional-virtual-directory-name>" 
    },
    "identity" : { 
        "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
        "userAssignedIdentity" : "/subscriptions/[subscription ID]/resourcegroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]" 
    }
}   

建立索引

索引會指定文件、屬性和其他建構中可形塑搜尋體驗的欄位。

以下是使用content搜尋欄位建立索引 REST API 呼叫,以儲存從 Blob 擷取的文字:

POST https://[service name].search.windows.net/indexes?api-version=2023-11-01
Content-Type: application/json
api-key: [admin key]

{
        "name" : "my-target-index",
        "fields": [
        { "name": "id", "type": "Edm.String", "key": true, "searchable": false },
        { "name": "content", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false }
        ]
}

建立索引器

索引子會以目標搜尋索引連接資料來源,並提供排程來自動重新整理資料。 建立索引和數據源之後,您就可以建立並執行索引器。 如果索引器成功,連線語法和角色指派是有效的。

以下是使用 Blob 索引器定義建立索引器 REST API 呼叫。 索引器會在您提交要求時執行。

POST https://[service name].search.windows.net/indexers?api-version=2023-11-01
Content-Type: application/json
api-key: [admin key]

{
    "name" : "blob-indexer",
    "dataSourceName" : "blob-datasource",
    "targetIndexName" : "my-target-index"
}

存取記憶體帳戶中的網路安全數據

您可以使用防火牆和虛擬網路進一步保護 Azure 記憶體帳戶。 如果您想要從使用防火牆或虛擬網路保護的記憶體帳戶編製內容索引,請參閱將索引器聯機到 Azure 儲存體 做為受信任的服務

另請參閱