云数据库加密及实践建议,第1张

数据库加密

一件事需要考虑加密数据的必要性。所有的数据库都具有限制访问的功能。某些合适的实现已经足以保护数据机密性。

其他需要通过加密来保护存储在数据库中的数据的因素有:对数据库的特权用户(如数据库管理员)隐藏数据;为了遵守法律法规,数据拥有者不能通过帐户来控制对数据的访问(如使用共享账户)。

当使用云数据库,特别是用到了数据库的SaaS解决方案时,数据库的正常功能将会降低,迫使数据库或云应用能访问密钥,除非能在密文上操作。

数据加密会带来复杂度和性能上的成本。除了加密之外,还有一些别的有效方法:

• 使用对象安全。使用SQL准许及废除声明去约束账户访问这些数据。这些账户中哪些准许访问的必须严格控制,以确保只有授权的用户才能访问。

• 存储安全哈希值。存储这些数据的哈希值而不是直接存储这些数据,这能允许企业的程序能证明持有者有正确的值而不必实际存储它。

密钥管理

在公有云计算中一个很困难的过程就是密钥管理,公有云中的多租户模型造成其上运行的过程需要考虑密钥管理问题。

最简单的应用案例是在公有云中有应用程序运行,加密数据的从企业内部流到公有云中,密钥仅供企业内部使用。有的加密引擎能够在数据流出时加密,在数据流入时解密。当公有云上的其他处理过程(例如批处理)需要访问密钥去解密数据时,一个使用密钥的应用程序将变得复杂。

企业中使用者需要拥有他们自己的密钥,而不是一个能用于访问整个企业的单独的共享密钥。最简单的解决方法是采用一个加密引擎,基于实体身份信息为每一个用户或实体分配(或管理)一个密钥。以这种方式,为一个实体特别加密的任何信息将为那一实体所维护。如果一个群体内的实体需要共享数据,那么可以为管理群体访问的应用程序分配一个群体级别密钥,并在群体内的实体间共享密钥。密钥在企业内部应该像这一部分前面讨论的那样进行管理。

当数据存储在公有云环境中,在停用这一环境时,证明所有数据(尤其是PII或SPI数据或隶属于法律法规的数据)已经从公有云环境中删去,包括其他媒体如复制盘等,将存在着问题;维护当地密钥管理能够从密钥管理系统中废除(或删除或丢失)密钥,以确保任何数据残留在公有云的数据不能被解密,来提供这一保证。

如果云服务提供商和用户没有一个有效的密钥管理过程,加密数据就没有多大价值。 在服务提供方,需要关注的因素包括:服务器拥有加密的数据,同时访问密钥服务器缺少职责划分;数据库管理员能访问个人密钥;或数据库服务架构依赖于单一密钥。

使用密钥加密密钥,在内存中产生加密密钥,以及只存储密钥服务器的加密密钥,都是能控制和保护密钥本身的有效的架构解决方案。构建任何解决方案时都应该考虑这些。 客户端密钥管理,在本身并不安全的设备(如移动终端)上保护密钥,或者这一设备没有得到同等级别的控制,都是需要考虑的因素。

实践中的具体建议

在企业应用的具体实践中,可以遵循如下一些有益的建议:

• 当使用任何形式的加密或解密产品时,应用最好的密钥管理措施;

• 如有可能,应该使用可信源中现成的技术,以得到最佳实践;

• 使用最好的密钥管理实践,获取技术和产品用于加密、解密、签署,并从可信源中核实;

• 尤其建议组织要维护他们自己的密钥或使用已经运营这种服务的可信密码服务;

• 如果一个组织需要使用存在云中的数据运行分析或其他的处理,这个组织应该基于一个平台如Hadoop开发,从云中的数据源中导出数据;

• 密钥的管辖范围能在个人或集体级别维护;

• 集体访问的管理可以使用现成的技术,如DRM系统,或者其他运行在桌面或笔记本上,用以加密硬盘、文件和email消息的软件;

• 为了维护最好的实践措施和通过审计,企业应该自己管理他们的密钥,或者使用来自于加密软件提供商那里的可信服务;

• 现有加密技术中使用的密钥如DRM和硬盘加密产品应该在企业内部,使用密钥存储技术来集中管理;硬件安全调制应该用于存储密钥,以及处理加密操作如加解密、签名和修改等;

• 企业使用者应该通过注册步骤去启用企业中的加密操作和其他处理,如能根据需要来访问加/解密钥的内容感知或保格式加密系统;

• 基于身份认证的所有组件,将技术部署整合进公司系统,在处理流程中做授权决定使用捆绑加密操作来管理加解密过程的密钥;

• 如有可能,使用现有的系统如E-DRM或数据防泄露(DLP);

• 将加密操作和密钥管理捆绑到公司的身份认证系统上,为组织提供最大灵活度的整合,以及使用组织已经了解、审计过的或检验过的技术。

另外,对于云数据库的加密,可以参考如下实践建议:

• 使用标准算法。不要使用专用的不规范的技术,专用加密算法没有被证明且容易被攻破;

• 避免使用旧的不安全的加密标准如数据加密标准(DES);

• 使用对象安全。即使在加密的情况下,也应该坚持使用基本对象安全(SQL准许及废除声明)去阻止对数据的访问;

• 不要加密主键或者索引列。如果加密主键,将必须加密所有的参考外部键。如果企业加密索引列,当企业曾是使用加密数值时,查询数据将会很慢;

• 使用柱状的方法去加密(因为大数据系统使用这种方式)。

Hadoop常见问题解答

(1)Hadoop适不适用于电子政务?为什么?

电子政务是利用互联网技术实现政府组织结构和工作流程的重组优化,建成一个精简、高效、廉洁、公平的政府运作信息服务平台。因此电子政务肯定会产生相关的大量数据以及相应的计算需求,而这两种需求涉及的数据和计算达到一定规模时传统的系统架构将不能满足,就需要借助海量数据处理平台,例如Hadoop技术,因此可以利用Hadoop技术来构建电子政务云平台。

总结一下,任何系统没有绝对的适合和不适合,只有当需求出现时才可以决定,在一个非常小的电子政务系统上如果没有打数据处理以及计算分析需求时就不需要hadoop这样的技术,而实际上,商用的电子政务平台往往涉及到大规模的数据和大量的计算分析处理需求,因此就需要Hadoop这样的技术来解决。(2)hadoop对于实时在线处理有优势吗?

直接使用hadoop进行实时处理时没有优势的,因为Hadoop主要解决的是海量批处理作业计算问题,但是可以使用基于Hadoop的分布式NOSQL系统HBase系统以及相关实时处理系统:

1 基于Hadoop的HBase可以做到实时处理以及相关需求的实时计算,主要解决海量<key,value>相关查询计算等需求。

2 可以考虑Spark计算,Spark是基于共现内存RDD的系统,比Hadoop更快,时候迭代式计算,例如数据挖掘,机器学习算法等。

3 还有Storm,Storm是一个免费开源、分布式、高容错的实时计算系统,Storm经常用于在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。

4 考虑S4, S4是Yahoo!在2010年10月开源的一套通用、分布式、可扩展、部分容错、具备可插拔功能的平台。这套平台主要是为了方便开发者开发处理流式数据(continuous unbounded streams of data)的应用。

你可以依据实际的需求来选择合适的系统。

(3)Hadoop存储海量数据没有问题,但是如何能够做到海量数据的实时检索?

1,可以结合开源的搜索引擎Apache Lucene,Solr 或ElasticSearch

2,海量数据的实时检索可以考虑HBase,建议可以使用hadoop将数据构建成以查询key为键的数据集,然后将<key, value>集合写入Hbase表中,Hbase会自动以key为键进行索引,在数十亿甚至以上的级别下,查询key的value响应时间也估计再10毫秒内。

如果检索条件是多个组合的情况下,可以适当的设计多个hbase表格,这样的检索也是很快的,同时Hbase也是支持二级索引。在符合条件下查询,Hbase也是支持MapReduce的,如果对响应时间要求不高的情况下,可以考虑将hive和Hbase系统结合来使用。

如果数据量不是很大的情况下也可以考虑支持类似SQL的NOSLQ系统。

(4)能不能给点hadoop的学习方法以及学习规划,hadoop系统有点庞大,感觉无从学起

首先搞清楚什么是hadoop以及hadoop可以用来做什么?

然后,可以从最经典的词频统计程序开始,初步了解MapReduce的基本思路和处理数据的方式。

接着,就可以正式学习hadoop的基本原理,包括HDFS和MapReduce,先从整体,宏观核心原理看,先别看源码级别。

进一步,就可以深入HDFS和MapReduce和模块细节,这个时候可以结合源码深入理解,以及实现机制。

最后就是需要实战了,可以结合自己的项目或者相关需求来完成一些hadoop相关应用。

(5) 大的文件拆分成很多小的文件后,怎样用Hadoop进行高效的处理这些小文件?以及怎样让各个节点尽可能的负载均衡?

1 怎样用Hadoop进行高效的处理这些小文件?

你这个问题提的很好,hadoop在处理大规模数据时是很高效的,但是处理大量的小文件时就会因为系统资源开销过大而导致效率较低,针对这样的问题,可以将小文件打包为大文件,例如使用SequcenFile文件格式,例如以文件签名为key,文件内容本身为value写成SequcenFile文件的一条记录,这样多个小文件就可以通过SequcenFile文件格式变为一个大文件,之前的每个小文件都会映射为SequcenFile文件的一条记录。

2 怎样让各个节点尽可能的负载均衡?

在hadoop集群中负载均衡是非常关键的,这种情况的导致往往是因为用户的数据分布的并不均衡,而计算资源槽位数确实均衡分布在每个节点,这样在作业运行时非本地任务会有大量的数据传输,从而导致集群负载不均衡,因此解决不均衡的要点就是将用户的数据分布均衡,可以使用hadoop内置的balancer脚本命令。

对于因为资源调度导致的不均衡则需要考虑具体的调度算法和作业分配机制。

(6)c/c++ 程序员如何入门Hadoop到深入了解,并在Linux服务器上布置运用,有没有方向性的指导

针对C/C++用户,Hadoop提供了hadoop streaming接口和pipes接口,hadoop streaming接口以标准输入和标准输出作为用户程序和hadoop框架交互的中间件,pipes这是专门针对C/C++语言的接口,以socket作为同学中介。

从使用上建议从streaming入手,pipes相比streaming问题比较多,而且pipes调试不容易。

(7)现在企业中使用Hadoop版本主要是1x还是2x?

目前百度,腾讯,阿里为主的互联网公司都是以hadoop 1X为基准版本的,当然每个公司都会进行自定义的二次开发以满足不同的集群需求。

2X在百度内部还没有正式使用,还是以1X为主,不过百度针对1X的问题开发了HCE系统(Hadoop C++ Expand系统)

补充,Hadoop2x在其他公司应用的很多,比如京东

(8)以后想从事大数据方面工作,算法要掌握到什么程度,算法占主要部分吗

首先,如果要从事大数据相关领域的话,hadoop是作为工具来使用的,首先需要掌握使用方法。可以不用深入到hadoop源码级别细节。

然后就是对算法的理解,往往需要设计到数据挖掘算法的分布式实现,而算法本身你还是需要理解的,例如常用的k-means聚类等。

(9)现在spark,storm越来越火,谷歌也发布了Cloud Dataflow,是不是Hadoop以后主要应该学习hdfs和yarn,而且以后Hadoop程序员的主要做的就是把这些东西打包,只提供接口让普通的程序员也能使用,就像Cloudera和Google一样

这位同学,你多虑了,hadoop和spark, strom是解决不同的问题,不存在哪个好那个坏,要学习Hadoop还是以主流的hadoop-1X为版本,2X最主要的就是多了yarn框架,很好理解的。

如果你是hadoop本身研发建议都看,如果你是hadoop应用相关研发,看主流的1X就行,我的书《Hadoop核心技术》是以主流的1X为版本讲解的,有兴趣可以看看。

(10)小白问一句,大数据处理都是服务器上安装相关软件吗,对程序有什么影响呢,集群、大数据是属于运维的工作内容还是攻城狮的呢

传统的程序只能运行在单机上,而大数据处理这往往使用分布式编程框架编写,例如hadoop mapreduce,只能运行在hadoop集群平台上。

运维的责任:保证集群,机器的稳定性和可靠性

hadoop系统本身研发:提高Hadoop集群的性能,增加新功能。

大数据应用:把hadoop作为工具,去实现海量数据处理或者相关需求。

(11)学习hadoop该怎么入手呢?应该做一些什么样的项目呢?

可以参考我上面的几个回答,可以从最简单词频统计程序入手,然后学习理解HDFS和MapReduce的基本原理和核心机制,如果仅仅把Hadoop作为一个工具来使用的话这样就可以了,最重要的就是实战了,可以尝试使用Hadoop处理一些数据,例如做日志分析,数据统计,排序,倒排索引等典型应用。

(12)100个以上hadoop节点,一般怎么开发,运维?任务很多的情况下任务资源怎么分配,任务执行顺序是定时脚本还是别的什么方式控制

1 首先大数据的应用开发和hadoop集群的规模是没有关系,你指的是集群的搭建和运维吗,对于商用的hadoop系统来说涉及到很多东西,建议参考《hadoop核心技术》实战篇 “第10章 Hadoop集群搭建 ” 章节。

2 任务的分配是有hadoop的调度器的调度策略决定的,默认为FIFO调度,商业集群一般使用多队列多用户调度器,可以参考参考《hadoop核心技术》高级篇 “第9章 Hadoop作业调度系统” 章节。

3 任务的执行顺序是有用户控制的,你自然可以定时启动,也可以手动启动。

(13)基于Hadoop做开发,是否必须会使用Java,使用其他开发语言是否无法更好的融入整个Hadoop的开发体系

基于Hadoop做开发可以使用任何语言,因为hadoop提高了streaming编程框架和pipes编程接口,streaming框架下用户可以使用任何可以操作标准输入输出的计算机语言来开发hadoop应用。

(14)在reduce阶段老是卡在最后阶段很长时间,在网上查的说是有可能是数据倾斜,我想问这个有啥解决方法吗

1,你这个就是数据倾斜啊 好多数据都集中在一个reduce里 其他reduce里分配的数据比较少 默认情况下决定哪些数据分配到哪个reduce是由reduce个数和partiiton分区决定的 默认是对key进行hash运算 一般情况下用mapreuce倾斜很少 除非你用的HIVE

2,reduce分为3个子阶段:shuffle、sort和reduce,如果reduce整个过程耗时较长,建议先看一下监控界面是卡在哪个阶段,如果是卡在shuffle阶段往往是网络阻塞问题,还有就是某reduce数据量太大,也就是你所说的数据倾斜问题,这种问题往往因为某个key的value太多,解决方法是:第一,默认的partiiton可能不适合你的需求,你可以自定义partiiton;第二就是在map端截断,尽量让达到每个reduce端的数据分布均匀。

(15)非大数据的项目能否用hadoop

非大数据项目是否可以用Hadoop的关键问题在于是否有海量数据的存储,计算,以及分析挖掘等需求,如果现有系统已经很好满足当前需求那么就没有必要使用Hadoop,没有必要使用并不意味这不能使用Hadoop,很多传统系统能做的Hadoop也是可以做的,例如使用HDFS来代替LINUX NFS,使用MapReduce来代替单服务器的统计分析相关任务,使用Hbase代替Mysql等关系数据库等,在数据量不大的情况下通常Hadoop集群肯定比传统系统消耗更多的资源。

(16)hadoop mapreduce 和第三方资源管理调度系统如何集成?

Hadoop的调度器设计的一个原则就是可插拔式调度器框架,因此是很容易和第三方调度器集成的,例如公平调度器FairScheduler和容量调度器CapacityScheduler,并配置mapred-sitexml的mapreducejobtrackertaskscheduler以及调度器本身的配置参数,例如公平调度器控制参数则需要编辑fair- schedulerxml进行配置,具体可以参考我的新书《Hadoop核心技术》实战篇第十章节1011的集群搭建实例中的10109 配置第三方调度器,同时可以进一步深入学习第9章 Hadoop作业调度系统,在这一章中会详细介绍各种第三方调度器以及使用配置方法。

Hadoop处在云计算三层模型中的PaaS这一层。

Hadoop处在云计算三层模型中的PaaS这一层。PaaS是指平台即服务。把服务器平台作为一种服务提供的商业模式,通过网络进行程序提供的服务称之为SaaS,是云计算三种服务模式之一。

当我们现在(2014年7月)访问Apache的Hadoop官方网站,可以看到目前官网提供了三个推荐版本。像我一样的初学者必然感到困惑: 12X - current stable version, 12 release 24X - current stable 2x version 023X - similar to 2XX but missing NN H

当我们现在(2014年7月)访问Apache的Hadoop官方网站,可以看到目前官网提供了三个推荐版本。像我一样的初学者必然感到困惑:

12X - current stable version, 12 release

24X - current stable 2x version

023X - similar to 2XX but missing NN HA

1、为什么会提供这么奇怪的版本,我做了一些了解

Hadoop一代:原来Hadoop最初的开发时候出现了020,021,022,023这样的版本,后来020x版本最后演化成了现在的10x版本,也就是Hadoop第一代的稳定版本。也就是说第一代Hadoop包含三个大版本,分别是020x,021x和022x,其中,020x最后演化成10x,变成了稳定版,也就是现在官网推荐的一代稳定产品12x。 021x和022x是下一代Hadoop中的MapReduce实现,只不过资源管理系统还是用的JobTracker,没有使用YARN。

Hadoop二代:而最初的023版本,完全不同于第一代Hadoop,是一套全新的架构,包含HDFS Federation和YARN两个系统,后来也由023演化出了20x系列的二代版本。 至于023和20x系列的不同,那就是相比于023x,2x增加了NameNode HA和Wire-compatibility两个重大特性。

那么,我们就可以非常清楚的明白,Hadoop官网给出的三个下载链接:

12x代表第一代的Hadoop框架; 24x代表第二代的Hadoop框架;023x也是第二代框架,只是缺少了NN HA特性。

什么是NN HA? 答:Namenode High Available,即Namenode高可用性。这里有一篇关于HA解决方案的介绍:

http://wenkubaiducom/linkurl=aPnXLQjY3rXyxSwgn_9u4-7fuvmuW6WNmLDLr3YFQ7_RZjFR7YODjPK-pSbgyHBX2AZ9bzB5EYeiR09LO_ecSa6KmDNJn4R-3ImzUVGWjL_

http://wwwinfoqcom/cn/articles/hadoop-2-0-namenode-ha-federation-practice-zh

http://blogcsdnnet/wf1982/article/details/7793166

2、我们应该下载哪个版本?

由于我本次实验室所工作的事情初次接触该框架,而且需要用到较多的特性,故果断选择第二代框架。而且,作为使用者,我们必然要选择Stable版本,我们看到官网提供的24x确实是Stable版本,而且当我进入下载,找到华科大的镜像服务器时,其Stable目录下,正是241,因此本次项目我们使用241的版本。

想看最全的Hadoop版本,就去这里:http://svnapacheorg/repos/asf/hadoop/common/branches/

实际上,当前Hadoop只有两个版本:Hadoop 10(我觉得应该叫他一代)和Hadoop 20(我觉得应该叫他二代,中文免得混乱),其中,Hadoop 10由一个分布式文件系统HDFS和一个离线计算框架MapReduce组成,而Hadoop 20则包含一个支持NameNode横向扩展的HDFS,一个资源管理系统YARN和一个运行在YARN上的离线计算框架MapReduce。相比于Hadoop 10,Hadoop 20功能更加强大,且具有更好的扩展性、性能,并支持多种计算框架。

当我们决定是否采用某个软件用于开源环境时,通常需要考虑以下几个因素:

(1)是否为开源软件,即是否免费。

(2) 是否有稳定版,这个一般软件官方网站会给出说明。

(3) 是否经实践验证,这个可通过检查是否有一些大点的公司已经在生产环境中使用知道。

(4) 是否有强大的社区支持,当出现一个问题时,能够通过社区、论坛等网络资源快速获取解决方法。

3、CHD基于开源Hadoop的另一个分发版本------

我们在关注Hadoop时可能会经常看到CDH3或CDH4之类的Hadoop版本,那么他们就是由一家叫做Cloudera的公司发行的,就像Linux操作系统领域有Redhat一样,Hadoop是Apache的开源项目,然后有一家公司Cloudera就利用Hadoop改造成另一个发行版。CDH是在Apache的基础上进行优化的版本。这家云计算公司发展非常强劲,大有成为下一个Redhat之势。

可以在官网了解到相关知识:http://wwwclouderacom/content/support/en/downloadshtml

4、Hadoop2代中的相关概念

(1) Hadoop 10

第一代Hadoop,由分布式存储系统HDFS和分布式计算框架MapReduce组成,其中,HDFS由一个NameNode和多个DataNode组成,MapReduce由一个JobTracker和多个TaskTracker组成,对应Hadoop版本为Hadoop 1x和021X,022x。

(2) Hadoop 20

第二代Hadoop,为克服Hadoop 10中HDFS和MapReduce存在的各种问题而提出的。针对Hadoop 10中的单NameNode制约HDFS的扩展性问题,提出了HDFS Federation,它让多个NameNode分管不同的目录进而实现访问隔离和横向扩展;针对Hadoop 10中的MapReduce在扩展性和多框架支持方面的不足,提出了全新的资源管理框架YARN(Yet Another Resource Negotiator),它将JobTracker中的资源管理和作业控制功能分开,分别由组件ResourceManager和ApplicationMaster实现,其中,ResourceManager负责所有应用程序的资源分配,而ApplicationMaster仅负责管理一个应用程序。对应Hadoop版本为Hadoop

023x和2x。

(3) MapReduce 10或者MRv1(MapReduce version 1)

第一代MapReduce计算框架,它由两部分组成:编程模型(programming model)和运行时环境(runtime environment)。它的基本编程模型是将问题抽象成Map和Reduce两个阶段,其中Map阶段将输入数据解析成key/value,迭代调用map()函数处理后,再以key/value的形式输出到本地目录,而Reduce阶段则将key相同的value进行规约处理,并将最终结果写到HDFS上。它的运行时环境由两类服务组成:JobTracker和TaskTracker,其中,JobTracker负责资源管理和所有作业的控制,而TaskTracker负责接收来自JobTracker的命令并执行它。

(4)MapReduce 20或者MRv2(MapReduce version 2)或者NextGen MapReduc

MapReduce 20或者MRv2具有与MRv1相同的编程模型,唯一不同的是运行时环境。MRv2是在MRv1基础上经加工之后,运行于资源管理框架YARN之上的MRv1,它不再由JobTracker和TaskTracker组成,而是变为一个作业控制进程ApplicationMaster,且ApplicationMaster仅负责一个作业的管理,至于资源的管理,则由YARN完成。

简而言之,MRv1是一个独立的离线计算框架,而MRv2则是运行于YARN之上的MRv1。

(5) YARN

Hadoop 20中的资源管理框架,它是一个框架管理器,为各种框架进行资源分配和提供运行时环境。而MRv2则是运行在YARN之上的第一个计算框架,其他计算框架,比如Spark、Storm等,都正在往YARN上移植。YARN类似于几年前的资源管理系统mesos和更早的Torque。Yarn的官方介绍http://hadoopapacheorg/docs/r220/hadoop-yarn/hadoop-yarn-site/YARNhtml

(6) HDFS Federation

Hadoop 20中对HDFS进行了改进,使NameNode可以横向扩展成多个,其中,每个NameNode分管一部分目录,这不仅增强了HDFS的扩展性,也使HDFS具备了隔离性。

5、分布式计算相关的其他概念

Spark:Spark是一个高效的分布式计算系统,发源于美国加州大学伯克利分校AMPLab的集群计算平台。 Spark被称为“Hadoop的瑞士军刀”,拥有非凡的速度和易用性。Spark立足于内存计算,相比Hadoop MapReduce,Spark在性能上要高100倍,而且Spark提供了比Hadoop更上层的API,同样的算法在Spark中实现往往只有Hadoop的1/10或者1/100的长度。 Apache Spark is a fast and general engine for large-scale

data processing

Storm:分布式实时计算系统。按照storm作者的说法,storm对于实时计算的意义类似于hadoop对于批处理的意义。我们都知道,根据google mapreduce来实现的hadoop为我们提供了map, reduce原语,使我们的批处理程序变得非常地简单和优美。同样,storm也为实时计算提供了一些简单优美的原语。 有一篇介绍Strom的博客:http://wwwsearchtbcom/2012/09/introduction-to-stormhtml

------------本文引用出处-----------

http://dongxichengorg/mapreduce-nextgen/how-to-select-hadoop-versions/

http://dongxichengorg/mapreduce-nextgen/hadoop-2-0-terms-explained/

http://dongxichengorg/mapreduce-nextgen/hadoop-2-2-0/

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 云数据库加密及实践建议

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情