系统与供应链安全 · kp-023

容器与云环境安全

核心 约 20 分钟 状态:reviewed #容器#云#IAM#责任共担

一句话定义

容器安全是把主机加固(最小化、非 root、裁剪能力)应用到镜像与运行时,云安全则以责任共担模型为前提:云厂商负责"云本身的安全",用户负责"云上的安全"——IAM、暴露面与密钥治理几乎全在用户一侧。

为什么重要

现代应用默认跑在容器与云上,而云上事故的主力不是"黑客攻破虚拟机",而是配置错误:公开的对象存储、过宽的 IAM 策略、暴露的管理端点。理解责任共担的边界与"配置即安全"的落地方式,是现代工程师的必修课;容器层则把 kp-022 的原则浓缩成了镜像层面的硬规则。

前置知识

kp-022(主机加固):容器是其直接延伸。 kp-021(零信任):云 IAM 是工作负载身份的载体。

核心概念

  • 责任共担:IaaS 下用户管客户机系统与数据;PaaS/托管服务下用户管配置与数据,运行时归厂商;无论如何,数据分类、访问策略与密钥永远在用户侧。
  • 容器镜像三原则:最小基础镜像(alpine/distroless 类)、非 root 用户运行、不打包密钥与构建残留。
  • 运行时收缩:只读根文件系统、裁剪 Linux capabilities(默认全部去除、按需加回)、禁用特权模式(--privileged 基本等于放弃隔离)、挂载最小化。
  • 镜像治理:仓库访问控制、镜像签名与校验、漏洞扫描(Trivy/Grype 类 SCA 扫描器)纳入 CI。
  • 云 IAM:按角色/工作负载授权而非长期 AK/SK 散落;云上最致命的三个默认值——对象存储公开读、安全组全通、管理面公网可达。
  • 密钥管理:托管 KMS 服务 + 应用经角色/短时凭证取密钥,禁止密钥进镜像与环境变量明文长存。

公式、模型或图示

text
责任共担(IaaS 示例):
 云厂商:物理设施 │ 虚拟化层 │ 网络骨干
 用  户:客户机加固 │ IAM/账号 │ 数据与加密 │ 应用配置 ← 事故主力区
容器加固前后对比:
 BAD: FROM ubuntu:latest / USER root / COPY .env . / EXPOSE 22
 GOOD: FROM distroless / USER nonroot / 密钥走 KMS / 单进程单容器

原理与机制

容器不是虚拟机:共享内核的隔离粒度更细也更脆弱,因此运行时默认值必须显式收紧(这正是 NIST 800-190 的核心建议)。云安全的杠杆点在"配置面"而非"攻防面":厂商侧的平台漏洞极其罕见,用户侧的误配置每天发生,于是防御重心变成配置的正确性与可审计性——用 IaC(基础设施即代码)声明配置、用 CSPM 类工具持续扫描偏离、用"默认拒绝"的网络基线(kp-019)兜底。工作负载身份是云原生对零信任(kp-021)的回答:让"服务"也有短时、可审计的身份(角色绑定而非静态密钥),凭证泄露面从"长期密钥文件"缩小为"几分钟有效的临时令牌"。镜像供应链(签名、扫描、最小化)则与 kp-024 的依赖治理同构:都是"把信任建立在可验证的制品上"。

实例或案例

加固后的生产 Dockerfile 模式:

text
FROM gcr.io/distroless/java17        # 最小基础镜像
COPY --chown=nonroot:nonroot app.jar /app/
USER nonroot                          # 非 root 运行
# 密钥不经镜像:运行时由角色绑定从 KMS 获取

CI 中追加镜像扫描与签名校验,部署平台只接受签名镜像——一条流水线同时覆盖了漏洞发现与制品完整性。

直观类比

责任共担像租公寓:房东(云厂商)保证楼体结构与消防合规,但你自己家的锁、密码与贵重物品(IAM、数据、配置)全归你管——报警器再好,家门大开着火的是租客。

常见误区

  • "容器=轻量虚拟机,隔离同级别":共享内核,逃逸面真实存在;运行时收紧是必需而非可选。
  • "用了大厂云就自动安全":责任共担明确划分了用户侧义务,公开存储与过宽 IAM 都是用户侧事故。
  • "开发/测试配置直接搬上生产":宽松默认(调试端点、公开读、全通安全组)随配置迁移是云事故的经典路径。

与其他知识点的关系

  • kp-022(主机加固):容器加固的原则母体。
  • kp-024(供应链):镜像签名与扫描属制品供应链治理。
  • kp-021(零信任):工作负载身份是其基础设施层实现。

自测题

  1. 责任共担模型中哪些义务永远在用户侧?要点:数据分类与加密、访问策略(IAM)、配置正确性——无论服务模型如何。
  2. 为什么 --privileged 与全量 capabilities 被视为高危?要点:等于把宿主机内核能力交给容器,隔离边界几乎消失,逃逸即宿主机失陷。
  3. 短时凭证相比长期 AK/SK 好在哪?要点:泄露窗口从"永久"缩到分钟级、可绑定工作负载身份、可审计——符合最小权限与假设失陷。

延伸阅读

《NIST SP 800-190: Application Container Security Guide》:容器安全的系统化官方指南。