你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

使用托管标识连接到Azure 存储(Azure AI 搜索)

注意

Azure AI 搜索可通过Azure门户、REST API 和Azure SDK获取。 它也是 Foundry IQ 的基础;Foundry IQ 是一个托管式知识层,可将企业内容转化为供 Microsoft Foundry 门户中的智能体使用的、可复用且具备权限感知能力的知识库。

本文介绍如何使用托管身份配置与 Azure 存储 帐户的搜索服务连接,而不是在 连接字符串 中输入凭据。

可以使用系统分配的托管标识或用户分配的托管标识。 托管身份是 Microsoft Entra 登录名,需要进行角色分配才能访问 Azure 存储。

先决条件

  • Azure AI 搜索基本层或更高层,具有托管标识。

注意

如果存储受网络保护,并且与搜索服务位于同一区域中,则必须使用系统分配的托管标识和以下任一网络选项: 连接为受信任的服务,或使用 资源实例规则进行连接。

在 Azure 存储 中创建角色分配

  1. 登录到Azure门户并找到存储帐户。

  2. 选择“访问控制”(IAM)。

  3. 选择 “添加 ”,然后选择“ 角色分配”。

  4. 从作业函数角色列表中,选择搜索服务所需的角色:

    任务 角色分配
    使用索引器进行 Blob 索引编制 添加 存储 Blob 数据读取器
    使用索引器对 ADLS Gen2 进行索引 添加 存储 Blob 数据读取器
    使用索引器为表格建立索引 添加 存储表数据读取器
    使用索引器编制文件索引 添加 读取器和数据访问
    写入 知识存储 添加适用于对象和文件投影的“存储 Blob 数据参与者”,以及适用于表投影的“读取者和数据访问”。
    写入到 增强缓存(预览) 添加 存储 Blob 数据参与者 和 存储表数据参与者
    保存 调试会话状态 添加 存储 Blob 数据参与者
  5. 选择 “下一步”。

  6. 选择 托管标识,然后选择成员。

  7. 按系统分配的托管标识或用户分配的托管标识进行筛选。 您应该看到之前为您的搜索服务创建的托管身份。 如果没有托管标识,请参阅 “配置搜索”以使用托管标识。 如果已设置但它不可用,请等待几分钟。

  8. 选择标识并保存角色分配。

在连接字符串中指定托管标识

分配角色后,可以设置与在该角色下运行的Azure 存储的连接。

索引器 使用数据源对象连接到外部数据源。 本节解释如何在数据源连接字符串中指定系统分配的托管标识或用户分配的托管标识。 可以在托管标识文章中找到更多连接字符串示例。

提示

可以在 Azure 门户中创建与 Azure 存储 的数据源连接,指定系统分配或用户分配的托管标识,然后查看 JSON 定义以了解如何构建连接字符串。

系统分配的托管标识

必须事先配置系统分配的托管标识,并且该标识必须在 Azure 存储上具有角色分配。

对于使用系统分配的托管标识建立的连接,对 数据源定义 的唯一更改是 credentials 属性的格式。

提供一个包含 ResourceId 的连接字符串,但不包含帐户密钥或密码。 必须包括 ResourceId 存储帐户的订阅 ID、存储帐户的资源组和存储帐户名称。

POST https://[service name].search.windows.net/datasources?api-version=2026-04-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 存储上具有角色分配。

通过用户分配的托管标识建立的连接使用与系统分配的托管标识相同的凭据,以及包含用户分配的托管标识集合的额外标识属性。 创建数据源时,只应提供一个用户分配的托管标识。

提供一个包含 ResourceId 的连接字符串,但不包含帐户密钥或密码。 必须包括 ResourceId 存储帐户的订阅 ID、存储帐户的资源组和存储帐户名称。

请使用以下示例中显示的语法提供identity。 将 userAssignedIdentity 设置为用户分配的托管标识。

POST https://[service name].search.windows.net/datasources?api-version=2026-04-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 存储,作为受信任的服务。

另请参阅