随着美国频频动用类似EAR这样的进出口管制措施对中国施压,甚至采用长臂管辖的方式,以超越正常EAR的手段对中国进行限制。似乎20年前解散的巴统又回来了。最近美国商务部一直在扩大黑名单,只要上了黑名单的企业,随时就可能遭受EAR最严格条款的限制,被强制断供。因此这两年也经常有企业在分析EAR可能对数据库应用产生什么样的影响,甚至有些企业产生了杯弓蛇影,认为所有的开源数据库产品也是不安全的,随时可能被老美断供。2020年的时候,就有一个企业的IT部门领导问我,如果我们企业上了美国商务部的黑名单,那么我们已经购买的Oracle数据库许可证会受到影响吗?实际上很多朋友对此都有一些疑问,今天我就写一篇文章来聊聊各种商用与开源许可证是否会受到EAR的影响。首先我们以Oracle的许可协议来看看美国商用数据库的许可协议。Oracle数据库的许可协议分为OTN许可协议、OMA许可协议、OLSA许可协议等多种。不同协议的适用范围都做了严格的限定,超出限定范围的适用被视为盗版。其中OTN协议适用于研究与科研环境,我们略过不谈。重点来看看ORACLE 主协议OMA和软件服务协议OLSA。Oracle主协议定义了Oracle公司与客户之间关于使用Oracle产品的一系列通用性协议,适用于所有的Oracle产品类型。Oracle主协议并不涉及特别具体的协议款项,但是是所有使用Oracle产品所必须遵循的双方约定,定义了用户与Oracle公司的责权利。Oracle软件的许可包含在附录-P中。其中规定的权利:主协议中规定采购者对该产品拥有永久性的有限权利,但是不得转让。这个条款排除了从第三方转让购买许可证的可能性,不过也排除了Oracle公司因为美国EAR管制而剥夺你已经购买的Oracle许可证,这个条款否定了Oracle有权利随时停止你已购买的Oracle许可证的使用权的网络传闻。另外Oracle主协议也明确了Oracle产品适用于美国出口法律和法规,也就是Oracle产品出口必须遵循EAR。在主协议中,还有一个检查条款,对一些涉及敏感信息的单位,存在一定的安全风险:Oracle OLSA协议是Oracle的许可与服务协议专注于Oracle软件程序与服务。Oracle OLSA完全遵循Oracle Global Trade Compliance(Orale全球贸易合规性要求),其文本如下:Oracle Global Trade Compliance (GTC) is responsible for import and export oversight, guidance, and enforcement to enable worldwide trade compliant business processes across Oracle, in order to uphold and protect Oracle's global trade privileges and ensure the success of Oracle's business. GTC manages Oracle's global trade compliance portfolio, and is responsible for global trade regulatory interpretation and coordination of policy advocacy. Further, GTC reviews and resolves global trade compliance matters; serves as the clearinghouse for all global trade compliance information, including product classification, and is empowered to take actions necessary to ensure Oracle remains compliant with U.S. and applicable local import and export laws, regulations, and statutes.从上述文字可以看出,Oracle GTC要求Oracle许可证必须遵循United States Export Administration Regulations (EAR)的要求。Oracle对EAR的遵循如官网所示:从OLSA协议上看,不采购Oracle服务,仅仅限制了用户享用Oracle服务的资格,并不对所采购的Oracle数据库的终生拥有权产生影响。但是关于软件更新的条款从另外一个方面对使用Oracle数据库给出了限定:Oracle只对购买了服务的客户提供补丁更新服务,客户可以自行下载和安装补丁,Oracle不收取额外的费用,但是对于没有购买服务的用户,是不能下载并安装补丁的。由于数据库产品遇到BUG的可能性极高,只安装数据库软件,不打补丁,在关键业务系统中是很难做到的。所以,不继续购买Oracle服务而正常使用Oracle数据库存在较大的难度。虽然说目前大多数企业并没有购买Oracle的标准服务,通过借用MOS账号下载补丁,也没觉得什么不方便。不过从严格遵守知识产权相关法规来说,还是存在风险的。接下来我们来看看开源数据库,借用一张网上的图来说明目前最常见的开源许可协议的特点: 从对数据库使用的主要开源协议上分析看,这些开源协议都没有遵守美国政府进出口管控政策的条款,不会受到美国政府进出口管控政策的影响。不过大多数开源数据库的支撑企业都注册在美国,可能会受到美国政府政策的影响,采取一些不利于开源政策的改变。以应用最为广泛的GPL开源协议为例,GPL开源许可协议确保使用者可以完全自由的使用该软件而没有版权限制,但是如果你需要修改开源代码,或者利用开源代码开发自己的产品,则你开发的的代码也必须开源,否则就违反了GPL的版权限制。从GPL协议的约束上可以看出,你可以利用GPL开源协议的开源产品发布收费的商用版本,但是前提是你对开源代码的任何修改,必须继续开源。在许可协议中没有受到美国法律约束的条款。因此采用GPL授权的软件,在软件许可上不会受到美国政府政策改变的影响。目前几乎我国的所有国产操作系统,包括华为的手机操作系统鸿蒙,都是来源于LINUX开源项目或者基于LINUX开源项目。因此Linux开源项目的安全性对于我国的自主操作系统关系重大。从GPL开源协议上看,目前还是没有太大风险的。另外一个十分重要的使用GPL开源协议的软件是MySQL数据库。目前的国产数据库大部分基于MySQL和Postgresql两种开源数据库,而Postgresql数据库的许可协议是BSD开源协议。BSD开源协议(original BSD license、FreeBSD license、Original BSD license)是一个给于使用者很大自由的协议,BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。实际上目前存在风险最大的开源协议是SSPL软件协议,严格上说,SSPL不是一种被开源组织OSI所认可的开源软件协议,因为SSPL限制了服务商使用该软件。比如在某云上运营某个SSPL协议的数据库产品,则必须获得SSPL协议拥有者的商业授权。目前来看,MongoDB、ElasticSearch使用了SSPL协议。要说明的一点事SSPL协议虽然限制了云服务商向客户提供的云平台上使用相关软件,但是对于个人或者企业自己下载使用并无限制。因此对MongoDB能否安全使用,其实问题没有我们想象的那么严重。只不过MongoDB公司可以把自己的软件协议从开源协议改为商业味道浓厚的SSPL,那么再改一次也不是不可能的,在一些关键领域有所防范也是必要的。从上面的分析看,基于开源协议的数据库受到EAR的影响不会很大,当然开源代码托管机构可能是注册在美国的企业,会受到EAR的影响,从而停止托管服务器向我们提供服务。这些也仅仅能够影响开源代码下载而已。在国内建立镜像或者通过一些其他方法还是比较容易解决的。最大的一个问题就是开源社区变更开源协议的问题,这些年这种事情已经多次发生了,最近一次影响比较大的就是MongoDB的突然转向。这种可能性虽然比较小,不过确实存在。相对而言,Linux这样的代码贡献者庞大,赞助者数量也极为庞大的开源项目,想要改变开源协议是十分困难的。而一些被单一大企业控制的开源项目,其风险就会大一些。基础软硬件拥抱开源是我们的一个必然的选择,不过从安全的角度上看,加快自己的开源社区建设,加快自己主导的开源项目发展,是我们目前必须面对的问题。