You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何扩展AOAI Studio生成的索引以添加Data Lake Gen 2 ACL信息

扩展Azure认知搜索索引与索引器导入ADLS Gen2 ACL信息方案

1. 扩展现有搜索索引添加ACL字段

先修改自动创建的搜索索引,新增用于存储权限信息的字段,适配Entra用户组权限控制需求:

  • allowedGroups:类型设为Collection(Edm.String),用于存储允许访问该文档的Entra用户组ID集合
  • (可选)allowedUsers:类型设为Collection(Edm.String),若需限制单个用户访问可添加

操作方式

通过Azure CLI修改:

  1. 导出现有索引定义:
az search index show --name <你的索引名称> --resource-group <资源组名称> --service-name <搜索服务名称> > index-def.json
  1. 在fields数组中添加上述字段后,执行更新:
az search index create --name <你的索引名称> --resource-group <资源组名称> --service-name <搜索服务名称> --file index-def.json --merge

2. 配置索引器提取ADLS Gen2 ACL信息

自动创建的索引器默认不提取ACL,需调整数据源配置与字段映射:

  • 确保数据源权限:数据源使用系统分配托管标识,且该标识拥有ADLS Gen2容器的Storage Blob Data Reader权限,保证能读取Blob的元数据与ACL信息
  • 字段映射配置:
    若已将允许的用户组ID以分号/逗号分隔的形式存入Blob自定义元数据(比如x-ms-meta-allowedgroups字段),可直接通过内置映射函数提取:
"fieldMappings": [
  // 保留原有字段映射
  {
    "sourceFieldName": "metadata_x-ms-meta-allowedgroups",
    "targetFieldName": "allowedGroups",
    "mappingFunction": {
      "name": "split",
      "parameters": { "delimiter": ";" }
    }
  }
]

若依赖ADLS Gen2原生POSIX ACL,可通过添加自定义技能调用存储API获取权限并解析组ID,但优先推荐自定义元数据方式,避免额外预处理工作。

3. 在Azure OpenAI聊天界面实现ACL过滤

用户发起查询时,需在搜索请求中加入安全筛选器,将当前用户所属的Entra组ID与索引中allowedGroups字段匹配。构造筛选条件示例:

allowedGroups/any(g: g eq '<组ID1>' or g eq '<组ID2>')

通过Azure OpenAI的data_source参数调用搜索时,将上述条件传入filter字段即可。

4. 验证权限控制效果

  • 手动触发索引器运行,检查索引中allowedGroups字段是否正确填充目标组ID
  • 使用不同用户组的账号登录聊天界面,验证仅能访问对应权限范围内的文档

内容的提问来源于stack exchange,提问作者Epstone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 18:08:21