众所周知,在云原生环境中,我们可以通过 RBAC 机制控制应用对集群中资源的访问权限,但对于生产环境来说,这些还远远不够,当应用可以访问到宿主机的资源(比如 Linux 权能字、网络访问、文件权限)时,宿主机仍然存在安全风险。对于这种情况,Linux 内核安全模块 AppArmor 补充了基于标准 Linux 用户和组的权限,将程序限制在一组有限的资源中,同时也是对 Pod 的保护,使其免受不必要的攻击。
Docker实现原理:https://zone.huoxian.cn/d/1034-docker
与其他介绍Docker的文章不同,由本文开启的系列文章将专注于Docker安全研究,一共分为6部分。
将应用部署到K8s集群时,开发者面临的主要挑战是如何管理安全风险。快速解决此问题的一个好方法是在开发过程中对应用清单进行安全加固。本文,将介绍10种开发者可以对应用程序应用加固的方法。
AppArmor 主要的作用是设置某个可执行程序的访问控制权限,可以限制程序 读/写某个目录/文件,打开/读/写网络端口等等。
当容器具有SYS_ADMIN的Capability的话,则可以进行容器逃逸。它允许大量的特权操作,包括mount文件系统,交换空间,还有对各种设备的操作以及系统调试相关的调用。
runC是一个开源项目,由Docker公司(之前称为Docker Inc.)主导开发,并在GitHub上进行维护。它是Docker自版本1.11起采用的默认容器运行时(runtime),也是其他容器编排平台(如Kubernetes)的基础组件之一。因此在容器生态系统中,runC扮演着关键的角色。runC是一个CLI工具,用于根据Open Container Initiative(OCI)规范在Linux系统上生成和运行容器。它是一个基本的容器运行时工具,负责启动和管理容器的生命周期,包括创建、运行、暂停、恢复和销毁容器。通过使用runC,开发人员和运维人员可以更加灵活地管理容器,并且可以在不同的容器平台之间实现容器的互操作性。
在Docker 19.03. 2-ce和其他产品中使用的runc 1.0.0-rc8允许绕过AppArmor限制,因为libcontainer/rootfs_linux.go错误地检查装载目标,攻击者可以在容器镜像中可以声明一个VOLUME并挂载至/proc,之后欺骗runc使其认为AppArmor已经成功应用从而绕过AppArmor策略,该漏洞由Adam Iwaniuk发现并在DragonSector CTF 2019期间披露,这个CTF题目挑战将一个文件挂载到/flag-<random>,并使用AppArmor策略拒绝访问该文件,选手可以利用这个漏洞来禁用这个策略并读取文件
对于在共享基础架构上运行的容器化应用程序,安全性至关重要。随着越来越多的组织将其容器流量负载转移到 Kubernetes,K8s 已成为容器编排的首选平台。随着这一趋势的出现,越来越多的威胁和新的攻击方式层出不穷。
跟其他添加Docker容器的第三方工具一样(比如网络拓扑和文件系统共享),有很多类似的机制,在不改变Docker内核情况下就可以加固现有的容器.
本文是关于容器安全的文章,展示了 10 种强化 Docker 基础架构并保护容器和数据免受恶意攻击的方法。
<file system> <dir> <type> <options> <dump> <pass>
为了更精细地控制Pod对资源的使用方式,Kubernetes从1.4版本开始引入了PodSecurityPolicy资源对象对Pod的安全策略进行管理,并在1.1版本中升级为Beta版,到1.14版本时趋于成熟。
这个命令呢其实和在https://hub.docker.com/这里搜索是一样的效果
我猜,你读这篇文章,说明你已经对Linux安全模块(LSM)有所了解。如果你使用过SELinux或AppArmor,其实就已经用过LSM了。甚至,在你使用的Linux发行版本或Android系统之上,也使用了LSM。
对于一个由对象存储和数据库组合驱动的文件系统,缓存是本地客户端与远端服务之间高效交互的重要纽带。读写的数据可以提前或者异步载入缓存,再由客户端在后台与远端服务交互执行异步上传或预取数据。相比直接与远端服务交互,采用缓存技术可以大大降低存储操作的延时并提高数据吞吐量。
本文包含: 磁盘及分区管理、文件系统管理、磁盘配额管理、文件系统维护 1. 磁盘及分区管理 查看磁盘设备列表命令 fdisk 查看当前计算机中的磁盘设备及分区列表 # fdisk -l 查看磁盘设备命令 hdparm 参数 I:显示硬盘提供的硬件信息 T:评估硬盘从快速缓存中读取数据的速度 t:评估硬盘从缓冲区中读取数据的速度 磁盘分区工具 fdisk 常用命令 d:删除分区 l:查看分区类型列表 n:添加新分区 p:打印当前分区列表 q:不保存已更改的内容并退出 t:修改分区类型 v:验证分区表 w:
作者:Jakub Hrozek、Juan Antonio Osorio、Paulo Gomes、Sascha Grunert
该mdadm实用程序可用于使用Linux的软件RAID功能创建和管理存储阵列。管理员可以非常灵活地协调各自的存储设备,并创建具有更高性能或冗余特性的逻辑存储设备。
Docker是目前最具代表性的容器技术之一,对云计算及虚拟化技术产生了颠覆性的影响。本文对Docker容器在应用中可能面临的安全问题和风险进行了研究,并将Docker容器应用环境中的安全机制与相关解决方案分为容器虚拟化安全、容器安全管理、容器网络安全三部分进行分析。
在本指南中,我们将了解 Linux 中的fstab是什么,文件的用途是什么,fstab文件的结构/etc/fstab以及如何调试 fstab 问题,最后,我们还将讨论mtab文件的简要介绍,它的用法以及 mtab 与 fstab 的区别。
在Docker架构中有很多重要的概念,如:graph,graphdriver,execdriver,networkdriver,volumes,Docker containers等。Docker在实现过程中,需要将以上实体进行统一化管理,而Docker Daemon中的daemon实例就是设计用来完成这一任务的实体。
各位 Kubernetes 用户们,请注意!1.30版本即将发布,这将对运维和开发者带来强大的功能。以下是关键特性的详细介绍:
简单介绍 Linux 容器是一种轻量级“虚拟化”方法,用于在单个控制主机上同一时候执行多个虚拟装置(容器)。还有一个可用来描写叙述 Linux 容器所执行的操作的术语是“容器化”。 Linux 容器提供操作系统级别的虚拟化,当中的内核控制隔离的容器。容器通过内核控制组 (cgroup) 和内核命名空间进行隔离。通过 Xen 和 KVM 等其它完整虚拟化解决方式,虚拟化子系统可模拟完整的硬件环境。
使用 mount 命令需要 root 权限,没有root权限的用户或没有使用 --privileged=true 创建的 docker 容器内无法使用 mount 命令挂载磁盘
随着 Docker 的兴起,越来越多的项目采用 Docker 搭建生产环境,因为容器足够轻量化,可以快速启动并且迁移业务服务,不过在使用的过程中,我们很容易就忽略了项目的安全问题,容器虽然有隔离的作用,但是我们知道,他与虚拟机的架构差距还是比较大的。
不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树
默认情况下容器中的磁盘文件是非持久化的,对于运行在容器中的应用来说面临两个问题,第一:当容器挂掉,K8S重启它时,文件将会丢失;第二:当Pod中同时运行多个容器,容器之间需要共享文件时。Kubernetes的Volume解决了这两个问题
文件存储(Cloud File Storage,CFS)提供了可扩展的共享文件存储服务,可与腾讯云云服务器 、容器、批量计算、轻量应用服务器等服务搭配使用。CFS 提供了标准的 NFS 及 CIFS/SMB 文件系统访问协议,可为计算服务提供共享的数据源,支持弹性容量和性能的扩展,现有应用无需修改即可挂载使用,是一种高可用、高可靠的分布式文件系统,适合于大数据分析、媒体处理和内容管理等场景。如需了解更多信息,请参见 文件存储 产品文档。
fdisk : 这个命令是磁盘分区表操作工具,fdisk能将磁盘分区,同时也能为每个分区指定分区类型,总的来说,fdisk就是磁盘工具
随着云原生的火热,容器及容器编排平台的安全也受到了行业关注,Gartner在近期发布的《K8s安全防护指导框架》中给出K8s安全的8个攻击面,总结如下:
2022 年,Kubernetes继续巩固自己作为关键基础设施领域的地位。从小型到大型组织,它已成为广受欢迎的选择。出于显而易见的原因,这种转变使 Kubernetes 更容易受到攻击。但这还没有结束,开发人员通常将Kubernetes 部署与其他云原生组件一起使用来构建一个完善的工作系统。不幸的是,这种组合会导致具有更多组件的更复杂的基础架构。这最终会增加易受攻击的表面积和范围。
用mount命令挂载的块设备,在重启系统后会失效,那么重启系统后也要自动挂载,我们可以将挂载信息写入/etc/fstab文件。fstab文件写法如下:
Docker默认设置可以保护主机容器内的进程访问资源,虽然Docker容器内的初始进程运行为root,但它具有的权限是非常有限的,这主要是通过使用以下几种主要的安全机制来实现的:
在上周刚刚过去的微软技术暨生态大会,盆盆分享了有关Azure Stack和容器的话题。其中介绍的一门微软最新的黑科技,获得了大家的广泛兴趣,这就是直接可以在Windows里运行的Linux容器!接下来盆盆就用这篇小文章来聊聊这个技术吧!
2.容器不是虚拟化:运行在Docker容器中的程序接口和主机的Linux内核直接打交道,可以帮助使用已经内置到操作系统中的容器技术
Docker是一种开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker的核心概念包括镜像(Image)、容器(Container)和仓库(Repository)。
XFS 是一种 Linux 日志文件系统,本文记录修改 XFS 系统属性的方法。 XFS XfS文件系统是SGI开发的高级日志文件系统,XFS极具伸缩性,非常健壮。 主要特性 数据完全性 采用XFS文件系统,当意想不到的宕机发生后,首先,由于文件系统开启了日志功能,所以你磁盘上的文件不再会意外宕机而遭到破坏了。不论目前文件系统上存储的文件与数据有多少,文件系统都可以根据所记录的日志在很短的时间内迅速恢复磁盘文件内容。 传输特性 XFS文件系统采用优化算法,日志记录对整体文件操作影响非常小。XFS查询与
数据是应用程序重要的产出,所以很好的管理和存储数据,是对应用程序劳动结果的尊重。特别是在大数据时代,所有的数据都是重要的资产,保护好数据是每个开发者必须掌握的技能。我们知道,在 Docker 里,容器运行的文件系统处于沙盒环境中,与外界其实是隔离的,那么我们又要如何在 Docker 中合理的通过文件与外界进行数据交换呢?在这一小节中,我们就来介绍 Docker 中与文件数据有关的内容。
在日常使用 Linux 或者 macOS 时,我们并没有运行多个完全分离的服务器的需要,但是如果我们在服务器上启动了多个服务,这些服务其实会相互影响的,每一个服务都能看到其他服务的进程,也可以访问宿主机器上的任意文件,这是很多时候我们都不愿意看到的,我们更希望运行在同一台机器上的不同服务能做到完全隔离,就像运行在多台不同的机器上一样。
随着更多的组织开始拥抱云原生技术,Kubernetes已成为容器编排领域的行业标准。向 Kubernetes转变的这股潮流,很大程度上简化了容器化应用程序的部署、扩展和管理,并实现了自动化,为传统的单体式系统提供了胜于传统管理协议的众多优势。
在生产环境中,时常会因为磁盘故障、误操作等原因出现文件系统的错误。Chaos Mesh 很早就提供了注入文件系统错误的能力。用户只需要添加一个 IOChaos 资源,就能够让对指定文件的文件系统操作失败或返回错误的数据。在 Chaos Mesh 1.0 之前,使用 IOChaos 需要对 Pod 注入 sidecar 容器,并且需要改写启动命令;哪怕没有注入错误,被注入 sidecar 的容器也总是有较大的性能开销。随着 Chaos Mesh 1.0 的发布,提供了运行时注入文件系统错误的功能,使得 IOChaos 的使用和其他所有类型的 Chaos 一样简单方便。这篇文章将会介绍它的实现方式。
访问下载页面,根据您想要的启动方式,获取 ISO 文件或网络启动映像,以及相应的GnuPG签名。
PVE下默认限制了LXC容器权限,不能直接挂载NFS共享文件。 简单粗暴的方法是直接取消限制,修改容器配置文件,追加一行,如: # echo "lxc.apparmor.profile: unconfined" >> /etc/pve/lxc/100.conf 这种做法取消所有安全规则,不够安全,下面是单独设置nfs的方法: 1. 在宿主机创建 新规则 # cp /etc/apparmor.d/lxc/lxc-default-cgns /etc/apparmor.d/lxc/lxc-default-nf
容器为什么需要进行文件系统隔离呢? 被其他容器篡改文件,导致安全问题 文件的并发写入造成的不一致问题 Linux容器通过Namespace、Cgroups,进程就真的被“装”在了一个与世隔绝的房间里
领取专属 10元无门槛券
手把手带您无忧上云