当企业创建或使用云上应用系统时,大多都需要使用Kubernetes。据云原生计算基金会(CNCF) 最近的一份报告显示,Kubernetes在全球已拥有近600万个企业用户,成为云上应用程序主要的部署模式。
随着Kubernetes平台上的敏感数据越来越多,其被攻击的风险就越大。要实现Kubernetes平台的完整安全措施需要一个系统化的建设过程,但研究人员发现,在Kubernetes应用产生的安全问题中,超过9成都是由于非常基础的原因所引发,本来是可以被避免的。本文梳理总结了Kubernetes应用中的七个最常见基础性安全错误。
1、默认配置未修改
研究人员发现,许多组织都在使用默认的集群配置,并且未引起重视,这是个非常严重的错误。尽管Kubernetes的默认设置为开发人员赋予了较大的灵活性和敏捷性,但是却没有考虑安全防护层面的需求。默认配置在面对非法攻击时会变得非常脆弱。为了保护Kubernetes上应用数据的安全,企业必须确保对集群配置的合理性和安全性,以获得更充分的安全防护能力。
2、管理员权限混乱
为了应用方便,很多组织的开发人员可以轻易的使用CLUSTER_ADMIN(集群管理员)之类特权账号对集群执行日常操作,这种方式显然是错误的。特权账号应该仅用于管理其他角色和用户,当多个开发者都可以拥有CLUSTER_ADMIN级别的访问权限时,也意味着黑客可以更加轻松的获得访问权限,他们可以通过这些高级账户非法进入Kubernetes上的系统,进而全面访问整个集群中的数据资源。
3、过度的访问授权
并非每个开发人员都需要全面访问所有资源才能完成其工作,但实际上,许多企业的管理员却没有对开发人员访问dev/stage/prod集群的权限类型予以适度的管理和限制。允许开发人员不受限制地访问资源是一种非常糟糕的做法。与设有多个管理员相似,这个错误很容易就会被黑客探测并利用,他们可以使用这种不受限制的访问权限在贵组织的系统中横向移动,并且大量的窃取或破坏资源。
4、未有效的实现应用隔离
隔离是Kubernetes平台的一种天然属性,可以通过命名空间来实现对象隔离。但是许多企业组织想当然地以为集群网络与云虚拟专用网(VPC)都会被有效的进行隔离,但事实并不是这样。企业在Kubernetes应用中,不能忽视保护集群网络中的应用系统,并对重要业务系统及数据实现隔离防护。
5、未检测导入YAML的安全隐患
Kubernetes可以支持YAML和JSON格式创建资源对象,JSON格式用于接口之间消息的传递,适用于开发;YAML格式用于配置和管理,适用于云平台管理。YAML是一种简洁的非标记性语言,导入公共YAML尽管可以避免重复性工作,节省时间,但也同样会将错误配置引入到企业环境中。因此企业在引入公共YAML时,需要充分检测并评估其带来的安全影响,并确保可以解决配置过程中可能存在的安全性问题。
6、将机密数据存储在ConfigMap中
机密数据主要包括密码、令牌或密钥之类的敏感数据。由于疏忽或者使用的方便,开发人员经常会将一些机密信息存储在ConfigMap中,从而增加了这些敏感数据的暴露风险。ConfigMap是一种API对象,通常只用来保存非机密性数据,它可以让用户将针对特定环境的配置与容器镜像分离,以便应用程序易于移植。但是由于缺乏保护,黑客同样有机会访问ConfigMap,因此也能够访问保存在其中相关资源。
7、没有定期开展安全扫描
在软件开发生命周期(SDLC)和持续集成/持续交付(CI/CD)管道的早期阶段执行定期扫描,以查找错误配置和漏洞,这有助于杜绝这些问题进入到生产环境的可能性。但现实中,许多组织都没有这样的安全计划或缺少行动。从攻击成本角度看,黑客通常会寻找最省事的攻击目标。因此,企业首先要确保自己不是保护最乏力的组织,这样就可以减少成为被攻击目标的可能性。开展日常性的安全漏洞检查并且有效落实,正是一种快速提升安全能力的有效途径。