通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

什么是容器的安全性?

DevOps团队在现代软件开发中使用容器的频率比以往任何时候都要高,但这些团队往往忽视了容器的安全性。以下是你需要了解的关于容器安全性的内容。

容器安全

容器由于其资源效率和便携性,越来越受到现代软件开发的青睐。据市场研究公司Gartner预测,到2023年,超过70%的组织将运行超过两个容器化应用程序。

尽管容器在许多方面都很有优势,但在安全性方面存在挑战。GitLab在2022年的调查中发现,只有64%的安全专家为容器制定了安全计划。此外,很多DevOps团队还没有为其他前沿技术制定安全计划,这些技术包括云原生/无服务器技术、APIs和微服务。

为了应对这些安全挑战,建议的解决方案是采取”向左转变”的策略。这意味着DevOps团队需要从软件开发的初期阶段就整合安全实践,而不是等到软件开发完成后再考虑安全问题。

什么是容器安全?

容器是一种轻量级的技术单元,它包含了运行一个应用程序所需要的一切,包括应用代码、运行环境、所需的库和相关配置。容器安全性指的是为确保容器的安全性和完整性而采取的措施和做法。容器安全性涉及多个层次,从容器内部运行的应用程序到它们依赖的底层基础设施都包含在内。为了确保从这些基础镜像产生或派生的任何其他镜像都是可信的,基础镜像的安全性和质量是非常重要的。通过从可靠的来源获取镜像、使用私有的存储库来管理对它们的访问、集成安全性测试、自动化部署流程,并不断地保护整个基础架构,可以确保在整个容器部署和运行的流水线中建立并保持安全性。容器加固是通过使用专门的工具来扫描容器,检测其中可能存在的安全漏洞,并采取措施解决这些问题,从而尽可能降低因这些漏洞带来的攻击风险的过程。

如果有强大的容器安全措施,那么在生产环境中部署的容器中含有的安全漏洞或恶意代码的风险就会大大降低。

为什么容器安全很重要?

与传统的方法相比,容器环境更为复杂和动态,这使得容器的安全性需要采取不同的方法和策略。这里的“移动的部分更多”可能意味着容器具有更高的流动性或更加灵活,因此带来了不同的安全挑战和风险。尽管容器在某些行为上可能看起来与小型虚拟机(VM)相似,但它们实际上是两种完全不同的技术。因此,我们不能使用与虚拟机相同的安全策略来处理容器,需要有针对性的安全策略。编排器可以用来为容器内的进程和资源定义安全策略。但是,仅仅依赖编排器来实现安全性是不够的,一个完整的安全策略需要考虑更多的因素和内容。

多层=多种需求

容器镜像是容器运行的基础,它定义了容器中的所有内容。为了确保安全,开发者应确保容器镜像不包含任何安全漏洞或损坏的代码。此外,还应该避免创建不必要的镜像来减少潜在的攻击面。提到了使用工具来验证镜像的安全性,以及在构建完成后扫描它们,确保没有依赖于可能有漏洞的其他镜像。

与虚拟机(每个都运行自己的操作系统)不同,多个容器可以共享同一个操作系统。但这也意味着,如果操作系统有漏洞,所有在其上运行的容器都可能受到威胁。同样,一个受到攻击的容器也可能对宿主操作系统构成威胁。为了提高安全性,推荐使用命名空间隔离,限制容器与操作系统核心之间的交互,并自动应用安全补丁。

容器编排是管理和协调容器的过程,它可以帮助容器化应用程序扩展以支持大量用户。编排工具,如Kubernetes,可能有其内置的安全功能,例如自动在所有Pod上执行的规则。但这只是实现强大安全策略的第一步。

智能密钥存储

容器可能分布在多个系统和云提供商上,这会增加访问管理的复杂性。应严格管理密钥,其中包括API密钥、登录凭据和令牌等,以确保容器访问仅限于具有特权的用户。还可以定义用户访问的方式,使得你可以根据特定的角色或需求来限制或允许某些用户的访问。

容器运行时安全的重要性

当容器部署后,必须持续监控其活动以确保安全性。建议监测可能的恶意行为,例如异常的网络请求、API调用和登录尝试。为了应对潜在威胁,团队应预先为Pods(Kubernetes中的工作负载单元)定义响应措施。当检测到威胁时,团队应有能力采取措施,如隔离受影响的容器、重启或停止容器等,直至确定威胁的性质。这种持续的监控和响应策略为系统提供了一个对抗恶意软件的额外保护层。

虽然云服务提供商确保了为客户提供云服务的基础硬件和网络的安全,但用户也有责任确保他们在云上运行的应用和数据的安全。用户不仅要负责应用程序的访问权限和配置设置,还要确保应用程序和系统得到适时的安全更新及补丁,同时要确保对系统的访问是安全的。

NIST 容器安全指南

2017年,美国商务部发布了其应用容器安全指南。尽管这份指南已经有几年的历史,但刚刚开始采用容器的团队仍然可以从以下建议中受益:

调整组织的操作文化和技术流程,以支持容器所带来的新的开发、运行和支持应用的方式:为了适应容器化环境,团队需要调整他们的开发和操作方法,并对其进行适当的培训。

使用专为容器而设计的宿主操作系统,而不是通用操作系统:这些为容器特制的操作系统经过了精简,只包含运行容器所必需的功能和组件,因此它们比通用操作系统具有更小的攻击面,从而降低了被攻击的风险。

仅在同一个宿主操作系统的内核上运行那些具有相同目的、敏感性和潜在安全风险(威胁姿态)的容器:

这种策略意味着,不同的容器组(根据它们的用途和安全需求)应该在不同的宿主上分隔运行。这样的“深度防御”策略提供了额外的安全层,因为如果某一组容器被妥协,攻击者会发现很难扩散这种妥协到其他分隔的容器组。这不仅使得攻击更难进行,还提高了检测和应对任何潜在妥协的可能性。

采用特定于容器的漏洞管理工具和镜像流程来防止泄露:传统的安全工具可能不适合容器环境,因为它们在设计时可能没有考虑到容器的特点和需求。因此,这些工具可能无法检测容器内的漏洞。为了确保容器镜像的安全性,组织应该使用专为容器设计的工具和流程,以确认镜像的安全配置是否符合最佳实践,这包括集中的安全报告、监控所有镜像,以及确保不会运行任何不符合安全标准的镜像。

考虑使用基于硬件的对策为可信计算提供基础:除了软件解决方案外,基于硬件的安全措施也可以增加容器的安全性。例如,通过使用硬件信任根,如受信任的平台模块 (TPM),可以进一步强化容器技术的安全性。

使用容器感知的运行时防御工具:为了监控容器的运行环境和检测其中的异常行为,应该使用专门为容器设计的安全解决方案。

相关文章