藏在“隐秘角落”里的容器问题,你敢说都知道?

Bob Violino
McKnight说,这些技术把交付安全应用程序和服务传统上所涉及的很多复杂问题抽象化了,而一些开发团队认为这在一定程度上能保证安全。问题是,容器实现不是万无一失的,开发团队在使用它们时所犯的错误可能会造成安全问题,而不是解决安全问题。

随着越来越多的企业将数据和工作负载迁移到云上,很多企业都依赖于容器——将代码及其相关项封装在一起的软件单元,以便应用程序在不同的计算环境之间迁移时能够可靠地运行。Clemson大学遗传与生物化学系的云架构师Cole McKnight表示,容器化被认为是一种以安全方式部署应用程序和服务的强大技术。

McKnight介绍说,Docker和Singularity等容器引擎提供了一种方法来为具体应用程序实施和分发最佳实践安全策略,而不是依靠某个用户来配置安全安装。McKnight说:“K8s、Mesos或者Docker Swarm等容器编排平台集成了安全机制,专门用于部署和执行容器。其结果是产生了易于配置的生态系统,用于开发和部署容器。”

McKnight说,这些技术把交付安全应用程序和服务传统上所涉及的很多复杂问题抽象化了,而一些开发团队认为这在一定程度上能保证安全。问题是,容器实现不是万无一失的,开发团队在使用它们时所犯的错误可能会造成安全问题,而不是解决安全问题。

1

太专注于容器本身

McKnight说:“实施安全容器时,最常见的错误是只关注容器本身。”他说,采用镜像安全的最佳实践非常重要,但开发人员通常是把重点放在镜像的安全性上,而没有考虑执行环境。

McKnight说:“容器内的任何安全机制都无法保护其免受主机的攻击。承载容器引擎的每台计算机必须在每一层都受到保护,以防出现任何传统上可被利用的漏洞。”

McKnight说,容器引擎和容器编排平台(如果适用)必须配置为能够正确使用集成的容器安全机制。“所以,容器的安全是以主机操作系统和网络为基础的。”

2

认为代码库是安全的

独立网络安全顾问Tony Asher指出,在部署容器时,一些企业会犯错误,把代码库包括在内,并认为它们是安全的。Asher说:“这包括开发套件中的库。更为严重的是,通常为了加快开发而引入了第三方库。”

Asher说,安全问题在于这些应用程序代码库中可能存在漏洞。“编译应用程序,并将其引入到产品容器中可能会导致漏洞攻击而带来严重风险。”

为了解决这个问题,Asher建议企业在考虑导入第三方库时,把库限制在应用程序容器满足其成功标准所需的范围内,扫描代码以查找漏洞,并应用安全检查过程。

3

给予容器

不必要的特权

风险投资公司ClearSky的管理合伙人Jay Leek说,给容器太多特权是很常见的,攻击者可以滥用这些特权来利用容器不应该访问但确实能够访问的资源。Leek说:“在此,应该应用最小特权原则,但要执行运行时行为监视,以确保能够检测到滥用任何必要的应用程序特权的情况。”

McKnight说,一种常见的做法是在执行环境中以特权方式运行容器。他说:“取决于主机的软件堆栈,这会有所不同。”但是在主机环境中给予容器不必要的特权会带来严重的问题,不仅会导致容器被攻破,主机也会被攻破。

McKnight说,当需要特权时,应该谨慎地以精细的粒度给予特权。“最佳实践是避免在主机环境中为容器配置了全部权限。”

4

过度公开容器

类似的,要以同样的理念来设计在执行时需要公开给公共网络的容器。McKnight说:“应该只开放绝对必要的通道,而不是配置全部策略导致容器公开而受到攻击。”

在网络方面,需要仔细考虑容器的数据和进程公开给其他实体的方式。McKnight说:“容器安全还是以传统操作系统和网络安全为基础。”必须检查容器与外部卷、网络和进程之间的任何交互。

5

未能正确检查镜像

企业在部署容器时通常忽略的另一个因素是它们所基于的镜像。McKnight说:“开发人员通常会犯的错误是,在将另一方开发的镜像集成到他们的解决方案之前,不对其进行适当的检查。”

在从公共注册表部署容器或者将其用作基本镜像之前,应对其进行扫描以查找恶意软件和漏洞。McKnight说,此外,企业应该有一名经验丰富的开发人员彻底检查镜像,找出不必要的漏洞。

McKnight说:“如果认为推送到公共注册表处的镜像是安全的,这可能是非常危险的,特别是用它们构建其他镜像时。”

6

不尊重

不可变镜像的原则

Asher指出,不可变镜像是不会改变的。他说:“这是Docker、K8s和其他容器解决方案的一个原则。”在零信任的互联网上部署系统和数据时,应建立一个确保完整性的流程。

不可变镜像有一些优点,例如可预测、可销售以及可实现自动恢复。Asher说,还有完整性,这是安全的核心目标之一。

Asher说:“当产品容器不遵循不可变原则时,应用程序支持就能够连接上它们并进行修改。这种行为会引发多重安全隐患。具体来说,它会破坏容器的完整性。”

最令人担忧的风险之一是恶意行为者将容器修改为包含恶意代码。Asher说,这会对企业造成重大影响。监控容器的完整性可以极大地降低这种风险。

Asher说:“改进并纠正部署流程,以防止产品容器发生变化。一定要在质量保证和测试环境中进行更改,而且更改是得到批准的,然后部署新的不可变镜像以替换旧镜像。”

作者:Bob Violino目前在纽约,是Insider Pro、Computerworld、CIO、CSO、InfoWorld和Network World的特约撰稿人。

编译:Charles

原文网址:https://www.csoonline.com/article/3541149/6-common-container-security-mistakes-to-avoid.html

THEEND

最新评论(评论仅代表用户观点)

更多
暂无评论