fix(content): refresh Docker and Kubernetes guidance

This commit is contained in:
yeasy
2026-05-20 09:16:36 -07:00
parent e91fe87822
commit 1b651e5f8c
10 changed files with 33 additions and 20 deletions
+5 -2
View File
@@ -56,7 +56,7 @@ Rootless 模式允许在完全局限于非 `root` 用户的环境中运行 Docke
#### 配置运行 Rootless Docker
要在非 root 环境中运行 Docker需要简单几步
要在非 root 环境中运行 Docker需要先满足宿主机条件安装 `newuidmap` / `newgidmap`并在 `/etc/subuid` `/etc/subgid` 中为该用户分配足够的 subordinate UID/GID若系统级 Docker daemon 仍在运行命令行也仍可能连到 rootful socket因此应明确切换 Docker context `DOCKER_HOST`
1. 安装必要的依赖通常是 `uidmap` 工具包以便系统支持 `newuidmap` `newgidmap`
```bash
@@ -80,6 +80,9 @@ $ docker version
```
安装并暴露相应的配置后该用户的环境将能独立启动属于他自己的 Docker Daemon即使由于某些未知 0-Day 漏洞使得攻击者突破了容器他们也只会受限于 `testuser` 这个非特权用户所在的有限系统环境内
> [!NOTE]
> Rootless 模式不是无条件替代 rootful Docker端口绑定网络cgroup存储驱动和系统服务自启动能力都受发行版内核与 systemd 用户服务配置影响生产环境应先验证具体工作负载并用 `loginctl enable-linger <user>` 等方式显式配置开机自启动
### 18.3.4 授权插件Authorization Plugin与访问策略
在企业环境中 Docker 守护进程的访问控制往往不仅限于文件系统权限还需要更细粒度的授权策略**Authorization Plugin** 机制允许在 API 层级对请求进行拦截和审批
@@ -110,4 +113,4 @@ $ docker version
### 18.3.5 结语
保障 Docker 服务端的安全主要是做减法关闭不必要的网络监听点严管 Socket 访问权限而一旦基础系统条件允许**毫不犹豫地在生产环境启用 Rootless 模式** 将是一项划算的安全加固选择
保障 Docker 服务端的安全主要是做减法关闭不必要的网络监听点严管 Socket 访问权限基础系统网络和存储约束都验证通过后Rootless 模式是一项值得优先评估的安全加固选择
+7 -3
View File
@@ -8,7 +8,7 @@
一个普通的 Linux 内核提供了 300 多个系统调用而一个正常运行的容器化应用例如 Nginx 服务通常只会用到几十个调用这就给攻击者留下了大量的闲置入口点来进行内核层的缓冲区溢出攻击
Docker 默认启用了 Seccomp 用预置的 [默认配置文件](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json) 将可以利用的系统调用缩减到了不足一半(默认禁用 44 个危险的系统调用,比如修改时区或重启系统)
Docker 默认启用了 Seccomp使用预置的 [默认配置文件](https://docs.docker.com/engine/security/seccomp/) 作为 allowlist:默认拒绝未显式允许的系统调用,并额外允许常见应用所需的调用。Docker 官方文档将其描述为默认禁用 44 个系统调用(内核与 Docker 版本不同会有差异),例如与内核模块、系统重启或特权命名空间操作相关的调用
如果你对应用的系统调用特征了如指掌你可以为容器定制专属规则
@@ -44,8 +44,8 @@ chmod: /etc/passwd: Operation not permitted
在开启了上述机制的机器上
- **AppArmor**: Docker 为所有启动的应用加载了一个默认的 `docker-default` 模板文件如果你的某些异常写行为比如往特殊的内核心脏目录写入配置不在 AppArmor 许可列表之上即使拥有物理 Root写入同样失败
- **SELinux**: 所有的 Docker 操作强制附加特殊上下文标识标签就算把主机的 `/` 绑定给了黑客的某服务黑客对不属于 Docker 可见的标签的文件进行读写尝试亦会被阻止
- **AppArmor**: 在启用 AppArmor 的系统上Docker 默认为容器加载 `docker-default` profile如果需要自定义策略先用 `apparmor_parser` 加载 profile再通过 `--security-opt apparmor=<profile>` 指定
- **SELinux**: 在启用 SELinux 集成的系统上容器与挂载目录需要正确的 SELinux label绑定挂载时常用 `:z` 表示多个容器共享`:Z` 表示该挂载只给单个容器使用不要对 `/home``/usr` 等系统目录随意使用 `:Z`否则可能破坏宿主机标签
如果想为某些受信任应用施加特定的外部强化文件策略可以通过如下方法指派规则表
@@ -53,6 +53,10 @@ chmod: /etc/passwd: Operation not permitted
$ docker run --rm -it \
--security-opt apparmor=custom-nginx-profile \
nginx
$ docker run --rm -it \
-v "$PWD/html":/usr/share/nginx/html:Z \
nginx
```
### 18.5.3 容器镜像漏洞静态扫描