系统管理员的容器时代之殇

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

系统管理现在处于一个癫狂的时代,一片混乱。

我并不是抱怨老式系统管理员们,他们还是知道如何让系统工作起来,知道怎么更新系统和如何升级扩容。

这篇吐槽是关于容器、预构建虚拟机镜像的,它们真是令人难以置信的混乱,它们的脑子里面就根本没有“可信”和“升级”的概念。

系统管理员的容器时代之殇

举个 Hadoop 的例子,似乎就没有人知道如何从头构建一份 Hadoop,它那令人头昏眼花的依赖关系、版本需求和构建工具让人云山雾罩。所有这些“神奇”的工具仍然是通过传统的 make 命令构建的,每个工具都是它自己带的,彼此不兼容,你得按照没有复用意义的“当日路线图”来构建。因为没有人能从头构建,所以现在大家都从一些不定是哪个的网站去下载已经编译好的二进制,基本上没有任何认证和签名。

这是 NSA 和病毒们的天堂啊!不需要搞什么破解和漏洞挖掘,只需要弄个“APP”、虚拟机或 Docker 镜像,人们就会把这些恶意代码弄到他们的网络里面去。

Debian 的 Hadoop 维基页就是一个典型的例子,基本上,从 2010 年开始人们就已经放弃了从源代码构建一个 Debian 上可用的 Hadoop 包了。

要构建 Apache Bigtop,你首先需要安装 puppet3,然后用它从互联网上下载一些魔法般数据。以 sudo 的权限启动 puppet ,顺便给 NSA 开个后门(举个例子,它会下载和安装一个过期的预编译的 JDK——因为它认为你太笨了,不会安装 Java),然后期待它能顺利构建而不是抛出200行的毫无用处的报错跟踪。

我没有开玩笑,它会试着执行像下面这样的脚本:

 
  1. /bin/bash -c "wget http://www.scala-lang.org/files/archive/scala-2.10.3.deb ; dpkg -x ./scala-2.10.3.deb /" 

注意,甚至这并没有正常的安装这个包,而只是将其解压缩到你的根目录下!下载时也没有检查任何签名、没有通过 SSL(脚本来自 Bigtop 的 puppet 清单)。

即便你的构建正常工作了,它也会通过 Maven 下载来自互联网的没有签名的二进制代码,并用这些来构建。

不再写一些干净的、模块化的架构,所有这些现在都牵扯在混乱的依赖里面。我上次看到, hadoop 的类路径已经有 100 多个 jar 了,现在?我打赌它肯定有 150 个了。那些 HBaseGiraphFlumeCrunchPigHiveMahoutSolrSparkElasticsearch 以及 Apache 家族的其它东东都是这样混乱。

所谓软件栈,现在的意思是“我也不知道我实际上用的是啥”。

Maven 、ivy 和 sbt 这些即用的工具其实就是让你的系统从互联网下载那些无签名的二进制数据并运行在你的计算机上。

再加上容器,哦天哪,更乱了。

是否想过给容器进行安全更新?

基本上,Docker 的思路就是下载一个未签名的二进制并运行它,然后期望它不要将任何后门放到你的公司网络里面去。

这就像是我在90年代时在 Windows 上下载的共享软件一样。什么时候会出现第一个带有 Ask 工具条的 Docker 镜像呢?第一个通过 Docker 镜像传播的互联网蠕虫呢?

回到前些年,Linux 发行版努力着提供一个安全的操作系统,带有签名的软件包、可信的网络、甚至还能完全的重新构建。

而现在呢?什么东西都已经 Windows 化了,到处是疯狂的“App”,你下载,你运行,根本不管是否安全,是否能升级到下个版本。因为你就是“过把瘾就死”!

更新:其实在 Docker 之前就有这样的作法了,Docker 只是一个新的 'curl | sudo bash' 而已。是的,这就是主流的、在你的数据中心下载并运行一个不可信软件的方法。这太糟糕了,真的。之前,系统管理员还在努力的防御安全漏洞,现在,他们自称 “devops”了,然后很 happy 地把这些东西弄到他们的网络里面了!


本文作者: wxy

来源:51CTO

相关文章
|
监控 安全 Cloud Native
容器安全的风险应对及 Twislock 容器安全方案| 学习笔记
快速学习容器安全的风险应对及 Twislock 容器安全方案。
696 0
容器安全的风险应对及 Twislock 容器安全方案| 学习笔记
|
2月前
|
监控 关系型数据库 MySQL
利用容器编排工具实现员工电脑监控软件系统的横向扩展
随着企业规模的不断扩大,员工电脑监控软件系统的横向扩展成为一项迫切的需求。为了更有效地管理和监控员工的工作环境,容器编排工具的运用成为一种值得考虑的解决方案。在本文中,我们将探讨如何利用容器编排工具实现监控软件系统的横向扩展,并通过一些实际的代码示例来说明。
184 0
|
10月前
|
存储 C语言 C++
C++常见容器一网打尽
C++常见容器一网打尽
|
11月前
|
存储 Devops 测试技术
打破神话:容器vs虚拟机
打破神话:容器vs虚拟机
|
存储 运维 Prometheus
当容器应用越发广泛,我们又该如何监测容器?
随着容器技术蓬勃发展与落地推行,越来越多企业的业务运行于容器中。作为主流部署方式之一,容器将团队的任务和关注点分割开,开发团队只需关注应用程序逻辑和依赖项,而运维团队只需关注部署和管理,无需再为特定软件版本和应用程序特定配置等应用程序细节而提心吊胆。这意味着开发团队和运维团队可以花费更少时间进行调试上线,将更多时间用于向最终用户交付新功能。容器使企业可以更加轻松的提高应用程序可移植性和操作弹性。据 CNCF 的调研报告显示,73% 受访者正在使用容器来提高生产敏捷性并加快创新速度。
当容器应用越发广泛,我们又该如何监测容器?
|
存储 JSON Kubernetes
下一代容器架构已出,Docker何去何处?看看这里的6问6答!!
我们今天讨论的是《下一代容器架构已出,Docker何去何处?》 其实就目前来说,下一代容器架构可以约等于≒Podman+Skopeo+Buildah 其实这半年来很多自媒体都在鼓吹新的容器架构,吹嘘将要很快的替代Docker。但是很少人讨论新的架构和老的架构的区别,以及目前迁移的可能性等等等等。。。这些都是摆在企业面前去接触新架构的大山。所以,我们今天不做具体的新容器架构实战,我们只回答以下几个问题。 Q1 什么是Linux容器以及它如何工作? 一句话回答:就像港口的集装箱 (1)linux容器又名LXC(Linux Container),我们要形象的理解Linux容器的话,我们可以
266 0
|
容器
共享容器——URLOS最新发布的一项超强功能
共享容器是指将多个服务(例如网站)放在同一个容器中运行,它们共享同一个运行环境。它区别于URLOS传统的独立容器部署方式,将多个网站放在一个容器中运行,有利于节省主机资源。
400 0
共享容器——URLOS最新发布的一项超强功能
|
容器 Docker Linux
【DockerCon2017技术解读】使用Moby工具和Linuxkit定制容器系统
DockerCon2017的技术解读中,阿里巴巴技术专家王炳燊为大家解读了在DockerCon2017中新发布的Moby项目和Linuxkit项目,为大家详细地介绍了Moby与Docker的区别,以及Linuxkit的优势所在,并通过示例介绍了如何利用Moby工具和Linuxkit定制容器系统。
624 0
|
安全 虚拟化 开发者
Joyent公司CTO谈容器安全:安全性是容器部署面临的首要问题
本文讲的是Joyent公司CTO谈容器安全:安全性是容器部署面临的首要问题【编者的话】随着容器技术的发展,越来越多的IT企业开始关注容器技术。面对视安全如生命的企业级项目,如何才能帮助他们快速扫清拥抱容器技术的障碍?致力于容器云服务的Joyent公司CTO Bryan Cantrill在第97期The New Stack Analysts中探讨了Joyent对容器安全问题的一些看法。
1204 0