Lakekeeper 目录服务,用于 Apache Iceberg
请访问 https://docs.lakekeeper.io 获取文档!
这是 Lakekeeper:一个基于 apache/iceberg-rust 的 Apache Iceberg REST Catalog 规范的 Apache 许可、安全、快速 且 易于使用 的实现。在目录中定义一次访问控制,并在每个计算引擎中强制执行——无需在每个引擎中重复规则。在读取任何数据之前,每个请求都会根据您的策略进行检查并记录。如果您有任何问题、功能请求或只是想聊聊,我们在 Discord 上!
快速入门
Docker 容器可在 quay.io 上获取。 我们已准备了一个最小的 docker-compose 文件,用于演示如何使用 Lakekeeper 目录与常见的查询引擎。
git clone https://github.com/lakekeeper/lakekeeper.git
cd lakekeeper/examples/minimal
docker compose up
然后打开浏览器,前往 localhost:8888 加载示例 Jupyter notebooks,或前往 localhost:8181 访问 Lakekeeper UI(开源 Console)。
有关部署的更多信息,请参阅 Getting Started Guide。
范围与功能
Iceberg Catalog REST 接口已成为开放 Lakehouse 中目录的标准。它原生支持多表提交、服务端冲突解决等功能。它可以说是 Iceberg 的(TIP)。
-
使用 Rust 编写:单一的一体化二进制文件 - 无需 JVM 或 Python 环境。
-
存储访问管理:Lakekeeper 使用 Vended-Credentials 和针对 S3 的远程签名来保护对数据的访问。支持所有主要超大规模云服务商(AWS、Azure、GCP)以及使用 S3 的本地部署。
-
Openid 提供商集成:使用您自己的身份提供商进行身份验证,只需设置
LAKEKEEPER__OPENID_PROVIDER_URI即可开始使用。 -
原生 Kubernetes 集成:使用我们的 helm chart 轻松部署高可用配置,并原生使用 Kubernetes 服务账户与 Lakekeeper 进行身份验证。Kubernetes 和 OpenID 身份验证可以同时使用。一个 Kubernetes Operator 目前正在开发中。
-
变更事件:内置支持发出变更事件(CloudEvents),使您能够响应发生在表上的任何变更。
-
变更审批:外部系统也可以禁止变更。这可用于禁止对会使数据契约、质量 SLO 等失效的表进行变更。只需通过我们的
ContractVerificationtrait 与您的变更审批流程集成即可。 -
支持多租户:单个 Lakekeeper 部署可以服务于多个项目 - 所有项目均通过单一入口点访问。每个项目本身支持多个 Warehouse,计算引擎可以连接到这些 Warehouse。
-
可定制:Lakekeeper 旨在被扩展。我们将数据库实现(
Catalog)、SecretsStore、Authorizer、事件(CloudEventBackend)和ContractVerification暴露为接口(Traits)。这允许您通过实现少量方法,接入贵公司的任何访问管理系统,或将变更事件流式传输到您喜欢的任何系统。 -
测试完善:已通过
spark、pyiceberg、trino和starrocks进行集成测试。 -
高可用 & 水平可扩展:没有本地状态 - 目录可以轻松地进行水平扩展。
-
细粒度访问控制 (FGA): Lakekeeper 的默认授权系统利用了 OpenFGA。如果您的公司已经拥有不同的系统,您可以通过在
Authorizertrait 中实现少量方法与其集成。
如果您发现有任何遗漏,我们非常乐意在 GitHub Issue 中听取您的反馈。
状态
存储配置支持
| 存储 | 状态 | 备注 |
|---|---|---|
| S3 - AWS | 支持可选角色假设的凭证下发与远程签名,支持会话标签 | |
| S3 - 自定义 | 凭证下发与远程签名;支持 MinIO、Ceph 及其他 S3 兼容存储 | |
| S3 - Cloudflare R2 | 通过 R2 临时访问凭证进行凭证下发 | |
| S3 - 阿里云 OSS (Aliyun / 阿里云) | 通过阿里云 STS 进行凭证下发 AssumeRole | |
| Azure ADLS Gen2 | ||
| Microsoft OneLake | 支持 Microsoft Fabric / OneLake 的 SAS 令牌下发;支持区域端点和私有链接端点 | |
| Google Cloud Storage | 支持带或不带分层命名空间的 GCS |
有关如何配置存储配置的详细信息,请参阅 文档。
支持的目录后端
| 后端 | 状态 | 备注 |
|---|---|---|
| Postgres | >=15 |
支持的密钥存储
| 后端 | 状态 | 备注 |
|---|---|---|
| Postgres | ||
| kv2 (hcp-vault) | userpass 认证 |
支持的事件存储
| 后端 | 状态 | 备注 |
|---|---|---|
| NATS | ||
| Kafka |
支持的操作
Lakekeeper 支持的 Iceberg REST 规范之外的操作。
| 操作 | 状态 | 描述 |
|---|---|---|
| 项目管理 | ||
| 仓库管理 | ||
| 软删除 | 可在仓库级别配置 | |
| 删除保护 | 针对仓库、命名空间、表和视图的删除保护 | |
| 递归删除 | 递归删除命名空间内的所有项 | |
| 搜索 | 仓库级别的表模糊搜索 | |
| 任务管理 | ||
| 用户管理 | 用于权限分配的用户发现和管理。包含模糊搜索功能。注意:Lakekeeper 不作为身份提供商 | |
| 角色管理 | ||
| 权限管理 | 表级别,需要 OpenFGA |
Auth(N/Z) 处理器
| 操作 | 状态 | 描述 |
|---|---|---|
| OIDC (AuthN) | 通过 OIDC 安全访问目录 | |
| 自定义 (AuthZ) | 如果您愿意实现一个 rust Trait,则 AuthZHandler 可以实现以连接到您的系统 | |
| OpenFGA (AuthZ) | 内部授权管理 | |
| Cedar | 在 Lakekeeper+ 中可用 | |
| OPA 桥接 | 通过 Open Policy Agent 暴露 Lakekeeper 权限,以便 Trino 等引擎强制执行 |
Web Console
| UI | 状态 | 备注 |
|---|---|---|
| Lakekeeper Console | 开源 Web UI,通过 ui 功能捆绑。管理仓库、命名空间、表、视图、用户、角色和权限 |
Contributors
Lakekeeper 由贡献者社区构建。
请参阅 DEVELOPMENT.md 开始,或加入我们的 Discord。
支持
社区支持可通过 Discord 和 GitHub Issues 获取。
Lakekeeper 由 Vakamo 维护,该公司还提供 Lakekeeper Plus —— 一个增加基于 Cedar 的授权(参见上文 Auth(N/Z) 表格)、 审计和 SLA 的版本。