磐基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
英文地址,請注明出處:http://en.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 的“門衛系統”,用來管理誰可以…