正文
-
CPU 负载加压:使宿主机 CPU 资源占有率达到 30%~100%。
-
内存负载加压:通过频繁 malloc/free 操作实现宿主机内存的频繁操作,使内存占用率达到 30%~80%。
-
IO 加压:使用 fio 工具可以实现对多种 IO 类型 (sync, mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi 等) 进行加压。
长时间稳定性测试适用于需要长久运行容器并且业务不能中断的业务场景。功能测试无法验证系统能否稳定运行较长的时间,一些隐藏较深的缺陷会在系统运行一段时间后爆发,如文件句柄泄露、各状态间锁冲突等。需要对容器引擎进行长时间稳定性测试,执行时间通常在 7 天以上。
将业务部署到容器中,同时模拟用户请求,观察业务运行一段时间。不足之处在于,业务本身只能覆盖与本业务最相关的部分接口,无法有效覆盖所有接口,并且无法模拟出容器各种状态频繁切换的场景。因此无法触发一些容器状态切换时锁冲突等深层缺陷。
列举容器所有状态,并遍历状态切换的所有路径。从一个状态切换到另一个状态有多种方式。例如从 running 状态切换到 exited 状态可以使用 stop 命令或 kill 命令,而每一个命令又对应着多种命令选项。容器状态迁移的方式如下图所示,在执行测试时首先批量启动若干容器,之后通过随机算法频繁的随机切换容器的状态来达到触发深层缺陷的目的。
与私有云相比,公有云对安全性要求较高。需要针对该场景进行安全加固。该项安全测试主要是针对基于 runc 的容器引擎,runv 的加固方式不在其中。
执行开源社区已有的容器安全测试套来确认环境的安全性。不足之处在于社区中只包含了通用的安全检测点,无法针对自有的特定环境进行安全加固的验证。
将容器安全测试分为安全合规测试和安全渗透测试。
1、安全合规测试
安全合规专项测试排查涉及到账号管理、文件管理、密码和密钥管理、端口占用、日志管理等内容。因安全合规测试涉及内容较多,下面只列举出部分例子,其余部分在此不再敖述,感兴趣的读者可以阅读网络安全的书籍。
-
账号管理:应用账号不能写死在代码中;需要单独接口进行账号权限认证。
-
文件管理:禁止存在无主文件;文件权限需要最小化处理,配置文件权限不高于 644,执行文件权限不高于 744。
-
密码和密钥管理:密钥不可硬编码到代码中;禁止使用不安全的加密算法 (DES、RSA、MD2 等);登录 hub 时需要对密码进行加密 (aes 加密)。