企业合规必修课:ZITADEL多许可证架构与AGPL-3.0实践指南

企业合规必修课:ZITADEL多许可证架构与AGPL-3.0实践指南

【免费下载链接】zitadel ZITADEL - Identity infrastructure, simplified for you. 【免费下载链接】zitadel 项目地址: https://gitcode.com/GitHub_Trending/zi/zitadel

还在为开源许可证合规头疼?当企业使用开源身份管理平台时,如何避免法律风险、正确处理修改代码的开源义务、理解不同模块的许可差异?本文将以ZITADEL为例,深度解析其采用的GNU Affero General Public License v3.0(AGPL-3.0)核心条款与多许可证架构,提供一份即学即用的合规操作指南。读完本文,你将清晰掌握AGPL-3.0的网络传播义务、ZITADEL特殊模块的许可例外,以及企业商用时的合规路径。

ZITADEL许可证架构概览

ZITADEL采用多许可证分层架构,核心服务与特定模块使用不同开源许可证,这种设计既保障了项目的开源属性,又为企业商用提供了灵活性。根据LICENSING.md文件定义,项目许可证分布如下:

核心许可证矩阵

模块路径许可证类型适用范围商业使用限制
项目根目录(除例外)AGPL-3.0-only核心API服务、后端逻辑修改需开源,网络服务需提供源代码
proto/Apache License 2.0API协议定义可商用,需保留版权声明
apps/login/MIT License登录界面完全自由,可闭源商用
packages/zitadel-client/MIT License客户端SDK完全自由,可闭源商用
packages/zitadel-proto/MIT License协议缓冲区生成代码完全自由,可闭源商用

⚠️ 关键提示:AGPL-3.0与MIT/Apache 2.0的混合使用需特别注意模块边界。例如,基于proto/目录(Apache 2.0)开发的客户端可闭源,但修改AGPL-3.0覆盖的API服务代码则必须开源。

许可证文件位置

ZITADEL在代码库中通过以下文件明确许可条款:

AGPL-3.0核心条款深度解析

AGPL-3.0作为GPL系列许可证的网络强化版本,在传统GPL条款基础上增加了网络传播义务,这对提供SaaS服务的企业尤为重要。以下是与ZITADEL使用相关的核心条款:

1. 网络服务源代码提供义务(§13)

当你将修改后的ZITADEL部署为网络服务(如作为身份管理SaaS提供),必须向所有用户提供修改后的源代码。这是AGPL与普通GPL的关键区别,也是企业最容易踩坑的点。

条款原文:"如果修改版本在网络服务器上运行,并向公众提供服务,那么修改后的源代码必须对公众开放。"

合规实践

  • 若仅使用未修改的ZITADEL官方版本,无需开源企业自身代码
  • 若定制化修改了AGPL-3.0覆盖的模块(如internal/目录下的API逻辑),必须通过公开渠道提供修改源码
  • 推荐做法:建立公开代码仓库,清晰标记修改记录,并在服务首页提供源码访问链接

2. 衍生作品许可(§5)

对AGPL-3.0覆盖的代码进行修改或衍生开发,必须以相同许可证发布。这意味着:

  • 不能将AGPL-3.0代码与闭源代码静态链接
  • 不能通过技术手段规避开源义务(如将AGPL代码作为独立服务调用不构成规避)
  • 修改记录必须保留,且需在衍生作品中标注原始版权声明

ZITADEL实践案例cmd/setup/目录下的数据库初始化脚本作为核心服务的一部分,修改后需遵循AGPL-3.0开源;而基于packages/zitadel-client/(MIT许可)开发的企业内部客户端则可完全闭源。

3. 专利许可(§11)

AGPL-3.0包含专利防御条款,贡献者自动授予用户使用其专利的许可,但如果用户发起专利诉讼,相关许可将自动终止。这一条款有效防止了"专利劫持"行为。

ZITADEL合规操作指南

基于ZITADEL的许可证架构,企业在不同使用场景下需采取不同合规策略:

场景1:直接使用官方版本部署内部服务

操作步骤

  1. 从官方仓库克隆代码:git clone https://gitcode.com/GitHub_Trending/zi/zitadel
  2. 按照CONTRIBUTING.md的说明进行构建部署
  3. 保留所有原始版权声明文件(LICENSE、NOTICE等)
  4. 记录部署版本号,便于后续审计

合规要点:无需修改源代码时,无开源义务,但需保留许可证文件。

场景2:修改登录界面(MIT许可模块)

apps/login/目录采用MIT许可,企业可完全自由定制:

# 克隆代码后,直接修改登录界面
cd apps/login/src/components
# 修改登录表单样式或逻辑
vim LoginForm.tsx
# 构建部署,无需开源修改内容
pnpm nx run @zitadel/login:build

合规检查清单

  •  保留原始版权声明(文件顶部注释)
  •  不删除LICENSE文件
  •  可自由添加企业商标或定制化内容

场景3:定制API服务(AGPL-3.0模块)

若需修改internal/目录下的API逻辑(如添加自定义认证流程),则需遵守AGPL-3.0的开源义务:

  1. 创建公开仓库:在代码托管平台建立修改版本的公开仓库
  2. 明确标注修改:在README中说明与官方版本的差异点
  3. 提供源码访问:若通过网络提供服务,需在服务页面添加"获取源代码"链接
  4. 保留许可证:确保所有修改文件顶部包含AGPL-3.0声明

示例代码头部声明

// Copyright (C) 2025 ZITADEL and contributors
// This file is part of ZITADEL.
//
// ZITADEL is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ZITADEL is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with ZITADEL.  If not, see <https://www.gnu.org/licenses/>.

场景4:企业商用与商业许可

当AGPL-3.0的开源义务与企业商业利益冲突时(如不愿公开核心业务逻辑),可选择ZITADEL的商业许可:

  1. 联系ZITADEL团队:通过官方联系方式申请商业授权
  2. 明确许可范围:确定需要商用的模块与使用场景
  3. 获取商业协议:签署商业许可协议,获得AGPL-3.0义务豁免
  4. 接收商业支持:获得官方技术支持与长期维护保障

注意:未获得商业许可前,不得擅自将AGPL-3.0覆盖的修改代码用于闭源商用,否则可能面临法律风险。

常见合规问题解答

Q1:使用ZITADEL作为内部身份服务,是否需要开源企业自己的应用代码?

A:不需要。AGPL-3.0仅要求开源修改的ZITADEL代码,企业自身应用代码不受影响。但需确保ZITADEL服务未被修改,或修改已开源。

Q2:如何确认项目中某文件的许可证类型?

A:通过以下优先级判断:

  1. 查看文件头部的版权声明注释
  2. 查看所在目录的LICENSE文件
  3. 参考LICENSING.md的例外列表
  4. 默认遵循根目录AGPL-3.0许可

Q3:基于proto/目录(Apache 2.0)开发的API客户端,能否闭源商用?

A:可以。Apache 2.0允许商用,只需保留原始版权声明,无需开源衍生作品。ZITADEL的packages/zitadel-client/就是基于proto生成的MIT许可客户端库。

Q4:修改了AGPL-3.0覆盖的代码,但仅在企业内部网络使用,是否需要开源?

A:需要。AGPL-3.0的开源义务不区分网络范围(公网/内网),只要修改并运行了程序,就必须提供修改后的源代码给所有访问者(即使是内部员工)。

商用合规路径与风险规避

对于需要将ZITADEL用于商业产品的企业,建议采取以下策略:

1. 明确模块边界,隔离修改

ZITADEL模块依赖图

图:ZITADEL各模块许可证边界示意图,蓝色为AGPL-3.0,绿色为MIT/Apache 2.0

  • 安全区(可闭源修改):apps/login/、packages/*
  • 风险区(修改需开源):internal/、backend/、cmd/
  • 安全交互:通过API调用AGPL模块,而非修改其代码

2. 商业许可申请

若需修改AGPL-3.0模块且不愿开源,可联系ZITADEL官方获取商业许可:

  1. 访问官方网站提交许可申请
  2. 提供使用场景说明(如部署规模、修改范围)
  3. 签署商业许可协议
  4. 获取闭源使用授权

3. 合规审计 checklist

定期执行以下检查,确保合规:

  •  所有修改的AGPL-3.0代码已公开托管
  •  服务首页提供源代码访问链接
  •  各模块许可证标识正确
  •  衍生作品保留原始版权声明
  •  商业许可协议在有效期内

总结:平衡开源与商业利益

ZITADEL的多许可证架构为企业提供了灵活的合规路径:AGPL-3.0保障核心代码的开源自由,MIT/Apache 2.0允许客户端与API定义的商业利用。企业用户需清晰识别不同模块的许可边界,合理规划修改范围,必要时通过商业许可消除合规风险。

遵循本文指南,你将能够在享受开源身份管理平台便利的同时,有效规避法律风险,实现合规商用。记住:开源许可证不是商业障碍,而是规范合作的基础——正确理解并遵守,才能让开源生态持续健康发展。

官方合规资源:

【免费下载链接】zitadel ZITADEL - Identity infrastructure, simplified for you. 【免费下载链接】zitadel 项目地址: https://gitcode.com/GitHub_Trending/zi/zitadel

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值