译者 | 李睿
审校 | 重楼
51CTO读者成长计划社群招募,咨询小助手(微信号:TTalkxiaozhuli)
在调研机构最近发布的一份调查报告中,94%的受访者表示经历过与Kubernetes相关的安全事件。错误配置是最常见的Kubernetes漏洞,70%的受访者表示存在这一漏洞。那么,对于网络犯罪分子具有吸引力的目标是什么?Kubernetes控制平台。
企业的团队必须加强节点、主节点、核心组件、API和面向公众的pod的边界安全。否则,它们无法保护集群免受现有和潜在漏洞的侵害。以下是可以帮助企业保护Kubernetes控制平台的10个最佳实践,并将加快部署过程。
一、保护Kubernetes控制平台的10个提示
1.使用Kubernetes基于角色的访问控制(RBAC)
利用基于角色的访问控制(RBAC)设置可以访问Kubernetes API的用户权限。用户会发现在Kubernetes 1.6及更高版本中默认启用了RBAC。由于Kubernetes汇集了授权控制器,因此在启用RBAC时可以禁用以往的基于属性的访问控制(ABAC)。
在设置权限时,选择特定于命名空间的权限而不是集群范围的权限。即使企业的团队成员忙于调试,也不要给任何人提供集群管理员的权限。否则,集群的安全性可能会受到影响。
2.实施隔离
不要将Kubernetes节点直接暴露给公共网络。与其相反,节点的最佳位置是与企业网络没有直接连接的独立网络。
另一个重要的隔离最佳实践是分离Kubernetes控制和数据流量。用户希望它们通过同一管道,因为对数据平台的开放访问将导致对控制平台的开放访问。
3.避免将对象部署到默认命名空间
在Kubernetes中,命名空间提供了一种隔离集群内资源组的机制。因此,对于许多用户分布在多个团队或项目中的环境,它们都是很好的用例。
所有没有指定名称空间的对象最终都会使用默认名称空间。这使得在最关键的工作负载附近部署恶意容器更加容易。因此,建议为部署中的对象创建命名空间。
4.避免使用禁止的类型
避免使用被禁止的类型,例如NodePort或LoadBalancer。与其相反,应该通过ClusterIP公开服务。通过这种方式,可以避免某些恶意行为者发现集群基础设施组件。
5.加密机密数据
在Kubernetes的基本实现中,人们是否知道机密数据在默认情况下是不加密的?但是,如果用户使用Kubernetes管理的服务(如GKE),机密数据将在静止时加密。
为什么加密机密数据很重要?任何拦截键值存储的人都可以访问集群中的所有内容。这包括所有纯文本的集群机密数据。因此,加密集群状态存储是保护集群免受静态数据泄露的最佳方式。
6.安全访问Etcd
对Etcd的访问等同于根权限。这就是为什么它是一个关键的控制平台组件的原因,也是控制平台内最重要的安全部件。
确保与Etcd的通信是加密的,并且客户端使用基于证书的身份验证。为了限制攻击面,在理想情况下,只有API服务器有权访问Etcd。
7.不要在容器中挂载容器运行时套接字
为什么要关心部署是否在容器中安装了容器运行时(CRI)套接字?docker.sock、container.sock和crio.sock增加了网络攻击者获得主机和相应容器运行时的根访问权限的机会。要避免这种情况,需要删除/var/run/<CRI>.sock hostPath volume。
8.在没有只读根文件系统的情况下运行容器?三思而后行
容器是否在没有只读根文件系统的情况下运行?使用只读文件系统可防止恶意二进制文件写入系统或系统接管。通过在Pod securityContext定义中将readOnlyRootFilesystem设置为true,可以确保容器仅使用只读文件系统。
9.确保安全然后访问Kubernetes控制平台
要获得额外的安全功能层,例如多因素身份验证,可以获得第三方身份验证提供商的帮助。为了完全保护Kubernetes控制平台访问,避免在API服务器级别管理用户。与其相反,使用云计算提供商提供的解决方案,例如AWS身份和访问管理(IAM)。如果无法获得云计算供应商IAM,可以选择OpenID Connect(OIDC)以及熟悉的单点登录(SSO)提供商。
10.创建滚动更新策略
为了确保EKS安全,需要制定滚动更新策略。而滚动更新允许部署更新,并最小化应用程序停机时间,这要归功于增量pod更新。
另一点是在运行时运行漏洞扫描。用户的集群面临供应链攻击的风险。要处理它们,需要了解真正进入集群的是什么,即使用户在持续集成(CI)/持续交付(CD)期间扫描了所有部署构件。基于代理的安全解决方案在这里运行得很好,甚至比“无代理”还更好。
二、使用工具实现Kubernetes控制点安全
随着Kubernetes生态系统的发展,其安全问题也在不断发展。不幸的是,跟上它们的变化是很耗时的,一旦漏洞累积起来,企业的安全人员就不得不同时对许多项目进行优先级排序。
Kubernetes安全工具根据行业最佳实践、Kubernetes建议和CIS Kubernetes基准检查集群,然后自动对它们进行优先级排序,以便使用户从一开始就处于正确的轨道上。
用户可以根据配置和安全最佳实践扫描Kubernetes集群,并了解如何优化安全。
文章链接:https://dzone.com/articles/kubernetes-control-plane-10-tips-for-airtight-k8s