磐基PaaS平台MongoDB组件SSPL许可证风险与合规性分析(上)

#作者:任少近

文章目录

  • 1.背景与问题
    • 1.1.背景
    • 1.2.问题
  • 3.SSPL条款解读分析
    • 3.1.条款0:定义条款
    • 3.2.条款一:源代码条款
    • 3.3.条款二:基本授权条款
    • 3.4.条款三:反规避保护条款
    • 3.5.条款四:逐字传播条款
    • 3.6.条款五:修改版本传播条款

1.背景与问题

1.1.背景

MongoDB 是一款高性能、高可用的分布式 文档数据库,广泛应用于现代应用开发中的大数据存储、实时分析和灵活的数据管理场景。在 磐基PaaS平台 上,我们为客户提供经过优化配置的 MongoDB 解决方案,支持通过 容器镜像 或 二进制文件 等多种形式部署。

注意:自 MongoDB 4.0 版本(2018年10月)起,官方采用 Server Side Public License (SSPL) v1.0 作为核心数据库的许可证,用户在商业部署时应仔细评估其合规要求。

1.2.问题

作为云PaaS平台提供商,在向客户提供MongoDB时,是否存在(SSPL) v1.0 许可证下的合规风险。
2.SSPL 条款逻辑结构
SSPL 是 MongoDB Inc. 在 2018 年推出的新型开源协议,基于GPLv3修改,主要针对云服务提供商(如 AWS、阿里云) 使用 MongoDB 的方式增加了额外限制。其核心目标是防止云厂商将 MongoDB 作为托管服务商业化而不回馈社区。
SSPL 的 17 个条款 可划分为 4 个逻辑模块:

  1. 基础自由与 Copyleft 条款(条款 0-10)
  2. SSPL 特有 SaaS/托管服务限制(核心新增部分)(条款 11-13)
  3. 专利与商标条款(条款 14-15)
  4. 免责与终止条款(条款 16-17)

在这里插入图片描述
在这里插入图片描述

3.SSPL条款解读分析

SSPL主要为以下17个条款,以下逐一条款进行说明

3.1.条款0:定义条款

条款0是SSPL的基础定义条款,明确协议中关键术语的法律含义,其解释直接影响后续所有条款的适用范围。与GPLv3§0结构相似,但包含SSPL特有的云服务相关定义。
官方原文如下:
原文关键部分1
“The ‘Program’ refers to any copyrightable work licensed under this License.”
法律意义:
涵盖所有受版权保护的SSPL授权作品(如MongoDB社区版代码、文档、配置文件)。
如:明确排除聚合作品(Aggregate)中独立的部分(见条款5末段)。

  1. “Covered Work”(涵盖作品)
    原文关键部分2
    “A ‘covered work’ means either the unmodified Program or a work based on the Program.”

法律意义:
包括:
原始SSPL软件;
任何修改版或衍生作品(需满足条款5的声明要求)。
边界争议:
动态链接库是否属于衍生作品

  1. “Convey”(传递)
    原文关键部分3
    “‘Convey’ means any kind of propagation that enables other parties to make or receive copies, or to interact with the work remotely through a computer network.”
    法律意义:
    包括:
    传统分发(如提供下载、物理介质);
    云服务/SaaS(用户远程交互即视为“传递”)。
    关键影响:触发条款12(服务栈开源)的核心条件。

  2. “Corresponding Source”(对应源代码)
    原文关键部分4
    “The ‘Corresponding Source’ includes all source code needed to generate, install, and run the object code, and to modify the work.”

法律意义:
必须提供的源代码范围:
编译工具链(如构建脚本);
依赖库(除非是标准系统库);

配置文件。
SSPL特殊性:
若涉及云服务(条款12),还需包含服务栈代码(如管理平台、监控工具)。

  1. “Aggregate”(聚合作品)
    原文关键部分5
    “An ‘aggregate’ is a compilation of a covered work with other separate works, which are not by their nature extensions of the covered work.”

法律意义:
允许行为:
将SSPL软件与独立作品(如Nginx、Linux内核)打包分发,不触发传染性。
禁止行为:
若组合后形成功能耦合(如专有工具直接调用MongoDB内核),则视为衍生作品(需整体SSPL授权)

  1. 企业合规关键点
    安全使用场景
    聚合分发:如将MongoDB与Apache Kafka打包为容器镜像,两者无代码级依赖。
    内部修改:如不对外“传递”(Convey)则无需开源。

3.2.条款一:源代码条款

官方原文如下:
原文关键部分
.“The ‘source code’ for a work means the preferred form of the work for making modifications to it. ‘Object code’ means any non-source form of a work.”

  • 解读:“作品的‘源代码’是指对该作品进行修改的首选形式。‘目标代码’是指作品的任何非源代码形式。”
  1. 源代码定义
    “Preferred form for modifications”(修改的首选形式):
    不仅包括原始人类可读代码(如.js/.py文件),还涵盖:
    构建脚本(如Makefile);
    配置文件(如.yaml);
    文档注释(若影响编译)。
    排除项:自动生成的代码通常不视为源代码。

  2. 目标代码定义
    “Any non-source form”(任何非源代码形式):
    包括:
    编译后的二进制(如.exe/.so);
    字节码(如Java .class文件);
    混淆后的代码(如经过UglifyJS处理的JS)。

  3. 企业合规要点
    源代码提供义务(条款4关联)
    必须提供:
    修改后的完整源代码;
    构建环境说明(如Dockerfile);
    第三方依赖的获取方式(除非是标准库)。
    提供方式:
    随二进制包附带;
    提供书面下载承诺(有效期3年)。

3.3.条款二:基本授权条款

官方原文如下:
原文关键部分. “You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force.”

  • 解读:“只要您的许可证仍然有效,您可以制作、运行和传播您未传递(not convey)的涵盖作品,且不受任何附加条件的限制。”
  1. 允许的行为(无需合规义务)
    制作(Make):
    编译、安装、部署SSPL软件(如MongoDB)。
    运行(Run):
    在本地或服务器上自由使用。
    传播(Propagate):
    在内部网络中共享副本(如企业内部分发)。
    关键限制:
    仅适用于“未传递”(not convey)的场景:
    若行为构成“传递”(Convey,见条款0定义),则需遵守条款4~12(如开源要求)。

  2. 企业合规建议
    安全行为:
    内部研发、测试、非商业化部署。
    高风险行为:
    任何形式的对外分发或SaaS化(需严格评估条款12)
    法律审查:
    确认“传递”行为的边界(如子公司间共享是否构成“传递”)

3.4.条款三:反规避保护条款

官方原文如下:
原文关键部分: “You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force.”

  • 解读:只要您的许可证仍然有效,您可以制作、运行和传播您未传递的涵盖作品,而无任何附加条件
  • 合规行为:
  • 内部使用: 企业修改MongoDB代码后仅用于内部业务系统,不对外分发或提供云服务
  • 私有修改与测试: 开发者fork MongoDB社区版进行实验性优化,未公开代码或服务
  • 非传递性运行: 在本地开发环境中运行修改后的MongoDB,未部署到公有云或提供给客户
  • 风险行为:
  • 任何构成“传递(convey)”或违反SSPL扩展义务的操作,均超出条款3的保护范围。
    如:子公司向关联公司收费提供,就有可能触发条款12

3.5.条款四:逐字传播条款

官方原文如下:
原文关键部分:
“You may convey verbatim copies of the Program’s source code as you receive it, in any medium, provided that you:
a) conspicuously and appropriately publish on each copy an appropriate copyright notice;
b) keep intact all notices stating that this License applies to the code;
c) keep intact all notices of the absence of any warranty;
d) give all recipients a copy of this License.”

  • 解读:“您可以以任何媒介传递您收到的程序的源代码的逐字副本,但您必须:
    a) 在每个副本上显著且适当地发布适当的版权声明;
    b) 保留所有声明本许可证适用于代码的通知;
    c) 保留所有关于无担保声明的通知;
    d) 向所有接收者提供本许可证的副本。”
  • 核心义务:规范二进制分发(Object Code)时的源代码提供要求,是SSPL Copyleft传染性的关键条款
  • 合规行为:
  • 提供对应源代码: 必须随二进制分发提供完整的、机器可读的源代码(或明确的获取方式)
  • 源代码完整性: 源代码需与二进制版本完全匹配,包括依赖项(除非是标准系统库)
    许可证声明保留: 保留所有原始版权声明和SSPL许可证文件(如LICENSE)
  • 违规行为:
  • 二进制分发不提供源代码获取方式(违反条款4与条款1关联义务)
  • 在下载页面隐藏许可证文本(需"conspicuously"显著展示)
  • 重新打包时删除NOTICE文件
  • 显著标注的标准
  • 网页下载按钮旁直接显示许可证
  • 二进制安装包启动时显示声明

3.6.条款五:修改版本传播条款

官方原文如下:
原文关键部分:You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified it, and giving a relevant date.
b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”.
c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.

  • 解读:条款5规定了修改版本的分发条件,在遵守条款4(基础分发要求)的前提下,必须满足以下额外要求:
  • 修改声明(5a)在修改版代码中必须包含醒目的修改声明。包括:
    明确标注“此版本已修改”
    注明修改日期
  • 许可证声明(5b)必须明确声明修改版仍遵循SSPL,并保留所有原始许可证声明(条款4要求),同时需包含条款7可能的附加条件
    在项目根目录保留 LICENSE 文件(SSPL原文)
    在代码文件头注明 Licensed under SSPLv1
  • 全作品许可(5c)要求:修改版必须整体以SSPL授权,不得部分闭源或混合其他许可证。“无论以何种方式打包”:即使分模块分发,所有部分均需遵守SSPL
  • 交互界面法律声明(5d)要求:若修改版有交互界面(如Web UI),需展示法律声明(如“基于SSPL授权”)
  • 合规行为:
    • 仅为本公司修改代码
    • 企业A修改MongoDB并分发,所有代码(含新增文件)必须采用SSPL
  • 违规行为:
    • 标注修改来源或日期可能导致协议违反
      将修改版MongoDB与专有代码打包,仅开源MongoDB部分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85663.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85663.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「Linux文件及目录管理」输入输出重定向与管道

知识点解析 输入/输出重定向 标准输入(stdin):默认从键盘读取,文件描述符为0。标准输出(stdout):默认输出到终端,文件描述符为1。标准错误(stderr):默认输出到终端,文件描述符为2。重定向符号: >:覆盖输出到文件(如command > file)。>>:追加输出…

【Node】最佳Node.js后端开发模板推荐

Node.js 后端开发模板推荐 以下是几个优秀的Node.js后端模板,它们都适合二次开发,各自有不同的特点和适用场景: 1. Express基础模板 Express Generator (官方工具) 官方提供的快速搭建工具基础MVC结构简单易上手 npm install express-ge…

HALCON相机标定

相机标定简介: 首先,相机会产生畸变,即实际图像和拍摄图像不一致,可以是凸性也可以是凹性形变,相机标定的过程就是将畸变图像还原为原始图像,并将图像中的像素坐标转换为世界坐标。 形如:相机内…

Solidity 入门教程(二):值类型全解 —— 布尔、整数、地址与字节数组

在上一章中,我们写下了第一个 Solidity 合约并在 Remix 中成功运行。本章我们将深入了解 Solidity 中的几种常用值类型(Value Types),并通过示例代码在 Remix 进行验证。 一、Solidity 中的三种数据类型 在 Solidity 中&#xf…

16.大数据监控

0.说明 监控主要构成。 软件版本。 1.exporter监控配置 1.1 node_exporter 启动命令 nohup ./node_exporter &服务 创建文件 /etc/systemd/system/node_exporter.service: [Unit] DescriptionPrometheus Node Exporter Wantsnetwork-online.target Aft…

Tomcat项目本地部署(Servlet为例)

在Windows上部署 在idea中打开项目 首先我们需要准备一个Servlet项目,我之前的Servlet项目是用eclipse写的,这种情况下如果用idea直接打开的话会出现左侧目录无法显示的情况,这个时候我们就需要用别的方法打开 打开项目管理 如下图&#…

安装MySQL 5.7导入数据,修改密码,创建账号并授权

1. 准备工作 sudo yum update -y sudo yum install -y wget libaio numactl 2. 下载 MySQL 5.7 二进制包 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz 3. 创建 MySQL 用户和组 sudo groupadd mysql sudo useradd -r -g m…

基础RAG实现,最佳入门选择(八)

RAG重排序 RAG重排序技术以提高RAG系统中的检索质量。重新排序充当初始检索后的第二个过滤步骤,以确保最相关的内容用于响应生成。 重排序的关键概念 1.初始检索:使用基本相似度搜索的第一遍(准确度较低但速度更快) 2.文档评分…

Spring Boot 常用注解整理

Spring & Spring Boot 常用注解整理 现代的 Spring 与 Spring Boot 应用大量使用注解来简化配置、管理组件和实现各种框架功能。本文系统整理了常用的 Spring/Spring Boot 注解,按照功能分类进行介绍。每个注解都会涵盖其含义、提供来源、应用场景以及代码示例…

深入理解 Cross-Entropy 损失函数:从原理到实践

在深度学习中,损失函数是衡量模型性能的关键指标之一。对于多分类问题,Cross-Entropy 损失函数 是最常用的选择之一。它不仅能够有效衡量模型输出与真实标签之间的差异,还能通过梯度下降法指导模型的优化。本文将深入探讨 Cross-Entropy 损失…

Vim-vimrc保存文件自动移除行末尾空格

Vim-vimrc保存文件自动移除行末尾空格 这段代码通过设置 autocmd 和自定义函数,确保每次保存文件时都自动删除文件中的行尾空格,同时不会影响光标和视图的位置。它适用于所有文件类型,并且删除操作不会引入错误,即使没有行尾空格的…

Occt几何内核快速入门

本文简单介绍 Open Cascade Technology(OCCT),提供了下载地址和文档地址。通过OCCT的测试工具Draw,展示了OCCT的一些功能特性。介绍了OCCT集成开发的演示代码,提供了源代码下载地址和编译过程文件。 一、简介 Open C…

【Docker 08】Compose - 容器编排

🌈 一、Docker Compose 介绍 ⭐ 1. Docker Compose 是什么 Docker Compose 是由 Docker 官方提供的一个用于定义和运行多容器应用的工具,它让用户可以通过一个 YAML 文件(通常是 docker-compose.yml)来配置应用所需要的服务&…

CentOS Stream 9平台部署安装MySQL8.4.1

1、在线下载安装包 [rootlocalhost ~]# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.4.1-1.el9.x86_64.rpm-bundle.tar 2、新建解压文件夹 [rootlocalhost ~]#mkdir /root/sql 3、离线解压安装包安装配置MySQL8 上传安装包到home下 [rootlocalhost ~]#c…

phpstorm无缝切换vscode

要将 PhpStorm 的开发体验无缝迁移到 VS Code,需重点配置插件、快捷键和操作习惯。以下是详细方案: 一、必备插件清单 安装以下插件(VS Code 搜索安装): PHP Intelephense:核心插件(代码补全、…

雨声_锦程_时年

1 炎凉 飘零于三界。 子铭师傅看了几卷笔记,以为我文笔很好,于是我留在石铭公社。 我每日在公社会议厅,高地吹风,悠然笔记。 我喜欢四处旅行。 穿着鞘翅飞翔,风划过耳边。 我渴求所饮的每一滴水,追忆木履留…

微信小程序使用rsa 加解密

jsencrypt.min.js !function(t,e){"object"typeof exports&&"undefined"!typeof module?e(exports):"function"typeof define&&define.amd?define(["exports"],e):e(t.JSEncrypt{})}(this,function(t){"use s…

2025北邮软件工程复习

文章目录 废话知识点总结Part1 软件工程概述Part2 软件需求分析需求介绍需求描述方法 Part3 软件设计方法软件设计的概念与原则软件设计的方法 Part4 程序实现方法Part5 软件测试方法白盒测试黑盒测试 练习题北邮2021~2022期末考北邮2018期末考 考后总结 废话 update on 4.24&…

《Whisper模型版本及下载链接》

Whisper模型版本及下载链接 Whisper是OpenAI开发的语音识别模型,以下按模型规模从小到大排列,包含不同语言版本及通用版本: 1. Tiny系列(轻量级) tiny.en.pt(英文专用): https://…

AWS-SAA 第二部份:安全性和权限管理

我们来深入讲解第二部分:安全性和权限管理,依然用通俗易懂的语言解释。 核心服务 1:IAM(Identity and Access Management) 1. IAM 的核心概念 作用: IAM 是 AWS 的“门卫系统”,用来管理谁可以…