3

确保Kubernetes控制平台安全的十个提示

 1 year ago
source link: https://www.51cto.com/article/751482.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

确保Kubernetes控制平台安全的十个提示

译文
作者: 李睿 2023-04-07 17:19:04
Kubernetes控制平台如今成为网络犯罪分子的诱人目标,而了解和掌握一些网络安全的提示可以帮助用户高枕无忧。

译者 | 李睿

审校 | 重楼

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

责任编辑:武晓燕 来源: 51CTO技术栈

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK