四、线程安全的容器类 Java编码中,我们经常需要用到容器来编程。在并发环境下,Java提供一些已有容器能够支持并发。 1.Map 在Map类中,提供两种线程安全容器。 2. Collection Collection部分主要是运用的CopyOnWrite机制,即写时复制机制。 2.数据一致性问题:当我们在副本中进行写操组时,只能在最终结束后使数据同步,不能实时同步 可以看到,这种机制适用于读操作多,写操作少的应用场景。 java.util.concurrent.CopyOnWriteArrayList Collection类的线程安全容器主要都是利用的ReentrantLock实现的线程安全,CopyOnWriteArrayList Vector 一般我们都不用Vector了,不过它确实也是线程安全的。相对于其他容器,能够提供随机访问功能。
而随着Docker应用的爆炸式增长,攻击者也正使用诸如容器逃逸、rootkit、杀软对抗等高级技术入侵容器。以容器逃逸为例,其会直接影响到承载容器的底层基础设施的保密性、完整性和可用性。 云原生场景下,容器面临着愈演愈烈的供应链攻击和运行时安全问题。企业该如何构建容器安全能力? 3月30日晚19点,腾讯安全云鼎实验室高级研究员张壮、云鼎实验室研究员严寒,将以“容器在野安全与经典攻击手法”为主题,结合腾讯容器安全服务(Tencent Container Security Service , TCSS)的实践经验及容器安全典型案例,分享容器安全最佳解决方案。 感兴趣的行业同仁可以关注腾讯安全视频号进行预约,共同探讨容器安全在云原生安全生态建设中的应用价值。 6b8ac1b931dd8a9990dbe98f9b01d79.jpg
前言容器镜像安全是云原生应用交付安全的重要一环,对上传的容器镜像进行及时安全扫描,并基于扫描结果选择阻断应用部署,可有效降低生产环境漏洞风险。 容器安全面临的风险有:镜像风险、镜像仓库风险、编排工具风险,小德今天就跟大家聊一聊镜像风险中的镜像扫描。 镜像扫描是什么? 伴随着容器的流行,它也成为黑客攻击的对象,容器安全受到重视。在容器安全方面,镜像安全是保护容器安全的基础,镜像扫描是解决镜像安全问题的基础手段。针对镜像风险问题,有效提升镜像扫描能力是关键。 保持容器镜像安全的两个方案方案1:在镜像注册表中定期扫描通过这种方式,我们需要为镜像注册表添加一个安全扫描程序,扫描程序可以是一个定时任务(Cron Job) 作业,也可以是由特定的人触发的可执行操作。 方案2:将扫描工具集成到 Pipeline 中另一种方法是在 Pipeline 上对镜像产物进行扫描,这样更加简单高效。当我们将代码推送到代码存储库时, Pipeline 将自动执行扫描镜像的命令。
如果合理地实现上述安全方案,可以在很大程度上提高Docker容器的安全性。 2、镜像安全 Docker目前提供registry访问权限控制以保证镜像安全。 3、内核安全 3.1、cgroups资源限制 容器本质上是进程,cgroups的存在就是为了限制宿主机上不同容器的资源使用量,避免单个容器耗尽宿主机资源而导致其他容器异常。 Docker安全问题 1、磁盘资源限制问题 容器本质上是一个进程,通过通过镜像层叠的方式来构建容器的文件系统。 2、容器逃逸问题 3、容器DoS攻击与流量限制问题 目前,在公网上的DoS攻击(deny-of-service,拒绝服务攻击)预防已经有很成熟的产品,这对传统网络有比较好的防御效果,但是随着虚拟化技术的兴起
文章前言Docker默认设置可以保护主机容器内的进程访问资源,虽然Docker容器内的初始进程运行为root,但它具有的权限是非常有限的,这主要是通过使用以下几种主要的安全机制来实现的: Cgroups :资源限制Capabilities:权限限制Namespace:资源隔离安全机制Cgroup控制组(Cgroup)主要用来对资源进行限制、审计等,它主要提供以下功能:资源限制:可将组设置一定的内存限制, cap-add和--cap-drop两个参数来实现添加和移除某些特权:我们可以通过查看进程状态来检查进程的特权集,并通过capsh来解码得到特定的特权集使用Capsh可以翻译出每个BIT的含义,3=0011表示2个 bit,f=1111表示4个bit,一共2+4+4+4+4+4+4+4+4+4=38bit,从后向前每个bit代表一种特权,一共38种特权集使用–privileged参数运行的容器可以获得所有的特权集, 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 等几种扫描工具,从不同维度进行对比。 和 Anchor Engine 可以在 Pipeline 上工作,所以适合解决方案2。
一、容器安全面临的挑战随着微服务架构和云原生技术的普及,容器镜像的使用量呈指数级增长。据云原生计算基金会(CNCF)统计,2025 年全球企业级容器化应用渗透率已突破 87%。 Trivy 以其扫描速度快、易于集成和实时更新的漏洞数据库而著称,广泛应用于 CI/CD 流水线、本地开发环境和容器镜像仓库的安全监控中。 作为容器安全领域的标杆工具,Trivy通过全生命周期安全防护理念和各项领先的能力,备受开发者的青睐。 cls=CustomEncoder)结语Trivy 以其轻量级设计与全栈检测能力,为企业提供了高效的容器安全解决方案。 然而,容器安全是持续演进的挑战,Trivy 更应被视为安全体系的重要组件而非终极答案。
在做容器环境安全防护时,了解容器是如何进行隔离以及这些隔离有什么问题也很重要,这样才能降低潜在的风险。 本系列将介绍容器的工作原理,并介绍一些用于保护容器化环境并对其进行故障排除的实用想法。 在这篇文章中,我们将通过Linux 工具与容器进行交互,演示容器作为进程的一些特性,并探讨这对容器安全意味着什么。 在本例中,我们的 NGINX 进程的父进程为containerd-shim-runc-v2 。您应该会看到主机上运行的每个容器的shim进程。 使用已删除文件编辑器或进程监视器等工具的加固容器对安全也很有帮助。加固容器镜像是一种常见的安全建议,但它确实使调试更加麻烦。您可以通过对主机上的目录/proc访问容器的根文件系统来编辑容器内的文件。 然后,我们可以运行docker ps以确认我们的容器不再存在。这对安全意味着什么? 我们已经看到,容器只是 Linux 进程,这对安全产生了一些有趣的影响。
线程安全的容器 列表 线程安全的列表有 Vector , CopyOnWriteArrayList 两种,区别则主要在实现方式上,对锁的优化上; 后者主要采用的是 copy-on-write 思路, ;相应的问题也很明显,效率妥妥的够了,即便全是读操作,都会有阻塞竞争,基本上完全是没法忍的 2. ]; } 和上面相同,同样是先调用 getArray() 方法,然后在进行相应的操作,如果不这么做,直接如 ArrayList 一样的调用方式时(如下) 假设数组长度为 3, 现在获取index=2( value; return old; } } addEntry(hash, key, value, index); return null; } 2. 的操作都是加锁的;而多个 segment 的操作可以是并发的 详解可以参考: Java集合---ConcurrentHashMap原理分析 更多可以参考个人网站: 一灰的个人博客网站之Java之线程安全的容器
所以,如果你要实现容器安全策略,应该从哪里开始呢? 我建议从最基本的开始:理解容器安全是什么,并构建模型来降低风险。 其余的每一个步骤都与容器安全有关,我对它们进行这样的分组: 构建时:构建、测试和发布 容器基础设施:部署和运维 运行时:监控 为什么要这样分组?安全策略只有在能够被实现的情况下才是有效的。 2构建时安全性 在构建阶段,我们输入了一堆源文件和一个 Dockerfile,得到了一个 Docker 镜像。 大多数供应商在这个时候向你强调容器镜像扫描的重要性。容器安全扫描的确很重要,但还不够。 这一阶段的目标: 避免存在安全隐患的平台配置错误 最大限度地减少来自受损容器的攻击 基础设施安全性:配置错误 容器编配器比较复杂,特别是 Kubernetes。 最后,由于它们是不可变的,所以最好是减少容器可以运行的时间:攻击者横向移动并获得持久性机会窗口等于容器运行生命周期。所以,持续关闭和滚动重启你的容器。 4运行时安全性 最后一个是工作负载的安全性。
3月8日,腾讯安全发布《容器安全在野攻击调查》(以下简称《调查》),通过对一段时间内在野的容器攻击进行统计和分析,对攻击者的战术、技术、流程、活动周期、攻击复杂度进行解析,帮助企业安全运维部门了解容器安全特性 随着容器安全面临的安全挑战越来越大,企业需要选择可靠的安全产品进行防护。 然而,容器及应用数量的增加同时也伴随着安全复杂性的增加,在生产环境中保证容器安全成为了一个极具挑战性的任务。 与虚拟机相比,容器虚拟抽象程度更高,变化程度更高,安全问题或者安全风险甚至是以毫秒级的变化存在,传统的安全管理方式、思维方法和理论模型在容器安全上无法发挥效用,容器安全成为了企业最迫切关注的云原生安全问题 Dockerhub中1093980个镜像数据,从攻击者视角出发探索容器安全的有效防护,相信能为企业容器安全运维提供借鉴。
容器安全面临的安全挑战越来越大,需要选择靠谱的安全产品进行防护。 黑产云原生攻击动机 在云原生架构中,容器生命周期短、业务复杂。 这里以挖矿的场景进行分析: 从攻击模式上分类,可以分为2类: 供应链攻击,黑客通过制作恶意的黑产镜像,通过伪造镜像名称,诱导用户主动下载黑产镜像,然后就进行挖矿。 图1 攻击模式示意 一、容器镜像安全1.1容器镜像供应链安全 图2 上图是统计近一年内发现的供应链恶意镜像,横坐标为镜像上线时间,纵坐标为下载数量。 2.1.1攻击者使用的镜像属性 攻击者使用的镜像属性可以分为3类:正常镜像、仿白恶意镜像(比如:假冒白镜像的名称,起名为ubuntu2)、恶意镜像。 这里比较推荐使用腾讯容器安全的容器动态分析引擎。(DTA) 建议厂商选择相对靠谱的云原生安全防护产品,第一时间发现安全问题,进行有效防护。
在度量指标的设计上,主要参考以下几个维度的内容进行设计:(1)ATT&CK攻防矩阵框架;(2)腾讯蓝军实践经验以及安全研究成果;(3)腾讯容器安全相关产品能力;(4)腾讯容器安全运营实践;(5)标准、技术要求等行业规范 针对容器安全的度量指标,覆盖了矩阵中所有的容器安全相关的技战术内容,可以从各个攻击阶段的维度,对容器安全进行验证度量。 (2)数千万核规模的容器集群安全运营经验,同样是我们度量指标设计的一个重要参考。在运营过程中,我们逐步积累了各种风险出现的频率、积累了各种安全事件的攻击手法。 以等保为例,2023年7月1日,《网络安全等级保护容器安全要求》正式实施,标准对容器管理平台、计算节点、镜像仓库、容器实例、容器镜像等均提出了明确的安全防护要求。 总结 基于容器技术的云原生架构,越来越多的在企业进行落地,容器的安全保障越来越得到了重视。在容器安全建设的基础上,需要进行安全防御的验证度量,确保安全体系持续有效。
新一代计算资源调度的革命性创新就是我们这个专题的主角——容器技术。 容器技术是利用Linux的namespace机制实现的。 这样一来,由于各个硬件厂商可以为容器编排平台提供自己的驱动或插件,容器可以自行访问所需要的硬件,如存储设备、GPU、RDMA网卡等。 容器本身的运行机制,市面上的书籍早已汗牛充栋,在此暂且略过。 我们知道,容器技术的一个重要特点就是,几乎所有的容器存在的意义,最终都要落实到为向外部网络上的主机或其他终端提供服务。 可以说,容器网络技术,是容器技术的精华所在,是最难理解的部分,学懂容器网络,就是摘取了ICT前沿技术皇冠上的明珠! 同样地,如果想理解容器网络的组成和性质,我们就需要从实例开始学习。 因此,让我们从实例分析开始,来洞察容器技术中的精华。
但是,容器的大量应用增加了攻击面,其快速启动和消失也对安全防护带来了很大困难,如何保障容器化改造中的安全,也是云厂商和企业需要关注的核心问题之一。 借助于腾讯安全领先的安全体系和腾讯安全云鼎实验室坚实的攻防对抗能力,腾讯安全助力腾讯云容器产品屡获行业内领先认证。 在云原生安全服务能力上,基于云鼎实验室长期在云原生安全的积累和能力建设,已搭建了从容器构建,部署、发布各阶段的容器全周期场景防护体系。 孵化的面向容器业务场景下的容器安全服务产品TCSS,可提供镜像安全扫描,容器运行时防护,容器环境基线检测等核心服务能力,为腾讯云容器业务提供全面的容器安全保障。 ? (容器安全服务产品TCSS核心能力) 未来,云鼎实验室将在云原生安全领域持续深入研究和积累,面向云原生场景助力打造最安全容器云平台,安全赋能云原生业务,让每一位客户都能享有腾讯级的安全防护。 ?
2、特权模式(privileged) 使用特权模式启动的容器时,docker管理员可通过mount命令将外部宿主机磁盘设备挂载进容器内部,获取对整个宿主机的文件读写权限,并通过写入计划任务等方式进行逃逸 具体来说,容器安全除了包括传统的安全问题以外,还涉及镜像安全,容器守护进行安全、容器运行时安全、容器编排系统安全等等。 容器编排系统安全:除了容器的镜像安全、守护进程的安全问题、运行时安全,容器生态中还有非常重要的一环,容器编排和调度,当下最主流的容器编排和调度系统kubernetes曾爆出过严重的用户提权漏洞(CVE- 容器镜像和构建、容器运行安全、docker安全操作6个章节,99个控制点,涵盖了docker安全要求的各个方面,是一个容器安全的一个重要参考。 参考资料: 1、《金融领域云原生技术与安全研究》 2、《容器时代:数万台服务器下的 Docker 深度安全实践》 3、《技术干货 | Docker 容器逃逸案例汇集》
然而,当DevOps享受Docker带来扩展性、资源利用率和弹性提升的同时,其所面临的安全隐患同样值得重视,近日Chris Taschner在SEI上撰文进行了总结。 然而除下容器与主系统完全解耦,这种使用就会存在潜在的安全隐患。因此,这篇博文主要描述了为什么系统管理员应该密切关在容器中运行应用所采纳的权限等级,以及用户访问主机系统的权限。 显然,对从互联网上下载下来的容器给以太多的信任会引发安全问题。 共享命名空间的问题通常是Docker的最大问题。命名空间是系统内核所创建的组,它通常会为不同源和区域指定不同的访问级别。 而且,如果一个容器想要共享存储,那么所有共享这个存储的命名空间必须使用显式访问。 在回应有关Docker的安全问题时,这里详细讨论了如何缓解Docker的安全问题。 缓解方法的建议包括了限制直接访问主机和在容器中运行应用的权限。 除了Doker容器的安全指导,还有其它在确保容器安全方面的建议。
如果您想要进行容器的无服务器计算,您可以选择AWS Fargate模式,如果您想要控制计算环境的安装,配置和管理,您可以选择Amazon EC2模式。 一种既可以分配EC2实例级IAM角色,又可以完全信任基于安全组的方式,是为不同的Pod使用不同的工作节点集群,甚至是完全独立的集群。 第四,我们看一下操作系统的安全。在容器的EC2模式中,客户的安全责任更多一些。 最后,我们看一下容器镜像的安全。容器镜像安全的最佳实践包括:不在容器镜像内部存储机密;让一个容器对应一个服务,在任务/Pod内使用Sidecar代理;最小化容器体积,只包括运行时需要的内容等等。 还有,我们也要保证运行时的容器安全。