容器映像(container image)是开发人员创建并注册的程序包(package),包含在容器中运行所需的所有文件(通常採layering分层方式组织)。映像(image) 通常包含很多 层(layer),例如最小化的作业系统(OS)核心(又称基础层base layer),应用程序框架和自定义的代码。
即使容器 主机(host) 可以直接联繫一个 登录中心(registry) 以取得映像并将其部署到一个容器中,容器的 协调器(orchestrators),如Kubernetes (K8S)、Docker Swarm及Mesos等,可以自动化部署过程,从登录中心下载映像、将其部署到容器,并管理容器运行等。
不变性(Immutability)和弹性(Elasticity)
容器就像是"宠物、牛、鸡和昆虫"这个比喻中的鸡,它的部署主要是为了弹性(Elasticity)。所谓的弹性是指“规模可以自动放大并缩小(scale out and scale in)”和“性能可以自动升级与降级(scale up and scale down)”的能力。
我们会细心地照顾我们的宠物(pets),但会毫不后悔地杀死并吃掉了牛与鸡等动物。虚拟主机(VM)和容器都像是动物一样,可以根据我们的决定随时销毁、更换和增加的工作负载(workload)。然而,不变性(Immutability) 和 无状态(stateless) 是容器实现 弹性(Elasticity) 的两个关键属性。
不变性是指“随着时间的流逝不变或无法改变。”(Google) 我们可以将容器视为唯读;更新容器的唯一方法是用新容器将旧的取代。无状态意味着容器不会在其本地存储中保留数据;但是,远程存储库可用于在容器之间保留(persist)和共享状态。
大多数应用程序容器技术都实现了不变性的概念。换句话说,容器本身应作为已部署但未更改的无状态实体进行操作。当需要升级正在运行的容器或更改其内容时,只需将其销毁并替换为具有更新的新容器即可。
资料来源: NIST SP 800-192
叠加网路 (Overlay Network)
覆盖网络通常用于隔离节点之间的流量。然而,这可能会导致非容器感知防御工具难以监控流量。
分割(Segmenting)和分组(Grouping)容器
在某些情况下,适合将相同目的、敏感性和 威胁态势(threat posture) 的容器分组后,部署在同一个主机(host)上。但是,它并不适用于不具有相同安全要求的容器。
仅将具有相同目的,敏感性和威胁状态的容器分组在一个主机OS内核上,以允许进行深度防御。
按用途,敏感度和威胁状态对容器进行细分,可以提供更多的深度防御。可以通过使用多个物理服务器来提供此分段,但是现代虚拟机管理程序还提供了足够强大的隔离度,可以有效地缓解这些风险。
资料来源: NIST SP 800-192
NIST应用程序容器安全性指南
NIST建议组织应遵循以下建议,以帮助确保其容器技术实施和使用的安全性:
量身定制组织的运营文化和技术流程,以支持通过容器实现的新的开发,运行和支持应用程序的方式。使用容器特定的主机操作系统而不是通用的主机操作系统来减少攻击面。仅将具有相同目的,敏感性和威胁状态的容器分组在单个主机OS内核上,以允许进行进一步的防御。为映像採用 特定于容器(container-specific) 的漏洞管理工具和过程,以防止资安事故。考虑使用基于硬件的对策为可信计算提供基础。使用 容器感知(container-aware) 的运行时防御工具。参考
什么是容器安全性?NIST SP 800-192(应用程序容器安全性指南)容器安全指南–您需要知道的一切宠物和牛的比喻展示了无服务器如何适应软件基础架构的前景宠物与牛的历史以及如何正确使用类比弹性自动化弹性CISSP成功的蓝图
我的新书 《追求高效能的CISSP:安全和风险管理》可帮助CISSP有志者建立可靠的概念安全模型。它不仅是信息安全的教程,还是CISSP考试的学习指南,也是安全专业人员的参考资料。
它在Amazon上可买到 。来自Amazon不支援的国家或地区的读者,可以从作者的网站上购买 。原始来源: The Basics of Containerization