共用方式為


使用受控識別連線到 Azure 儲存體 (Azure AI 搜尋)

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

您可以使用系統指派的受控識別或使用者指派的受控識別。 受控識別Microsoft Entra 登入,需要角色指派才能存取 Azure 儲存體。

必要條件

  • 具有受控識別的 Azure AI 搜尋、基本層或更高 層級

注意

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

在 Azure 儲存體 中建立角色指派

  1. 登入 Azure 入口網站 並尋找您的記憶體帳戶。

  2. 選取 [存取控制 (IAM)]。

  3. 選取 [ 新增 ],然後選取 [ 角色指派]。

  4. 從作業函式角色清單中,選取搜尋服務所需的角色:

    Task 角色指派
    使用索引子編製 Blob 索引 新增儲存體 Blob 資料讀者
    使用索引子編製 ADLS Gen2 索引 新增儲存體 Blob 資料讀者
    使用索引子編製資料表索引 讀者及資料存取
    使用索引子編製檔案索引 讀者及資料存取
    寫入知識存放區 針對物件和檔案投射新增儲存體 Blob 資料參與者,以及針對資料表投射新增讀者和資料存取
    寫入擴充快取 新增儲存體 Blob 資料參與者
    儲存偵錯工作階段狀態 新增儲存體 Blob 資料參與者
  5. 選取 [下一步]。

  6. 選取 [ 受控識別 ],然後選取 [ 成員]。

  7. 依系統指派的受控識別或使用者指派的受控識別進行篩選。 您應該會看到您先前為搜尋服務建立的受控識別。 如果您沒有,請參閱 設定搜尋以使用受控識別。 如果您已經設定一個,但無法使用,請提供幾分鐘的時間。

  8. 選取身分識別並儲存角色指派。

在 連接字串 中指定受控識別

擁有角色指派之後,您可以設定與 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 儲存體的索引子連線作為受信任的服務

另請參閱