背景信息
阿里云数据湖构建产品(DLF)提供的统一元数据服务,通过完善各种引擎/表格式生态解决了数据湖场景下多引擎面临的数据孤岛和元数据一致性问题,实现了开源大数据引擎及数据湖格式元数据的统一视图,避免了各引擎访问湖上数据其中额外的ETL成本并降低了业务处理链路的延时。但同时另一个问题随之产生即不同的引擎可能有不同的权限模型和用户模型,这导致在不同的引擎上用户和权限无法真正做到互通,如果能够在统一元数据的基础上实现集中式的权限校验,一次权限配置多引擎生效,实现引擎级的权限互通,将极大的提高湖上数据访问的安全性,同时将降低权限管理的复杂性。
实现数据湖统一权限服务方案的要点
因为不同的引擎/表格式在权限方案上/用户模型上存在着差异,例如在用户模型上EMR Hive/Spark 等开源引擎的用户模型可能是 LDAP,但阿里云的其他产品如MaxCompute、Holo 等是阿里云账号/RAM体系,又比如在权限方案上 EMR Hive/Spark/Presto 等或没有自己的安全体系或借助其他平台实现、特别是一些开源体系的表格式 Hudi/iceberg/delta 等目前完全没有权限控制,而在 Maxcompute/Holo 则有自己的一套权限控制体系,即使开源引擎都能够进行权限控制,但权限的数据、模型和权限校验的行为也根本不可能做到一致,所以在统一的元数据视图的基础上,实现统一的权限服务,需要解决四个重要问题
- 不同引擎的用户体系互通问题
- 实现不同引擎的不同的用户体系能够进行互转
- 不同引擎的权限体系互通问题
- 各引擎和格式使用同一套权限校验体系
- 通过元数据 API 访问/引擎访问,鉴权一致性的问题
- 元数据 API 访问也要使用同样的鉴权体系
- 保持不同引擎能够在现有使用方式上
- 在解决上述两个问题的基础上,能够保持现有用户使用方式、产生的元数据不变
数据湖构建之统一权限服务方案介绍
数据湖构建统一权限服务方案依托于数据湖统一元数据,是整个数据湖构建基础服务的一部分。整体方案一方面通过将不同引擎的用户体系映射至同一套用户体系来解决用户识别问题,另一方面通过将数据湖统一权限校验机制与开源体系的 EMR
hive/spark/Presto/Databricks 等引擎、数据湖格式 Hudi/Delta 等以及与 MaxCompute/Holo(进行中)等引擎集成来解决不同引擎权限数据一致性和互通问题,从而开源引擎访问湖上数据时有了统一的元数据视图及权限校验机制。
- 开源引擎/数据湖格式代理鉴权机制
数据湖构建产品是