第 2 章 容器主机和多租户
2.1. 如何在 RHEL 中保护容器
容器允许您通过在单一主机上部署多个应用程序,使用内核和 docker 运行时来为每个容器启动,从而简化多租户部署。
您必须有一个可保护主机内核的操作系统(OS)并且相互保护容器的安全。在 Linux 中,容器只是一种特殊的进程,因此保护容器与保护任何运行的进程是一样的。容器应该以非 root 用户身份运行。建议降低权限级别或创建具有最少权限的容器。
由于 OpenShift Container Platform 在 Red Hat Enterprise Linux(RHEL)和 RHEL Atomic Host 上运行,以下概念默认应用于任何已部署的 OpenShift Container Platform 集群,并且是平台上确保容器安全的核心所在。
- Linux 命名空间支持创建特定全局系统资源的抽象集,使其显示为一个实例,独立于命名空间中的进程。因此,几个容器可以同时使用同一资源,而不会造成冲突。如需了解有关命名空间类型(如 mount、PID 和 network)的详细信息,请参阅 红帽系统中的容器概述。
- SELinux 提供了额外一层安全性,可以使容器相互隔离并与主机隔离。SELinux 允许管理员为每个用户、应用程序、进程和文件实行强制访问控制 (MAC)。
- CGroups(控制组)限制、说明和隔离一组进程的资源用量(CPU、内存、磁盘 I/O、网络等等)。CGroups 用于确保同一主机上的容器不会相互影响。
- 安全计算模式 (seccomp) 配置集可以与容器关联来限制可用的系统调用。
- 使用 RHEL Atomic Host 部署容器可尽量减小主机环境并根据容器进行调整,从而减少攻击面。
深入阅读
- Linux man page: namespaces(7)
- Red Hat Enterprise Linux Atomic Host 概述:使用 SELinux 的安全容器
- Red Hat Enterprise Linux 资源管理指南: 控制组群(CGroups)简介
- Red Hat Enterprise Linux Atomic Host Container 安全指南: Linux 漏洞和 seccomp
- 内核文档: seccomp