内容提要
Apache Iceberg社区新增读取限制和目录标签两项REST目录规范。读取限制支持目录向受信任引擎下发过滤和掩码,适用于引擎直连目录;目录标签通过键值元数据在异构目录间传递治理信息,由消费方本地执行,适用于目录联邦。两者与集中式执行共同实现跨引擎、跨目录的统一治理。
延伸解读
读取限制的适用边界
读取限制要求目录将策略结果转换为标准词汇表中的过滤或掩码指令,由受信任引擎执行。这意味着策略必须能简化为九种列投影动作和标准行过滤表达式。若企业策略依赖子查询、查找表或自定义UDF,则无法用读取限制表达,会丢失策略语义。因此,它最适合源目录策略简单、且引擎受信任的直连场景。
信任机制不在协议内
规范定义了受信任引擎必须执行什么,但未规定目录如何建立信任。客户端声明不足以证明信任,系统管理员需根据环境采用mTLS、OAuth等安全机制。信任最终在协议之外,实现时必须自行解决身份传播、用户与引擎代理的区分、凭证绑定等问题。
目录标签的语义局限
目录标签以不透明键值对形式在目录间传递元数据,但标准未定义共享语义或稳定标识符,标签血缘不超出源目录。消费目录只收到解析后的键值,不知道标签原本用于发现、访问控制还是成本归因。因此标签让元数据可移植,却不传递其含义,企业仍需共享约定或显式映射来一致解释标签。
三种治理模式的取舍
集中式执行适合不可信引擎,由目录通过安全过滤服务返回授权数据,但增加延迟和运维依赖,且表响应因用户而异,影响缓存和浏览体验。读取限制适合受信任引擎,决策限于标准词汇,审计记录分散。目录标签适合异构目录联邦,消费目录本地执行策略,保留原生策略表达力,但需自行维护审计。选择取决于目标端是引擎还是目录。
Q&A
Apache Iceberg 新增的读取限制和目录标签分别解决什么问题?
读取限制解决将策略执行委托给受信任引擎的问题;目录标签解决在异构目录间联邦时治理上下文可移植的问题。
读取限制是如何工作的?
当读取器通过 Iceberg REST Catalog 加载表时,目录评估请求主体的策略,返回所需的列投影操作和行过滤表达式,受信任引擎在读取表时应用这些限制。
目录标签如何实现跨目录治理?
生产目录通过 Open API 返回表和列级标签,消费目录将标签映射到自己的分类或标签模型,然后使用本地身份和策略评估访问并在自己的运行时中执行控制。
读取限制和目录标签分别适用于什么场景?
读取限制适用于直接引擎到目录访问,且源目录策略简单、受信任引擎能执行结果;目录标签适用于异构系统间联邦,消费目录有自己的治理系统并需要可重用上下文。
读取限制有哪些局限性?
策略必须能简化为标准定义的有限词汇(九种列投影操作和标准行过滤表达式),否则会丢失策略语义;信任建立机制不在协议内,需管理员使用适当安全机制;审计记录分散在源和目的系统。
目录标签有哪些局限性?
标签是不透明的键值对,标准未定义共享语义或稳定标识符,血缘不超出源目录,消费目录只收到解析后的键值,不知道标签的预期用途,需要共享约定或显式映射来一致解释。
集中式执行、读取限制和目录标签三者如何配合实现统一治理?
集中式执行用于不受信任引擎,通过扫描规划在目录内执行策略;读取限制用于受信任引擎,目录返回限制由引擎执行;目录标签用于目录间联邦,交换元数据由消费目录本地执行。三者共同提供跨引擎、跨目录的统一治理选项。