四、线程安全的容器类 Java编码中,我们经常需要用到容器来编程。在并发环境下,Java提供一些已有容器能够支持并发。 1.Map 在Map类中,提供两种线程安全容器。 从字面上就能理解什么意思,就是当我们往一个容器里添加元素的时候,先对这个容器进行一次复制,对副本进行写操作。写操作结束后,将原容器的引用指向新副本容器,就完成了写的刷新。 1.内存占用:毫无疑问,每次写时需要首先复制一遍原容器,假如复制了很多,或者本身原容器就比较大,那么肯定会占用很多内存。可以采用压缩容器中的元素来防止内存消耗过大。 java.util.concurrent.CopyOnWriteArrayList Collection类的线程安全容器主要都是利用的ReentrantLock实现的线程安全,CopyOnWriteArrayList Vector 一般我们都不用Vector了,不过它确实也是线程安全的。相对于其他容器,能够提供随机访问功能。
而随着Docker应用的爆炸式增长,攻击者也正使用诸如容器逃逸、rootkit、杀软对抗等高级技术入侵容器。以容器逃逸为例,其会直接影响到承载容器的底层基础设施的保密性、完整性和可用性。 云原生场景下,容器面临着愈演愈烈的供应链攻击和运行时安全问题。企业该如何构建容器安全能力? 3月30日晚19点,腾讯安全云鼎实验室高级研究员张壮、云鼎实验室研究员严寒,将以“容器在野安全与经典攻击手法”为主题,结合腾讯容器安全服务(Tencent Container Security Service , TCSS)的实践经验及容器安全典型案例,分享容器安全最佳解决方案。 感兴趣的行业同仁可以关注腾讯安全视频号进行预约,共同探讨容器安全在云原生安全生态建设中的应用价值。 6b8ac1b931dd8a9990dbe98f9b01d79.jpg
前言容器镜像安全是云原生应用交付安全的重要一环,对上传的容器镜像进行及时安全扫描,并基于扫描结果选择阻断应用部署,可有效降低生产环境漏洞风险。 容器安全面临的风险有:镜像风险、镜像仓库风险、编排工具风险,小德今天就跟大家聊一聊镜像风险中的镜像扫描。 镜像扫描是什么? 市场上容器规模根据目前权威的市场调查数据显示,72% 客户的容器规模为 100 个以上,4% 客户的容器规模超 5000 个,部署小规模容器的客户已经相当普遍,容器使用率迎来新增长。 伴随着容器的流行,它也成为黑客攻击的对象,容器安全受到重视。在容器安全方面,镜像安全是保护容器安全的基础,镜像扫描是解决镜像安全问题的基础手段。针对镜像风险问题,有效提升镜像扫描能力是关键。 保持容器镜像安全的两个方案方案1:在镜像注册表中定期扫描通过这种方式,我们需要为镜像注册表添加一个安全扫描程序,扫描程序可以是一个定时任务(Cron Job) 作业,也可以是由特定的人触发的可执行操作。
如果合理地实现上述安全方案,可以在很大程度上提高Docker容器的安全性。 3、内核安全 3.1、cgroups资源限制 容器本质上是进程,cgroups的存在就是为了限制宿主机上不同容器的资源使用量,避免单个容器耗尽宿主机资源而导致其他容器异常。 4、容器之间的网络安全 Docker daemon指定--icc标志的时候,可以禁止容器与容器之间通信,主要通过设定iptables规则实现。 5、Docker容器能力限制 什么是能力呢? Docker安全问题 1、磁盘资源限制问题 容器本质上是一个进程,通过通过镜像层叠的方式来构建容器的文件系统。 3、宿主机内容器流量限制 Docker已经为容器的资源限制做了许多工作,但是在网络带宽方面却没有进行限制,这就可能导致一些安全隐患,尤其是使用Docker构建容器云时,可能存在多租户共同使用宿主机资源的情况
文章前言Docker默认设置可以保护主机容器内的进程访问资源,虽然Docker容器内的初始进程运行为root,但它具有的权限是非常有限的,这主要是通过使用以下几种主要的安全机制来实现的: Cgroups :资源限制Capabilities:权限限制Namespace:资源隔离安全机制Cgroup控制组(Cgroup)主要用来对资源进行限制、审计等,它主要提供以下功能:资源限制:可将组设置一定的内存限制, ,在容器运行时Docker将为该容器创建一组命名空间,然后把容器内的所有进程放到NameSpace中,在本地主机上无法看到容器内运行的进程,宿主机上各容器之间互相隔离互不影响。 目录中查看其他内核机制Docker当前默认只启用了Capability(能力机制)A:SELinuxSELinux(Security-Enhanced Linux)是Linux内核的强制访问控制实现,由美国国家安全局 cap-add=all --security-opt apparmor:docker-defaultC:SeccompSeccomp(Secure Computing Mode)是Linux内核提供的安全特性
容器安全 101:安全高效操作指南 翻译自 Container Security 101: A Guide to Safe and Efficient Operations 。 容器是交付云原生应用程序的事实标准。以下是有关它们所带来的安全风险以及采取哪些对策来保护它们的指南。 例如,从 Kubernetes 的安全角度来看,一个好的缓解措施可能是一个 admission webhook,它拒绝部署基于早于给定日期的镜像的容器。 涉及的风险 . 在 2023 年,DevOps 绝对应该意识到这些风险,并相应地与内部安全团队合作以减轻这些风险。 如何规避风险? (容器安全黄金法则) 现在情况很清楚了。我们怎样才能安全地生活,或者至少降低风险? 如果容器化工作负载的高安全级别是强制性的,例如金融、保险或任何其他高风险环境,那么一个好主意可能是依赖提供安全、经过验证和定期更新镜像的专用服务。
它将讨论 Docker 容器安全性,我们当前的位置以及未来的发展方向。 这是有关 Docker 安全性的系列文章的一部分,请阅读第二部分。 他们认为 Docker 容器实际上将保护其主机系统。 我听说有人说 Docker 容器与在单独的 VM / KVM 中运行进程一样安全。 如果您不是在多租户系统上运行 Docker,并且对容器内运行的服务使用了良好的安全性实践,则可能不必担心。你只需假设在容器内运行的特权进程与在容器外运行的特权进程是相同的即可。 有些人错误地将容器视为一种更好,更快的运行虚拟机的方法。从安全的角度来看,容器(比虚拟机在安全方面)要脆弱得多,我将在本文后面进一步介绍。 Dan自2013年8月以来一直领导RHEL Docker支持团队,但从事容器技术工作已有几年了。他领导了SELinux项目,专注于应用程序空间和策略开发。Dan帮助开发了sVirt,安全虚拟化。
随着越来越多的应用程序被容器化,容器安全也随之变得越来越重要。在项目的流水线中, 我们可以使用漏洞扫描器进行扫描并提前获得反馈,实现 “安全左移” ,也可以更好的实践敏捷。 基于容器的应用程序的安全痛点 现在,我们使用先进的技术来构建我们的应用程序,如 NodeJS、 Java 和 Kotlin 等,然后将代码库存储在托管的 Git 平台上,如 GitHub、Gitlab 保持容器镜像安全的 两个方案 方案1:在镜像注册表中定期扫描 通过这种方式,我们需要为镜像注册表添加一个安全扫描程序,扫描程序可以是一个定时任务(Cron Job) 作业,也可以是由特定的人触发的可执行操作 容器安全扫描工具对比 针对上述解决方案,我们调查了 Trivy、Claire、Anchore Engine、Quay、Docker hub 和 GCR 等几种扫描工具,从不同维度进行对比。 参考 Trivy 官网 首先,我们可以将这些扫描工具按照其执行的环境简单分类;因为 Docker Hub、GCR 和 Quay 是需要在服务端也就是容器注册中心运行的, 所以适合方案1;Trivy、Clair
一、容器安全面临的挑战随着微服务架构和云原生技术的普及,容器镜像的使用量呈指数级增长。据云原生计算基金会(CNCF)统计,2025 年全球企业级容器化应用渗透率已突破 87%。 Trivy 以其扫描速度快、易于集成和实时更新的漏洞数据库而著称,广泛应用于 CI/CD 流水线、本地开发环境和容器镜像仓库的安全监控中。 作为容器安全领域的标杆工具,Trivy通过全生命周期安全防护理念和各项领先的能力,备受开发者的青睐。 然而,容器安全是持续演进的挑战,Trivy 更应被视为安全体系的重要组件而非终极答案。 随着容器技术向 Serverless、K3s 轻量化集群等方向发展,Trivy 团队在多环境适配与检测精度上的持续优化,将进一步巩固其在云原生安全领域的实用价值。
线程安全的容器 列表 线程安全的列表有 Vector , CopyOnWriteArrayList 两种,区别则主要在实现方式上,对锁的优化上; 后者主要采用的是 copy-on-write 思路, Vector 实现 vector 保证线程安全的原理比较简单粗暴,直接在方法上加锁 get 方法 public synchronized E get(int index) { if (index public synchronized int size() { return elementCount; } 从上面几个最最常见的几个方法,就可以看出,这个实现非常的简单粗暴,全部上锁,肯定是线程安全的问题了 CopyOnWriteArraySet : 内部数组其实就是一个 CopyOnWriteArrayList, 相关方法也是直接来自 CopyOnWriteArrayList Map 线程安全的 的操作都是加锁的;而多个 segment 的操作可以是并发的 详解可以参考: Java集合---ConcurrentHashMap原理分析 更多可以参考个人网站: 一灰的个人博客网站之Java之线程安全的容器
所以,如果你要实现容器安全策略,应该从哪里开始呢? 我建议从最基本的开始:理解容器安全是什么,并构建模型来降低风险。 其余的每一个步骤都与容器安全有关,我对它们进行这样的分组: 构建时:构建、测试和发布 容器基础设施:部署和运维 运行时:监控 为什么要这样分组?安全策略只有在能够被实现的情况下才是有效的。 3容器基础设施安全性 容器基础设施由负责从注册表拉取镜像并在生产环境中作为容器运行的所有活动部件组成。 这主要是容器编配器——Kubernetes。 这一阶段的目标: 避免存在安全隐患的平台配置错误 最大限度地减少来自受损容器的攻击 基础设施安全性:配置错误 容器编配器比较复杂,特别是 Kubernetes。 最后,由于它们是不可变的,所以最好是减少容器可以运行的时间:攻击者横向移动并获得持久性机会窗口等于容器运行生命周期。所以,持续关闭和滚动重启你的容器。 4运行时安全性 最后一个是工作负载的安全性。
在做容器环境安全防护时,了解容器是如何进行隔离以及这些隔离有什么问题也很重要,这样才能降低潜在的风险。 本系列将介绍容器的工作原理,并介绍一些用于保护容器化环境并对其进行故障排除的实用想法。 在这篇文章中,我们将通过Linux 工具与容器进行交互,演示容器作为进程的一些特性,并探讨这对容器安全意味着什么。 使用已删除文件编辑器或进程监视器等工具的加固容器对安全也很有帮助。加固容器镜像是一种常见的安全建议,但它确实使调试更加麻烦。您可以通过对主机上的目录/proc访问容器的根文件系统来编辑容器内的文件。 然后,我们可以运行docker ps以确认我们的容器不再存在。这对安全意味着什么? 我们已经看到,容器只是 Linux 进程,这对安全产生了一些有趣的影响。 除此之外,其实还可以使用现有的 Linux 安全工具与容器进行交互,我们将在本系列的后面部分看到这方面的示例,但到目前为止,我们已经证明可以通过/proc来检查容器的根文件系统和其它信息 。
3月8日,腾讯安全发布《容器安全在野攻击调查》(以下简称《调查》),通过对一段时间内在野的容器攻击进行统计和分析,对攻击者的战术、技术、流程、活动周期、攻击复杂度进行解析,帮助企业安全运维部门了解容器安全特性 随着容器安全面临的安全挑战越来越大,企业需要选择可靠的安全产品进行防护。 然而,容器及应用数量的增加同时也伴随着安全复杂性的增加,在生产环境中保证容器安全成为了一个极具挑战性的任务。 与虚拟机相比,容器虚拟抽象程度更高,变化程度更高,安全问题或者安全风险甚至是以毫秒级的变化存在,传统的安全管理方式、思维方法和理论模型在容器安全上无法发挥效用,容器安全成为了企业最迫切关注的云原生安全问题 Dockerhub中1093980个镜像数据,从攻击者视角出发探索容器安全的有效防护,相信能为企业容器安全运维提供借鉴。
通过腾讯安全云鼎实验室的容器沙箱运行分析的Dockerhub 中1093980个镜像数据。 主要结论 供应链安全,不仅仅是安全左移,针对供应链的攻击也越来越频繁。 容器安全面临的安全挑战越来越大,需要选择靠谱的安全产品进行防护。 黑产云原生攻击动机 在云原生架构中,容器生命周期短、业务复杂。 图1 攻击模式示意 一、容器镜像安全1.1容器镜像供应链安全 图2 上图是统计近一年内发现的供应链恶意镜像,横坐标为镜像上线时间,纵坐标为下载数量。 大约40%的容器使用单位对于容器的攻击没有任何防御能力,无法及时有效的发现和处置入侵至容器集群中的风险。 图8 总结 随着docker应用的爆炸式增长,由于容器错误配置引发的安全问题也越来越多。 这里比较推荐使用腾讯容器安全的容器动态分析引擎。(DTA) 建议厂商选择相对靠谱的云原生安全防护产品,第一时间发现安全问题,进行有效防护。
容器安全在最近的五六年发展时间里,几乎所有的传统综合性安全厂商、云厂商、创业公司纷纷推出了自己的容器安全产品,或者是云原生安全产品。 针对容器安全的度量指标,覆盖了矩阵中所有的容器安全相关的技战术内容,可以从各个攻击阶段的维度,对容器安全进行验证度量。 (1)腾讯在内部的容器安全能力建设上,自研了容器安全产品能力,对于容器安全相关的能力要求以及原理、安全规则等,有着深入的理解和认知,这些都会作为度量指标的设计参考,以及验证剧本的指导性输入。 以等保为例,2023年7月1日,《网络安全等级保护容器安全要求》正式实施,标准对容器管理平台、计算节点、镜像仓库、容器实例、容器镜像等均提出了明确的安全防护要求。 总结 基于容器技术的云原生架构,越来越多的在企业进行落地,容器的安全保障越来越得到了重视。在容器安全建设的基础上,需要进行安全防御的验证度量,确保安全体系持续有效。
但是,容器的大量应用增加了攻击面,其快速启动和消失也对安全防护带来了很大困难,如何保障容器化改造中的安全,也是云厂商和企业需要关注的核心问题之一。 借助于腾讯安全领先的安全体系和腾讯安全云鼎实验室坚实的攻防对抗能力,腾讯安全助力腾讯云容器产品屡获行业内领先认证。 在云原生安全服务能力上,基于云鼎实验室长期在云原生安全的积累和能力建设,已搭建了从容器构建,部署、发布各阶段的容器全周期场景防护体系。 孵化的面向容器业务场景下的容器安全服务产品TCSS,可提供镜像安全扫描,容器运行时防护,容器环境基线检测等核心服务能力,为腾讯云容器业务提供全面的容器安全保障。 ? (容器安全服务产品TCSS核心能力) 未来,云鼎实验室将在云原生安全领域持续深入研究和积累,面向云原生场景助力打造最安全容器云平台,安全赋能云原生业务,让每一位客户都能享有腾讯级的安全防护。 ?
0x04 docker安全防护 docker逃逸只是容器安全中的一部分,容器的安全是一个复杂的课题,涉及到容器构建、分发、运行、销毁的全生命周期和容器技术的整个生态。 具体来说,容器安全除了包括传统的安全问题以外,还涉及镜像安全,容器守护进行安全、容器运行时安全、容器编排系统安全等等。 容器运行时安全:容器在运行时也会产生安全问题,包括有磁盘资源限制问题,容器逃逸问题,容器DoS攻击与流量限制问题等等。 容器编排系统安全:除了容器的镜像安全、守护进程的安全问题、运行时安全,容器生态中还有非常重要的一环,容器编排和调度,当下最主流的容器编排和调度系统kubernetes曾爆出过严重的用户提权漏洞(CVE- 容器镜像和构建、容器运行安全、docker安全操作6个章节,99个控制点,涵盖了docker安全要求的各个方面,是一个容器安全的一个重要参考。
我们提供更多的选择,也是希望能够以更灵活的方式帮助您把容器工作负载更快更好更安全的迁移到云端。 ? 安全性和合规性是AWS和客户共同的责任,基于此,AWS提出了云安全的责任共担模式。 第四,我们看一下操作系统的安全。在容器的EC2模式中,客户的安全责任更多一些。 最后,我们看一下容器镜像的安全。容器镜像安全的最佳实践包括:不在容器镜像内部存储机密;让一个容器对应一个服务,在任务/Pod内使用Sidecar代理;最小化容器体积,只包括运行时需要的内容等等。 还有,我们也要保证运行时的容器安全。 总结 在AWS中安全运行容器时,客户应承担许多责任,运行EKS相比ECS更是如此。
攻击者可借助开源 runc 容器运行时引擎的安全漏洞(被 Docker 等使用)来获取对主机机器的控制权。 安全公司 Snyk 在周三的博客中建议:“攻击者可以利用 [此漏洞] 从容器内部未经授权地访问底层主机操作系统。” 此漏洞以及一系列其他漏洞被他们称为 “Leaky Vessels”。 “只有当用户通过将恶意内容纳入构建过程或从可疑镜像运行容器时,这些漏洞才能被利用,” Docker 高级安全工程师 Gabriela Georgieva 在周三的博客文章中写道。 “我们强烈建议所有客户通过及时应用这些更新来优先考虑安全性。及时应用这些更新是保护系统免受这些漏洞影响并维护安全可靠的 Docker 环境的最有效措施。” “runc 与其他软件(如 BuildKit)一起工作,完成诸如解压图像层和启动容器进程、将文件系统放置到适当位置以及在删除容器后清理这些进程和文件等活动。
容器技术被广泛接受和使用的同时,容器以及容器运行环境的安全成为了亟待研究和解决的问题。为了进一步了解容器以及容器环境的安全威胁,为使用容器的用户提供安全防护建议。 绿盟科技携手硅谷知名容器安全公司NeuVector,联合发布《2018绿盟科技容器安全技术报告》。 近年来,云计算的模式逐渐被业界认可和接受。 总之,容器技术被广泛接受和使用的同时,容器以及容器运行环境的安全成为了亟待研究和解决的问题。为了进一步了解容器以及容器环境的安全威胁,为使用容器的用户提供安全防护建议。 绿盟科技携手硅谷知名容器安全公司NeuVector,联合发布《2018绿盟科技容器安全技术报告》。 《报告》从容器安全风险入手,分别从软件脆弱性、安全威胁、应用安全威胁等方面,系统的介绍了容器以及容器应用中所面临的安全问题。