近日,美国国家安全局(NSA)和网络安全与基础设施安全署(CISA)发布了一份网络安全技术报告——《K8S加固指南》。该指南详细叙述了K8S环境中存在的威胁,并提出了可以最大化降低风险的建议。

Kubernetes(缩写为"K8S")是一个开源系统,可以自动部署、扩展和管理容器化应用,并且通常托管在云环境中。与单体软件平台相比,将容器化应用作为微服务,提高了灵活性和安全性,但面临着一些之前未曾遇到过的风险与挑战。
>> 三大入侵来源 <<
据该指南介绍,Kubernetes 中有三个常见的入侵来源:
供应链风险
缓解供应链风险往往很有难度,通常是在容器构建周期或基础设施采购中出现的。
恶意行为者
恶意行为者可以利用 Kubernetes 架构的组件中的漏洞和错误配置,如控制平面、工作节点或容器化应用。
内部威胁
内部威胁可以是管理员、用户或云服务提供商。对组织机构的 Kubernetes 基础设施有特殊访问权的内部人员可能会滥用其特权。
>> 四大加固建议 <<
对此,该指南详细叙述了加固K8S系统的建议,主要包括以下四个方面:
1. Kubernetes Pod安全
● 在使用容器时,以非 root 用户身份来运行应用
● 尽可能用不可变的文件系统运行容器
● 扫描容器镜像,发现可能存在的漏洞或错误配置
● 使用 Pod 安全策略强制执行最低水平的安全,包括:
√ 防止出现特权容器
√ 拒绝启用 hostPID、hostIPC、hostNetwork、allowedHostPath 等经常发生漏洞利用的容器功能
√ 拒绝以root用户身份或提升为root用户身份来运行容器
√ 使用SELinux®、AppArmor® 和 seccomp安全服务,加固应用程序,防止发生漏洞利用
2. 网络隔离与加固
● 使用防火墙和基于角色的访问控制(RBAC)锁定对控制平面节点的访问
● 进一步限制对 Kubernetes etcd 服务器的访问
● 配置控制平面组件,使用传输层安全(TLS)证书进行认证、加密通信
● 设置网络策略来隔离资源。除非执行其他隔离措施(如网络策略),否则不同命名空间的 Pod 和服务仍然可以相互通信
● 将所有凭证和敏感信息放在 Kubernetes Secrets 中,而不是放在配置文件中,并用增强式的加密方法对 Secrets 进行加密
3. 认证与授权
● 禁用匿名登录(默认启用)
● 使用增强式用户认证
● 制定 RBAC 策略,限制管理员、用户和服务账户活动
4. 日志审计
● 启用审计记录(默认为禁用)
● 在出现节点、Pod或容器级故障的情况下,持续保存日志以确保可用性
● 配置一个 metric logger
此外,为了确保应用的安全,系统管理员还应该按照该指南谨慎行事,及时打补丁、进行更新和升级,降低风险。NSA和CISA还建议定期对K8S设置进行审查并进行漏洞扫描,确保考虑到了所有相关风险并及时应用了安全补丁。