王成光:MongoDB和Elastic数据安全问题实战解析

举报
feichaiyu 发表于 2020/02/17 23:06:22 2020/02/17
【摘要】 2017年3月13日晚8:30分,前网易技术专家、搜狐架构师王成光带来了主题为“最新MongoDB 3.4和Elastic 5.2数据安全实战分享”的交流。以下是主持人肖丽叶整理的问答实录,记录了作者和读者问答的精彩时刻。问:本场Chat的起源是什么?答:自从1月份发生的大规模的MongoDB和Elastic的数据安全问题后,相信大家都已经意识到数据安全的严重性。没有任何安全措施防护,互联网...

2017年3月13日晚8:30分,前网易技术专家、搜狐架构师王成光带来了主题为“最新MongoDB 3.4和Elastic 5.2数据安全实战分享”的交流。以下是主持人肖丽叶整理的问答实录,记录了作者和读者问答的精彩时刻。


问:本场Chat的起源是什么?

答:自从1月份发生的大规模的MongoDB和Elastic的数据安全问题后,相信大家都已经意识到数据安全的严重性。没有任何安全措施防护,互联网数据很容易遭到破坏。本篇文章主要围绕最新MongoDB3.4和Elastic5.2在认证模式下集群搭建的重大变化,以及在实际应用中可能遇到的问题,和大家讨论分享。


问:为什么介绍最新MongoDB3.4和Elastic5.2?

答:因为不管MongoDB3.4、还是Elactic5.2相比之前,不管新功能、安全性、还是性能都有很大调整。具体表现在以下几点。

MongoDB 3.4 主要新功能:

  • 自3.2起默认存储引擎从MMAP改为性能更优的WiredTiger。

  • 增加了对 只读视图 的支持,视图将集合里满足某个查询条件的数据虚拟成一个特殊的集合,用户可以在特殊的集合上做进一步的查询操作。

  • 增加了大量的 aggregation 操作符,功能更加强大了,支持更复杂的关系运算。

  • 安全性进一步提升,支持轮转的将复制集、或分片集群的各个节点开启鉴权,不需要停服务。

Elastic 5.2 主要新功能:

  • 5.2开始Bootstrap Checks,系统属性设置不合适不能启动ES服务。

  • 过时的queryies去除,像:filterd,and, or —> bool ; missing —> exists; limit —> terminate_after 都被做了替换。

  • 字段定义类型string 不再存在,而是以 text/keyword。 形式存在,二者不同在于:text适用于分词模式,keyword适用于不分词的原子短语方式。

  • 字段属性index 不再接受not_analyzed/no,现在只接受 true/false。

  • 多了x-pack权限认证组件,它集成了之前的shield和Marvel等。

MongoDB 3.4和Elastic 5.2在性能和使用方面都做了重大调整,而且安全性也大大提高,所以给大家分享这两个最新的。


问:认证模式,使用前后有何变化?

答:对于Mongo DB:

  • shell客户端: 认证前可以直接执行基本的CRUD操作;认证后,必须先认证通过,才能执行CRUD。

  • Java Client: 也增加了权限选项控制,类似于shell客户端。

对于Elastic:

  • 集群性能监控: Marvel和安全认证shield已经被统一集成到x-pack,功能更完善,使用更方便;

  • 集群管理软件:Head,自5.0起以不再支持插件模式,必须以独立服务启动,认证后,必须增加有相关权限的用户和密码才可以正常使用。


认证前,head插件已经无法起作用。认证后,才能具备之前的集群管理功能。至于应用服务端,对于认证前后的使用变化,我在文章中也有实际代码可以参考。


问:Elasticsearch增加Xpack后对性能有影响吗?

答:x-pack运行依赖 kibana 和 es两者,主要通过kibana完成监控和日志收集,es中相当于一个过滤器存在,和之前相比,仅仅在获取客户端时增加了权限认证,之后所有操作都和之前一样,所以性能上基本没有影响。


问:增加了权限管理之后之前直接在服务器上执行curl 命令的是否有影响?

答:执行每个命令都需要增加权限认证,比如现在让一个系统用户失效:

 curl-XPUT—user elastic:light2017    'http://localhost:9200/_xpack/security/user/esTcpConnecter/_disable'

索引管理工作同样如此。

浏览器端使用,会显示提醒 输入用户和密码,否则无法访问。


问:有没有办法监控ES 当前在执行的任务,比如有多少index和search 动作?

答:ES中新增了集群监控,如下图:



有index层级、node层级和cluster层级的,相关动作这里应该可以有所体现。


问:最近碰到一些搜索需要index之间的关联查询,这一块有什么好的处理方式吗?

答:关联查询虽然ES 也支持这种功能,但比较适合一个大表和一个小表的关联,对于多对多的使用,而且每个表数据量都很大,效率会很低。可以考虑拆分 多次查询完成。或者借助第三方网络缓存数据库Redis或本地缓存guava cache。


问:大家都说MongoDB坑太多了,你怎么看呢?

答:坑是不少,它本身也在不断完善中,性能也在不断提升,应对一般日常应用应该还是没问题的,我们也要看到它的发展,以后会越来越好。尤其是3.0出现后,性能得到很大提升,单表应对亿级行,查询性能还是非常快的。


问: 请问shield有替代方案吗?

答:shield已经被x-pack集成到里面了。Mongo中嵌套二级索引、复合索引、稀疏索引,这些对于查 询性能都有很大提高。本来MongoDB3.0出来前,tokumx已经有替代它的趋势,但3.0出现后,又恢复了MongoDB在NoSQL届的王者霸气!


(以上内容转自GitChat,版权归GitChat所有,转载请联系GitChat,微信号:GitChat,原文: 《王成光:MongoDB和Elastic数据安全问题实战解析》

本文转载自异步社区。

原文链接:https://www.epubit.com/articleDetails?id=NC7E3EF9346300001F66DB4901B001B66

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。