小数今天为大家抱来的内容,是有关Mesos的一个安全问题。这个问题可以说是目前行业内容器管理工具的一个通病,Mesos的团队已经在尝试解决它,那么在正式的解决方案出来前,我们也可以有办法来避免它——看看本文作者是如何思考的。

笔者研究Mesos已经很长时间了,在大多数情况下,享受着围绕Mesos整个生态系统的成长过程。为了应用(或者微服务)交付而在一个大平台上统一管理服务器是一件非常酷的事情。虽然有一些学习曲线,但是Mesos是一个非常好的应用配置工具,同时还可以把它看做统一架构进行规模扩展以及应用管理。

但是每一个技术都存在自己的缺陷和问题,我们必须诚实和开放地对待,才能让它更好地应用于企业生产。Mesos也不例外。

身份验证,开or关?

大多数开源项目都是这样开始的:“如果我们做到了X,Y和Z,那么我们就可以做到这件很酷的事情了!”然后只考虑目标用户的安全需求,这是它们的通病。Mesos团队已经踏上了从无(或者可选)到有的企业级安全之路,但是现阶段,现在仍有一些可以值得考虑的事情,让Mesos安装更加安全。

Mesos之父Ben Hindman是这样说的,“对于没有身份验证的用户来说,我们不希望在升级的时候打破他们的集群。身份验证将在默认有足够时间的情况下让应用框架升级。当一些应用框架可以身份验证同时另外其他应用框架并不支持这种升级路径时,我们开启了一种混合模式来应对。”

现在Mesos的安装默认是没有应用框架的身份验证的,也没有限制可以看到哪些应用框架。如果你使用命令行开关,可以修改这个默认行为,但是涉及到的应用框架仍然是默认打开的。本篇文章的目的即在于督促大家尽可能地在环境中使用命令行开关。

而行业标准和Mesos的做法完全相反——提供一个关闭安全的选项——但是默认它是开启的。虽然这样会使最初的部署更加困难,但这恰恰是Mesos需要的(从Ben的评论中得出的推断,他们或许正打算这么做)。

Mesos的核心安全问题

接下来的这些产生了核心的问题:

  1. 默认情况下,Mesos允许没有身份验证。通常情况下,一些形式的身份验证是需要的。越来越多的OAuth访问控制被使用。 参见Stormpath或者DigitalOcean诸如此类的API认证方案。

  2. Mesos使用“角色(role)”来决定哪一个应用框架访问资源。默认情况下,应用框架可以注册为任何角色。

  3. 持久化磁盘(例如数据库或者合同目录)可以由Mesos进行资源分配。访问被角色限定(历史版本中的最近点)控制,让它们可以用于多个应用框架上的多个应用。这也使得任意和可访问应用框架有相同角色的应用框架可以被访问。

  4. Mesos可以根据需要通过mesos fetcher给集群中的节点分配agent。所以agent的分配,将是这一弱点的限定因素,实际上相当简单——一个应用框架可以要求它的agent下载到集群中的任意一台服务器上。

  5. 公共应用框架开发框架。

所以Mesos的默认安装,任何机器都可以点击应用框架的REST API,我可以注册一个自己架构的应用框架。Mesos系统自动批准注册,所以没有人员参与决策;注册(也叫:调度器订阅)意味着没有授权也会批准,并且会回复注册信息。考虑添加应用框架的频率很低,这应该是一个有人员参与的决策处。注意,更早期的应用框架开发使用libmesos所以可能滥用这种默认,但是那样更加困难,因此不太可能被利用。新应用框架可以申请存在其他应用框架的角色,之后只需等待Mesos传递给我正确的资源,就可以访问这些静态资源。这些资源可能包含任何分配给这个角色的持久化存储磁盘,可以读写(因为目前Mesos只支持读写)。

再次强调,这是一个已知的问题,Mesos团队正在解决它。但是现在,用户需要根据自己的环境来决定是否需要自己实现。

解决之道

解决方法也很简单,有命令行选项开启应用框架身份验证,限制哪一种应用框架使用哪一种角色。但是需要把它们都打开——它们默认都是关闭的——观察Mesos集群的日志,没有显示应用框架注册是默认登录设置来登录的。注意角色管理是额外的开销,但是适用于应用框架还不是一个大的安全负担,除非频繁不断地从系统里添加/移除应用框架(非常不可能的情况)。系统目前如此设计的原因是一些应用框架并不支持身份验证,所以在生产环境之前将这项功能开启进行测试也是很有必要的。

这个问题的风险大吗?坦白地说,这取决于实现过程。如果Mesos问题集群把敏感信息放在持久化存储磁盘上,风险可能很高。如果问题集群没有这样做,仍然存在架构设计上的风险以及认证的缺失,但是可用数据——Mesos之外如何保护它——决定了它会受到何种攻击。修改运行应用的配置参数的能力是更深层的考虑;HTTP单独重定向也可能很麻烦。

总结

简而言之,这个过渡期的存在,让我们更加意识到Mesos安全的重要性,因为一个未能共同遵守规范的实践,让项目的其他地方受到类似安全设计决策的影响,目前它已经在修复身份验证这个问题。

因为是过程中的不同阶段,所以实现几乎总是和调研时发掘出不同的信息或者问题。有时间多做几个应用框架后,会把信息升级,用一个“正常者”和一个“攻击者”进行测试。安全上来说,在有足够充分的文件说明的情况下,优先彻底检验问题是最好的,但我选择在准备好可能很长的证据之前先通知社区。

本文的意义在于帮助大家使用Mesos的时候绕掉那些已知的坑,建议大家使用“命令行”开关,阅读打开身份认证的指导,然后再实现它。并且建议限制角色,至少打开验证应用框架的开关并在环境中测试它是否工作。然后再畅游Mesos的世界,享受它带来的种种便利。

Note:虽然开源技术都有这样那样的问题,但是作为出色的Mesos技术框架,那些在大规模生产集群下使用的知名企业众多,小数顺便再盘点下——
国外有:Airbnb,Apple,Cisco,eBay,PayPal,Time Warner Cable,Twitter,Uber, Netflix,Bloomberg,Verizon……
国内有:小米,新浪微博,爱奇艺,去哪儿网……

本文作者: DON MACVITTIE
原文链接: https://devops.com/mesos-secu...

避无可避:Mesos安全问题的几点思考相关推荐

  1. 如何预防账号密码泄露等安全问题

    我个人对黑客和网络安全比较感兴趣,时常关注这方面的新闻.我们知道这些安全问题都是软件程序有Bug导致的,例如CSDN的数据库泄露事件.携程泄露用户银行卡信息事件.电商网站被用户篡改购买支付金额等等. ...

  2. 聚合支付:关于支付安全的思考(一)

    俗话说:好事不出门,坏事传千里.坏事传播得又快广是互联网的特点之一.由于涉及资金,若聚合支付一旦发生安全事件,就会如坏事一般,造成轰动效应,备受社会关注.聚合支付:关于支付安全问题的第一个思考,支付安 ...

  3. 主动安全,新华三融合生态之力!

    戳蓝字"CSDN云计算"关注我们哦! 作者 |  晶少 责编 | 阿秃 出品 | CSDN云计算(ID:CSDNcloud) "如今网络安全形势错综复杂,解决方案不可能由 ...

  4. 浅谈聚合支付系统的安全性

    近些年来频发的支付安全事件,使得社会各界开始重视支付安全,上至政府机关,下至企业个人,多多少少都参与到了关于支付安全环境的建设与教育. 聚合支付:关于支付安全问题的第二个思考,支付产品滞后于科技发展的 ...

  5. 移动支付时代的手机和app安全设置

    进入移动互联网时代,移动支付已被大多数都市上班族所接受,逛个超市如果你说不能支持支付宝或者微信支付,估计会被深深鄙视,甚至就连菜市场买菜都可以随手给阿姨发个红包,虽然她们不一定懂手机淘宝 or 微信上 ...

  6. 【功能安全(ISO 26262)系列】番外篇 第一话 戏说汽车安全是个什么鬼

    更多汽车专业精彩内容尽在微信公众号: AUTO世代 写在前面的话 最近开了个汽车功能安全专题系列: 功能安全(ISO 26262)系列 主要阐述汽车功能安全(ISO 26262)关键专业内容及个人学习 ...

  7. 斑马线及让行的变迁与启示

    导语:本文继续围绕"守法规知礼让.安全文明出行"主题进行探讨.言究社邀请浙江交警程金良从多角度梳理斑马线及让行变迁历程,并对高度关注斑马线安全的当下还能做什么的问题进行了思考. 道 ...

  8. 干货 | 数字经济创新创业——数字经济下的商业模式与解决方案

    下文整理自清华大学大数据能力提升项目能力提升模块课程"Innovation & Entrepreneurship for Digital Economy"(数字经济创新创业 ...

  9. BUAA OO Unit2 多线程实时电梯系统

    基于Pipeline模式的架构设计 Pipeline 模式也称为流水线模式.将一个任务处理分解为若干个处理阶段,其中每个处理阶段的输出作为下一个处理阶段的输入,并且各个处理阶段都有相应的工作者线程去执 ...

最新文章

  1. 一篇与众不同的 String、StringBuilder 和 StringBuffer 详解
  2. Postman---html中get和post的区别和使用
  3. Mac git 终端使用
  4. 操作系统第一篇【引论】
  5. 在Linux平台上部署open***
  6. 【算法】输入一个链表,反转链表后,输出新链表的表头。
  7. AndroidWidget实践 --- EverydayTips开发(6)
  8. new、delelte和malloc、free的关系
  9. c语言教程的辅导书,清华大学出版社-图书详情-《C语言程序设计案例教程学习辅导》...
  10. Java BigInteger类| hashCode()方法与示例
  11. Kafka如何更新元数据到各broker节点
  12. 台湾厂商:大陆投资DRAM工厂可能破坏全球市场
  13. 软件设计文档国家标准—软件需求说明书(GB856T——88)
  14. 谈谈你对计算机的发展,结合您目前对计算机的认识,请您谈谈对计算机发展趋势的看法。...
  15. python数字式时钟_数字时钟案例学习python函数及时间库
  16. unity学习手记之角色动画
  17. 国际版抖音正确打开方式
  18. PHP中调用http接口
  19. 在javaweb中将excel表格导入存放数据库
  20. gradle-5.4.1-all gradle-6.1.1.all.zip下载包

热门文章

  1. Laravel 5.6 中文文档翻译完成,译者 60 人,耗时 10 天
  2. cephfs linux kernel client针对superblock操作流程的分析
  3. Linux下使用Apache实现域名转发(Tomcat/JBOSS)
  4. 启动子级时出错_【本音知识】弹钢琴时如何背谱?
  5. Go 语言编程 — net/http — HTTP 客户端
  6. DPDK — 在 NFV 中的应用
  7. 5G NGC — 关键技术 — 网络切片 — 概述
  8. 用 Flask 来写个轻博客 (33) — 使用 Flask-RESTful 来构建 RESTful API 之二
  9. Keil主题皮肤设置,自用推荐
  10. HBase学习之路 (九)HBase phoenix的使用