Foundry中校验当前token数据集读取权限的最优推荐API调用方法
Foundry 数据集内容读权限校验最优方案
默认分配给用户的discoverer权限确实支持调用catalog/datasets/<rid>/reverse-transactions2/<branch>接口查询数据集最新事务RID,因此该接口无法用于校验用户是否具备数据集实际内容读取权限,官方推荐的无数据拉取、性能最优的校验方式有两种,按优先级排序如下:
- 首选:调用安全模块专用权限校验接口
/api/v1/security/permissions/check
该接口是平台权限校验的专用轻量接口,不会拉取任何业务资源的实际内容,性能开销最低。调用时仅需在请求体中传入目标数据集RID、对应的操作码即可,校验数据集读权限对应的操作码为compass:view-data,请求示例如下:
接口返回200状态码且响应体中POST /api/v1/security/permissions/check Content-Type: application/json { "resourceRid": "<目标数据集RID>", "operation": "compass:view-data" }result字段值为GRANTED时,代表当前持有的Token具备数据集内容读取权限;返回DENIED则无对应权限。 - 次选:调用Catalog服务提供的读权限预检接口
/api/v1/catalog/datasets/<rid>/branches/<branch>/read-permission
该接口是数据集模块专门提供的读权限前置校验接口,不会读取数据集实际存储内容、不会触发全量元数据拉取,仅做权限位判断,性能远高于事务查询、文件列表查询等业务接口。接口返回204状态码代表有读权限,返回403状态码代表无读权限。
避坑提示:以下接口的权限要求低于实际数据集内容读权限,仅需
discoverer或基础元数据查看权限即可访问,用于权限校验会出现误判,请勿使用:
- 数据集基础元数据查询接口
- 分支、事务列表查询接口(包括之前使用的
reverse-transactions2接口)- 数据集Schema查询接口
内容的提问来源于stack exchange,提问作者nicornk
相关产品推荐
相关产品推荐

