微信号:dockerone

介绍:最专业的Docker文章,最权威的Docker新闻.关注容器生态圈的发展.

一花一世界,在微服务中定义边界

2018-02-14 07:49 王杰 译

当应用程序只被部署在一台服务器上时,要保障应用程序的安全是很简单的。它只需要一个防火墙——就像孙悟空画的圈,圈里面的所有人都可以得到安全可靠的保护,但是圈外面的东东就没那么幸运了(妖魔鬼怪随时把你带走的节奏~)。防火墙就是孙大圣的金箍棒,它为你的网络(玉帝哥哥)和应用程序(其他人兽)画出了边界。

兮乎,一梦千年 ,山中方一日,世上已千年。这时代变化太快,新技术已经将基于边界的安全推向风口浪尖,现在是时候重新考虑现代云原生应用的安全性(谁去叫醒那石猴?)。


云如何影响安全性


云对安全的最大影响在于防火墙的工作方式。防火墙根据IP地址允许或拒绝用户访问——用户可以是个人,如员工或其他应用程序。这方面的最大变化是像亚马逊网络服务(AWS)这样的云提供商现在已经将访问控制权攥在自己手里。他们拥有成熟的身份和访问管理(IAM)工具,这些工具深深融入了他们自己的云平台。举个例子,AWS IAM可以通过允许应用程序从S3存储桶中获取数据或将API调用发送到AWS CloudTrail以进行日志记录来控制对EC2实例上运行的应用程序的访问。它还可以定义基于角色的访问控制(RBAC),只允许授权用户查看或更改应用程序的代码。从这个意义上说,AWS IAM(不使用传统防火墙术语)其实履行了许多防火墙的职责。

另外,云供应商已经建立了共享安全模型——即他们和客户一起负责云安全。他们在最基本的层面上关注安全性,并采取强有力的默认措施来避免恶意软件攻击。此外,AWS Inspector和AWS Macie等工具会自动扫描云中的所有资源,以检查漏洞。虽然云供应商尽全力维护安全可靠,但安全问题通常会由于客户未能在云中很好的保护自己的资源而受到损害,例如存储未加密的机密文件,把S3搞成开放式终端或疏忽大意随意同步数据到云端[1]。

云服务是一种新的技术,所以它承担了一些关键的安全责任。但它也带来了一些维护安全的不同方法,而这些都需要我们慢慢习惯。


容器和微服务可能成为安全噩梦


从依赖外围防火墙的简单日子来看,云使IT团队的安全性更加细化。然而,随着容器的出现,这个博弈的复杂程度到了一个新的高度(一沙一世界)。

首先是一切刚开始时,容器打的口号是“ 是物非心,是心非物,我就是我,不一样的烟火(containers do not contain)[2]”。Linux安全专业人员对容器之间脆弱的进程间隔离表示了强烈的不满,并且由于多个容器共享相同的宿主操作系统,因此不容易将漏洞传播到相邻容器。

然后是微服务架构的引入,其中单一应用程序被分解成多个相互依赖的服务。尽管“分而治之”的方法对于运营效率很有吸引力,但在将微服务彼此连接起来的网络中,人们会发现,任何安全专业人士都会打哈哈(不要逼我,再逼我……我就开始写简历了)。服务需要在多对多网络中相互通信——即服务网格(service mesh)。尽管它们之间的连接非常紧密,但需要有一种方法来确保每个服务都包含延迟,失败实例和安全威胁,以便即使一个服务被取消,其他服务也能执行其功能,直到受影响的服务恢复。显而易见,请求的数量和复杂的路由模式似乎都是为了支持乌托邦式的基础设施而付出的沉重的代价。如果现代云原生应用程序没有新型安全方法,尤其是网络安全性,情况将会更加严重。

微服务安全的新方法


今天的容器化应用重新定义了边界的含义。它需要多方面的努力来充分保护云原生应用程序。下面我们一起来撸一撸“关键策略”。

特定的容器安全性

容器镜像是造成漏洞的主要原因,因为公共或共享的镜像经常被染指并且对于生产环境而言是不安全的。容器注册表的镜像扫描功能可以轻松扫描下载的所有容器镜像。他们运行对常见已知漏洞的检查,并遵循CIS Docker安全性基准。

重要的是,在运行容器时,它们需要作为非特权的非root容器运行。这可以防止漏洞传播到其他容器和主机。此外,还需要采取措施保持容镜像尽可能小——这也减少了攻击的潜在可能性。此外,确保容器生命周期短(并且不超过一周)可以使你的系统更具动态性,并且不易发生漏洞。

基于策略的网络安全

容器网络现在是一个复杂的服务网格,无法手动配置。相反,你需要一套能够根据需要自动启用授权服务之间通信的策略。像Weave,Linkerd和Project Calico这样的工具都采用了这种方法,并在容器编排的早期使用者中得到广泛采用。这对防火墙有影响。相较于有一个外围防火墙,如果它被攻破,虽然会使整个系统安全降低,但是你现在有微型防火墙,它可以保护每项服务。因此,即使其中一项服务遭到破坏,其他服务仍然安全。

威胁检测

时下可用的容器安全和监控解决方案的数量很多,并且每个解决方案都迎合了整个安全难题的一个部分。将它们集合在一起并提供全面的安全是可提供端到端监控的威胁检测工具。重要的是,在攻击过程中,它识别出可疑模式并迅速突出显示攻击的源头和范围。这需要使用机器学习进行高级数据分析,但隐藏了复杂性,同时允许安全团队利用先进的安全措施,而无需专门的数据科学团队。

集中日志

在容器时代,日志在SecOps中扮演了更为重要的角色。随着大量的容器,大量的网络请求和不断变化的状态,日志帮助详细监控所有事件。在故障排除过程中它们至关重要。 日志需要集中存储,并通过专用的日志分析工具轻松访问。像Elasticsearch这样强大的开源解决方案可以让您轻松开始对容器进行日志分析。


结论


随着基础设施的变化和攻击变得越来越复杂,安全解决方案也需要与时俱进。云通过内部管理访问控制,承担了传统防火墙的某些角色。随着容器和微服务的进一步改变,外围防火墙的安全策略已经过时。谈笑间,传统防火墙灰飞烟灭,应用安全的新方法更胜一筹(一念起,万水千山;一念灭,沧海桑田)。

容器镜像的特定容器安全性、基于策略的网络安全性、运行时的威胁检测以及集中的日志分析是保护微服务应用程序的新方法。莫回头(simple security固然美好),免得湿了前方要走的路。尽管微服务世界的安全边界已经变得模糊,但新的微边界可以提供以前不可能的安全级别。这个承诺值得因此而带来的所有复杂性(一沙一世界,一花一天堂)。

相关链接:

  1. https://cloud.netapp.com/blog/synchronizing-data-to-s3-cloud-sync

  2. https://opensource.com/business/14/7/docker-security-selinux


原文链接:https://thenewstack.io/defining-perimeter-microservices-world/


Kubernetes 实战培训


本次培训内容包括:Docker容器的原理与基本操作;容器网络与存储解析;Kubernetes的架构与设计理念详解;Kubernetes的资源对象使用说明;Kubernetes 中的开放接口CRI、CNI、CSI解析;Kubernetes监控、网络、日志管理;容器应用的开发流程详解等,点击识别下方二维码加微信好友了解 具体培训内容


3月23日开始上课,点击阅读原文链接即可报名。
 
Docker 更多文章 Docker 入门教程 在Kubernetes上部署Spinnaker Mesos 1.5发布,在存储、性能资源管理以及容器化方面有重大改进 红帽收购完CoreOS,接下来将如何整合两家公司的Kubernetes产品? 手把手教你搭建一套可自动化构建的微服务框架
猜您喜欢 【Tip来5发】IB中设置多行文字 密:如何应对编程疲劳 重构:最委屈的工程实践 Timeline Portfolio - 时间轴作品集效果