揭秘K8s安全:实用指南与最佳实践

攻防
1年前

20231107090047.png

  信息技术不断发展,云原生应用以变革力量之姿强势崛起。凭借无可匹敌的可扩展性和灵活的开发与部署能力,向云端迁移已成为各行各业大大小小企业的合理发展方向。然而,上云的最初几步往往照搬现有基础设施,依赖“直接迁移”(lift and shift),对执行工作负载而言,既不划算也不高效。

  为解决这个问题,Kubernetes之类的技术应运而生,拉开了云基础设施管理新时代。持久系统让位于临时容器,“是牲畜而非宠物”(cattle, not pets)的箴言亦成为DevOps从业人员的准则。服务器不再是使用期限很长的手工定制系统,正转向基于工作负载需求的动态配置和自动扩展。管理亦逐渐偏向所提供资源的抽象层。

  然而,尽管出现了这些技术进步,新云原生环境的安全从业人员通常还是固守传统方式。正如“直接迁移”经验证不足以支撑云迁移,传统安全实践也被证明不适合保护这些现代应用部署方法。

  那么,为什么Kubernetes安全如此复杂?每当资源被抽象出来,方便某个团队进行管理,就会给另一个团队带来新的挑战。从物理服务器到虚拟机,随后再到容器,需要考虑多个层次上的安全,比如服务到服务通信、集群范围的控制等等。

  在这些不同层次上管理安全可不是什么能够轻松搞定的任务。其中涉及到身份验证、授权、秘密与安全证书管理、流量控制与保护,以及异常监测,而且所有这些都要同时确保符合政府、行业和客户的审计要求。传统安全实践依然重要,比如软件修复、实施最小权限访问,以及保护边界免遭未授权访问。

  考虑到潜在威胁的复杂性和多样性,很多企业采用了名为“深度防御”的策略,也就是实现多层安全,从而拖慢攻击者的脚步,并在事件发生时限制所造成的破坏。此外,企业还能以“零信任安全”概念作为补充,即摒弃信任假设,要求所有通信都需要经过验证。

  但是,实施深度防御可能费钱又耗时,往往涉及可能无法有效通信的不同工具。留有可遭攻击者利用的缺口确实是令人担心的风险。

  老旧解决方案虽然品质不低,但确实为应对已知或感知到的威胁而开发的。这些解决方案很善于保护虚拟机和网络边界之类传统结构,但不具备保护现代联合微分隔云原生应用的能力。当前的安全工具往往无法有效共享信息,有碍深度防御策略的整体性。

  为简化Kubernetes安全,企业可以采用如下最佳实践:

  1、定期扫描容器镜像,查找其中漏洞。
  2、避免用root权限执行进程或赋予过多权限。
  3、实施最小特权访问原则。
  4、保护pod到pod和服务到服务通信。
  5、采纳零信任安全,应用相互传输层安全(mTLS)。
  6、制定稳健的秘密管理策略。
  7、以策略的形式应用安全,从而适应不断变化的需求。
  8、重视可观测性而非仅仅是各项指标。


  Kubernetes安全的另一个重要方面是控制应用的流量出入口。恶意或故障上游应用可能令网络不堪重负,因而需要采用企业级API网关进行速率限制、身份验证、授权并实现高级网络安全。

  总之,保护Kubernetes应用安全是一项充满挑战的任务,但也并非无法攻克。采用多层安全方法,搭配零信任思维,再辅以能在动态环境中提供最高可见性和控制的现代安全解决方案,是成功守护云原生应用安全的关键。

* 本文为nana编译,原文地址:https://www.solo.io/blog/kubernetes-security-cloud-native-applications/
注:图片均来源于网络,无法联系到版权持有者。如有侵权,请与后台联系,做删除处理。

— 【 THE END 】—