哪些实践最为重要?
从可信的精简基础镜像入手
使用维护良好的基础镜像,其中仅包含应用程序所需的包、库和实用工具。这可以缩小攻击面,并使补丁安装更加容易。
部署前扫描镜像和依赖项
扫描应在工件进入流水线后续阶段之前,检测出已知漏洞、暴露的机密信息和明显的错误配置。这并不涵盖容器安全的全部内容,但仍是最切实可行的控制措施之一,可在早期降低本可避免的风险。
应将 Kubernetes 清单和基础设施即代码 (IaC) 视为安全关键型资产。
工作负载定义(例如 Kubernetes、Pod、权限)、Helm Chart(打包的 Kubernetes 配置)、Terraform(基础设施预置,例如云资源、网络)以及其他部署工件(用于启动系统的任何配置),均可能早在运行时之前就引入权限、网络及暴露方面的问题。
在集群中强制实施最小权限原则
应针对用户、服务账号和工作负载谨慎设计 Kubernetes RBAC。过度的访问权限会增加滥用和权限提升的风险。
采用准入控制与策略执行机制
——安全规则在部署阶段自动强制执行,才能发挥最大效能。准入控制可以在有风险的资源获准进入集群之前将其阻止,而策略引擎则有助于统一各团队和环境的要求。
实施网络分段,缩小影响范围
网络策略应体现应用程序的实际通信方式,同时限制不必要的东西向移动。
监控运行时行为
构建时扫描无法发现所有运行时问题。团队仍需掌握运行中容器内的进程行为、连接、资源消耗、策略漂移和可疑活动。因此,运行时监控不应局限于镜像状态,还应涵盖正在运行的应用程序、编排器活动以及容器之间的通信。
保留充足的日志以支撑调查
——容器与 Kubernetes 环境在多个层级产生日志数据,这些遥测信息对威胁检测及事后调查至关重要。
DevSecOps 团队应如何应用这些控制措施,同时又不降低交付速度?
最有效的方法是在合适的阶段实施合适的控制措施。
在构建阶段,应重点关注镜像安全、依赖项扫描、机密信息检测和软件来源追溯。
在部署阶段,应重点关注清单验证、策略强制执行和准入控制。
在运行阶段,应重点关注行为监控、告警、漂移检测和调查就绪能力。
分阶段实施非常重要,因为并非所有问题都应由同一道门禁处理。有些检查应阻止部署,而另一些检查则应触发审查、修复或运行时监控。成熟的团队会将必须修复的违规问题与风险较低的问题区分开来,确保安全措施可以强制执行,同时又不会成为瓶颈。如果团队对镜像和基础设施代码设置质量门禁,再结合运行时检查以及贯穿整个生命周期的合规控制,分阶段实施的效果最佳。
日常运维中的良好实践是什么样的?
在管理良好的环境中,容器安全并非发布周期末尾才单独开展的一项事件,而是软件构建和交付方式的一部分。开发人员清楚哪些基础镜像已获批准,CI 流水线会自动执行检查,平台团队会明确定义集群防护规则,而安全团队会审查趋势、异常和反复出现的薄弱环节,而不是仅依赖一次性审查。
这种运维节奏非常重要,因为只有控制措施具有可预期性,DevSecOps 才能取得成功。如果安全要求已嵌入工具和工作流,而不是到了后期才作为反对意见提出,团队就更有可能接受这些要求。
团队应定期审查哪些内容?
良好的容器安全方案需要持续维护,而不是一经推出便置之不理。团队应定期审查:
- 哪些镜像已获批准且仍在使用
- 旧漏洞是否被带入新的构建版本
- 策略异常是否随时间推移而增加
- 服务帐户和角色是否仍被授予过高权限
- 网络策略是否仍符合工作负载的实际通信方式
- 运行时警报能否促成有价值的调查,还是只会产生干扰
- 日志记录是否足以支持事件响应和事件后审查。
这些审查要点有助于防止控制措施偏移;如果不进行这些审查,即使合理的安全策略也可能过时或无法得到一致执行。
组织容易在哪些方面出错
一个常见错误是将安全工作过度左移,并认为运行时安全已不再重要。左移固然重要,但容器环境具有动态特性,运行时可见性仍然是检测可疑行为、权限滥用及部署后才会暴露的控制失效问题的关键。
另一个错误是将安全策略视为外部审查步骤,而不是将其融入交付流程。如果开发人员直到流程结束时才得知违规情况,修复过程就会更缓慢,也更容易引发对立。
第三个错误是试图保护容器,却不保护其所在的平台。DevSecOps 团队可以提高镜像质量,但集群级访问控制、准入策略、日志记录和网络分段仍然需要平台团队与安全团队密切配合。
实用的 DevSecOps 检查清单应包含哪些内容?
一份切实可行的检查清单通常包括:
- 经过批准的基础镜像和镜像来源
- 在持续集成 (CI) 中扫描镜像和依赖项
- 在合并或构建前检测机密信息
- 针对安全设置审查清单和基础设施即代码 (IaC)
- 遵循最小权限原则的 RBAC 和服务帐户设计
- 用于实施部署防护的准入控制
- 用于隔离工作负载的网络策略
- 监控容器和集群活动的运行时监控机制
- 集中式日志记录和调查准备工作
- 定期审查策略、异常情况和过时的规则。
要点总结
DevSecOps 团队的容器安全最佳实践在于采用一种交付模式:确保输入内容安全、实施部署防护、监控运行时行为,并保持紧密的反馈循环,使工程团队能够在问题演变为生产环境风险之前加以解决。
将容器安全纳入 DevSecOps 流水线
有效践行 DevSecOps 有赖于融入软件开发流程的安全控制措施。卡巴斯基容器安全可帮助团队检查容器镜像、检测运行中容器的漏洞、监控资源消耗和通信情况,以及自动执行安全与合规性检查。
参考资料和延伸阅读:
