0Pricing
DevOps Bootcamp · 课时

容器运行时安全

实施容器运行时安全的最佳实践,包括用户权限和资源限制。

容器运行时安全 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。

运行时安全基础

欢迎学习容器运行时安全!构建安全的镜像至关重要,但容器运行后会发生什么呢?

本课将重点介绍保护应用的最佳实践,确保应用处于运行状态时也能受到保护,从而限制漏洞或攻击可能造成的损害。

容器运行时安全 — 插图 1

最小权限原则

一个基本的安全概念是最小权限原则。它意味着只向实体(例如容器或用户)授予执行其功能所绝对必需的权限,不授予更多权限。

应用这一原则可以减少攻击面,并限制容器遭到入侵时造成的影响。

避免以根用户身份运行

默认情况下,Docker 容器中的进程以 root 用户身份运行,而该用户在容器内拥有完整的管理权限。

  • 风险:如果攻击者控制了具有根权限的容器,他们可能会利用 Docker 守护进程或内核中的漏洞,从而获得主机系统上的根访问权限。
  • 最佳实践:始终让容器进程以非根用户身份运行。

以非根用户身份运行

您可以使用 docker run 的 --user 标志,为容器进程指定用户(通过名称或 UID)。在此示例中,我们在 Alpine 容器中以用户 1000 的身份运行 id 命令。

如果用户 1000 不存在,Docker 仍会使用该 UID。

docker run --rm -it --user 1000 alpine id

了解 Linux 功能

传统 Linux 系统中的根用户拥有“全有或全无”的权限。Linux 功能将强大的根权限拆分为更小且彼此独立的单元。

这样,进程只需拥有其所需的特定根级能力(例如绑定低端口、访问原始网络),而不必拥有完整的根权限。

移除不需要的功能

Docker 容器默认以一组较大的功能运行。您可以使用 --cap-drop 移除不必要的功能,进一步限制容器能够执行的操作。

在此示例中,我们移除 NET_RAW 功能。随后,需要 NET_RAW 的 ping 命令将会失败,从而展示这一限制的效果。

docker run --rm -it --cap-drop=NET_RAW alpine ping -c 1 localhost || echo "Ping failed: NET_RAW capability dropped!"

控制容器资源

容器共享主机的内核和资源。某个容器不受控制地使用资源,可能导致其他容器甚至主机遭受拒绝服务(DoS)。

  • CPU 限制:防止容器独占 CPU 周期。
  • 内存限制:阻止容器耗尽所有可用 RAM,避免系统不稳定。

实施资源限制

您可以直接使用 docker run 设置 CPU 和内存限制。此示例将内存限制为 128MB,并将 CPU 使用量限制为 0.5(一个 CPU 核心的一半)。

这样可以确保您的容器正常运行,不会耗尽其他进程所需的资源。

docker run --rm -it --memory="128m" --cpus="0.5" alpine sh -c "echo 'Container running with limited resources.' && free -h"

只读文件系统

许多应用在启动后不需要写入其根文件系统。将文件系统设为只读可以获得显著的安全优势:

  • 防止篡改:攻击者无法修改现有文件,也无法写入新的恶意文件。
  • 限制持久化:所做的任何更改都是临时的,并会在容器重启时丢失。
  • 强制不可变性:推动采用容器可丢弃、配置外置的设计。

部署只读容器

运行容器时使用 --read-only 标志。任何试图写入容器文件系统的操作(明确挂载的卷之外)都会失败。

请尝试在这个只读容器中创建一个文件:

docker run --rm -it --read-only alpine sh -c "touch /test.txt || echo 'Error: Cannot write to read-only filesystem!'"

运行时安全检查

以下哪些做法有助于保护运行时的容器安全?

运行时安全回顾

做得很好!您已经学会了如何在容器运行时增强其安全性:

  • 最小权限:仅授予必要的权限。
  • 非根用户:避免以 root 身份运行进程。
  • 功能:移除不需要的 Linux 功能。
  • 资源限制:控制 CPU 和内存使用量。
  • 只读:使文件系统不可变,防止写入。

这些实践可以显著减少攻击面以及潜在入侵造成的影响。请继续练习!

常见问题解答

「容器运行时安全」课时是免费的吗?

是的 — 「容器运行时安全」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。

「容器运行时安全」这节课中我会学到什么?

实施容器运行时安全的最佳实践,包括用户权限和资源限制。 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 DevOps Bootcamp 需要有经验吗?

无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「容器运行时安全」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 DevOps Bootcamp 课中编写并运行代码吗?

能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 容器镜像安全扫描
  2. 容器运行时安全
  3. 密钥管理与 RBAC
  4. 网络策略与最小权限网络
← 返回 DevOps Bootcamp