确保Kubernetes在大规模环境下安全的3个要点

确保Kubernetes在大规模环境下安全的3个要点

但采用范围扩大后带来了安全隐患,2019年爆出的一系列安全漏洞就是佐证。第一个漏洞发现于2018年底,该权限提升漏洞使任何用户都可以通过Kubernetes应用编程接口服务器与后端服务器建立连接。

Platform9的产品营销负责人Kamesh Pemmaraju说,使用的集群和节点的数量在增加;一些受访者告诉Platform9,他们公司在一两个集群上运行数百个节点。许多公司在本地和公共云基础设施上都运行Kubernetes。

NeuVector的首席技术官Gary Duan和Platform9的联合创始人兼首席技术官Roopak Parikh谈到了大规模利用Kubernetes安全功能的三种方法。

Duan说:“Kubernetes有一些基本的安全功能,主要针对其自身基础架构的安全,这包括基于角色的访问控制(RBAC)、秘密管理以及pod安全策略(更侧重于资源管理)。”

“然而,Kubernetes不应部署在关键业务环境中,也不能为没有专用容器安全工具的情况下管理敏感数据的应用程序而部署。Kubernetes系统的容器本身(比如关键的API服务器)可能存在漏洞,使攻击者能够危及编排基础架构本身。”

1. 基于角色的访问控制

生产级应用软件比去年多得多,部署在Kubernetes上的数据或其他应用程序也多得多。公司应将Kubernetes视为复杂的分布式系统,由多个组件组成,部署到生产环境后需要对每层加以保护。

在应用程序层,强烈建议实施网络策略,并将Kubernetes集群连接到企业内部的验证提供者。你往往可以保护所有系统的安全,但保护密钥也很重要,并使用多因子验证和证书,确保别人无法通过那些很容易的途径潜入。

Kubernetes操作人员应确保用户有正确的角色,并将用户分配到不同的空间,以便特定用户与特定应用关联起来。系统部署和升级时,那些角色还具有可扩展性。

集群中的每个应用程序应隔离或分隔,以便负责人可以决定哪些用户能看到系统的不同部分。

分层安全方法最适合深度防御。应该部署云原生安全工具以保护从CI/CD管道到运行时环境的整个生命周期,因为传统的安全工具在Kubernetes环境中不管用。

这始于构建过程中的漏洞扫描,然后持续进入到生产环节。若没有深度网络可见性和保护,比如第7层容器防火墙,就无法实现真正的深度防御。这种关注容器的防火墙能够使用容器微分段技术检测和防止基于网络的攻击、探测、扫描、分流以及容器之间的横向移动。公司扩大部署规模后,面临管理和保护数十个乃至数百个Kubernetes集群(一些横跨公共云和私有云)的管理难题。

采用集中执行的联合全局安全策略的全局多集群管理成了一个关键问题。

在Kubernetes之上添加Istio或Linkerd之类的服务网格还可以通过加密pod到pod通信来提高安全性。服务网格还有DevOps团队喜欢的其他好处。但这为基础架构带来了额外的攻击途径,必须确保安全。

2. 不安全的代码检查

监控代码对于大规模确保Kubernetes的安全至关重要。如果贵公司在运行第三方应用程序甚至内部应用程序,如何知道其中的代码是否安全?系统操作员应问自己在运行哪个版本、存在哪种类型的安全漏洞。

需要进行扫描,以查明是否存在不安全的代码,或者是否在使用旧版本的Python库。外头一些工具可以帮助你找到那些细节,并出具报告。你可以在此基础上拒绝或允许运行那些应用程序。

许多公司能够将安全策略声明为代码,所部署的新服务的应用程序行为记录在标准的yaml文件中,由Kubernetes直接部署为自定义资源定义。安全团队还要确保所有补丁都是最新的。

对于你在运行的服务器和操作系统,要确保已打上补丁,不存在与操作系统本身有关的任何漏洞。你可以使用App Armor等技术,或者确保为在Kubernetes内外运行的组件赋予最低权限。

3. 检查敞开的端口

这点很重要:在整条管道中明确定义应自动确保安全的所有集成点,然后为完整的安全自动化制定路线图。最初,几个步骤可以自动化,比如触发漏洞扫描、就可疑网络活动发出警报。

安全团队需要保护可以使用负载均衡器连接至外界的应用程序,或可能在你的Kubernetes集群上打开的端口。团队需要检查它们配置是否正确、是否敞开端口。

对于面向外界的API服务器而言,这尤为重要。

有人发现某个系统被其他公司暴露在互联网面前,我们在日志中会看到一些人试图探测服务器,以查明那些端口是不是打开的。Kubernetes本身有一个API服务器,过去我们见过敞开的端口。

相关推荐