目标
在代码评审里查加固清单,只能拦住疲惫评审者恰好注意到的那些违规;把同一基线编成准入策略,所有违规在 apply 时被机器拦下。先审计模式摸清存量、按暴露度烧掉欠账、再对确实需要例外的 workload 登记带过期的豁免——基线才真正落地而不是躺在文档里。
步骤要点
- 写下基线:选定标准后翻译成具体规则——禁特权、禁 host 命名空间、runAsNonRoot、seccomp、丢弃全部能力、必设资源限额。
- 审计现状:扫描全部运行中的工作负载按暴露度排序(公网优先),产出整改欠账清单。
- 对新增强制准入:先部署策略引擎审计模式,再对新部署启用强制,违规清单在 apply 时被指名拒绝。
- 按暴露度消化欠账:用与策略相同的规则名修复存量违规,保证可追溯,公网侧先清零。
- 豁免带过期登记例外:确需例外的(如 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)