← 中文资源

简体中文版本

Kubernetes 安全基线落地工作流

为工作负载采纳加固基线,用准入策略强制执行,审计例外须带过期豁免。

阅读英文原文

目标

在代码评审里查加固清单,只能拦住疲惫评审者恰好注意到的那些违规;把同一基线编成准入策略,所有违规在 apply 时被机器拦下。先审计模式摸清存量、按暴露度烧掉欠账、再对确实需要例外的 workload 登记带过期的豁免——基线才真正落地而不是躺在文档里。

步骤要点

  1. 写下基线:选定标准后翻译成具体规则——禁特权、禁 host 命名空间、runAsNonRoot、seccomp、丢弃全部能力、必设资源限额。
  2. 审计现状:扫描全部运行中的工作负载按暴露度排序(公网优先),产出整改欠账清单。
  3. 对新增强制准入:先部署策略引擎审计模式,再对新部署启用强制,违规清单在 apply 时被指名拒绝。
  4. 按暴露度消化欠账:用与策略相同的规则名修复存量违规,保证可追溯,公网侧先清零。
  5. 豁免带过期登记例外:确需例外的(如 ingress 的 hostNetwork)登记 owner、理由与到期日,按月审计。

排错提示

一开强制就把发布全堵死是没先跑审计模式,先摸清违规面再切换;豁免清单只增不减说明到期日没被执行,过期豁免应自动转为违规上报;公网工作负载还留着特权容器是烧账顺序错了,暴露度必须先于方便度。

适用边界

准入策略只管新进入与显式更新,已运行负载要靠重建或滚动更新才受检,需配套定期重扫;部分规则(如只读根文件系统)对有状态副作用的应用需要改造配合,豁免要给出改造时间表。

代码示例

baseline (PSA restricted + house rules):
  no privileged, no hostNetwork/hostPID
  runAsNonRoot, seccomp: RuntimeDefault
  capabilities: drop ALL, allowlist per workload
  resources: limits required
  readOnlyRootFilesystem: true (waiver-able)

admission: enforce on new deploys, audit on old
  apply privileged pod -> REJECTED
  "violates baseline: privileged=true (rule B2)"

backlog: 47 violations (12 internet-facing)
  burn-down: internet-facing zero by week 2
waivers: 3 registered (ingress hostNetwork,
  owner: net-team, expires 2027-01, reviewed monthly)