共用方式為


使用受控識別連線到 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 屬性的格式。

提供沒有帳戶金鑰或密碼的 ResourceIdResourceId 必須包含儲存體帳戶的訂用帳戶識別碼、儲存體帳戶的資源群組,以及儲存體帳戶名稱。

POST https://[service name].search.windows.net/datasources?api-version=2024-07-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 為使用者指派的受控識別。

提供沒有帳戶金鑰或密碼的 ResourceIdResourceId 必須包含儲存體帳戶的訂用帳戶識別碼、儲存體帳戶的資源群組,以及儲存體帳戶名稱。

使用如下列範例所示的語法提供 identity

POST https://[service name].search.windows.net/datasources?api-version=2024-07-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 儲存體的索引子連線作為受信任的服務

另請參閱