扫描 Kubernetes 控制平面和工作节点的安全漏洞
安全领导者和工程师已经从使用“技能短缺”一词变为现在的“长期技能短缺”。 原因是安全技能差距处于历史最低水平。 如果你想想一家公司有多少开发人员与同一家公司有多少安全工程师,这个数字是截然不同的。也就是说,如果公司有任何安全工程师。 因此,拥有扫描 Kubernetes 集群漏洞的知识和工具很可能根本不会发生,或者至少不会以合适的频率发生。 在这篇博文中,您将了解如何使用 Kubescape 的集
安全领导者和工程师已经从使用“技能短缺”一词变为现在的“长期技能短缺”。
原因是安全技能差距处于历史最低水平。
如果你想想一家公司有多少开发人员与同一家公司有多少安全工程师,这个数字是截然不同的。也就是说,如果公司有任何安全工程师。
因此,拥有扫描 Kubernetes 集群漏洞的知识和工具很可能根本不会发生,或者至少不会以合适的频率发生。
在这篇博文中,您将了解如何使用 Kubescape 的集群扫描来简化此过程,即使您没有广泛的安全背景。
出于本博文的目的,将使用 Kubescape 云。 Kubescape CLI 是一个不错的选择,但它的 UI 确实给人一种更健壮的感觉,并且从视觉角度让您的生活更轻松。如果你想注册它,你可以在这里注册。
先决条件
如果您正在关注这篇博文的实践部分,您将需要:
-
Kubescape CLI,您可以在此处找到。
-
一个 Kubernetes 集群。 Minikube 可以像任何其他集群一样正常工作。
为什么要进行集群扫描
当您考虑 Kubernetes 集群时,有很多部分可以使它工作。在控制平面内,您拥有 ETCD、调度程序、API 服务器和控制器管理器。在工作节点中,每个 Pod 都在运行,包括 kube-proxy、DNS、容器运行时和 Kubelet。
上面的列表是最高级别的解释,它听起来仍然非常复杂,难以管理。它本身就是一个完整的数据中心。
正因为如此,你必须想象大约有一百万件事情会出错。
让我们举一个网络示例。假设您创建了一个 Kubernetes 集群并且运行控制平面的服务器具有公共 IP 地址,或者您在云中创建了一个 Kubernetes 集群并且该集群具有公共 IP 地址。马上,通过按钮单击更改这样简单的操作,您现在拥有一个整个集群,任何人都可以继续尝试破坏它。如果您没有设置正确的 RBAC(很多组织都没有),或者您没有检查 API 服务器指标端点的日志以查看传入的请求率数量,那么您可能违反了你的手。
您将扫描两种类型的集群:
-
本地/原始 Kubernetes 集群。
-
云中的 Kubernetes 服务,例如 AKS、GKE、EKS 或 OpenShift。
无论您选择什么选项,您仍然需要扫描集群。
如果你自己想_好吧,Kubernetes 服务是由云供应商管理的,所以我不必做扫描_,你需要重新评估云中的 Kubernetes 服务为你做了什么。它们并没有最大限度地减少 Kubernetes 集群内部的漏洞。他们只是为您托管 Kubernetes 集群。所有可能发生的安全隐患仍然需要您 100% 尽可能地减轻。
集群安全措施前五名
在上一节中,您了解了为什么要扫描集群,原因是它本身就是一个完整的环境/数据中心,并且具有与任何其他环境相同类型的漏洞。
在本节中,我们将讨论您可以为 Kubernetes 集群采取的前五项安全措施。
首先,确保控制平面没有与之关联的公共 IP 地址。这导致能够通过网络搜索集群。在最近的一份报告中,超过 900,000 个 Kubernetes 集群被发现暴露在互联网上。
第二,RBAC。 RBAC 可以说是 Kubernetes 集群中最受关注的配置。如果没有适当的 RBAC 权限,您的集群实际上是完全开放的。当您为向 Kubernetes 进行身份验证的用户设计 RBAC 时,请确保他们获得所需的权限和授权,仅此而已。当您运行 CRD 以在 Kubernetes 集群中安装 Operator 时,请特别注意这一点。有很多平台在安装 CRD 时,会为其平台配置服务帐户和 RBAC 权限,10 次中有 9 次提供完全的管理员/root 访问权限。
三是政策设置。想一想 Kubernetes 集群中任何事物的守门人之类的策略。可能是谁有权访问哪个 Kubernetes 命名空间,任何人都不允许部署一个 Kubernetes Manifest,其中latest
通过容器映像标记。开放策略代理 (OPA) 是许多工程师正在采用的标准,还有 Kyverno,它类似于 OPA,但专门针对 Kubernetes。
第四,伐木。设置日志聚合器来收集日志很容易。那么问题就变成了——你如何处理这些日志?来自 Kubernetes 中度量端点的日志实际上是您了解环境内部问题的黄金门票。确保您不仅保存日志,而且使用某种类型的应用程序性能管理 (APM) 平台对日志采取措施。
五、集群扫描。想想你在这篇博文中以及在 Kubernetes 领域的整个旅程中学到的一切,有一种方法可以尽可能地缓解这些问题。做到这一点的方法是拥有一个适当的集群扫描工具,您可以使用它来告诉您集群何时易受攻击。否则,你永远不会知道,这将是一场不断的猜谜游戏。
Kubescape 配置扫描入门
现在您了解了扫描整个集群的重要性,是时候进入动手部分并学习如何设置集群扫描了。
配置扫描的许多很酷的事情之一是您可以扫描任何集群,甚至是 Minikube!出于本文的目的,使用了 Minikube,但您可以对任何 Kubernetes 集群执行相同的操作。
首先,登录 Kubescape UI,在仪表板下,你会看到一个添加集群扫描的选项。单击 添加集群扫描 按钮。
接下来,您有两个选项可供选择来部署集群扫描:
-
In Cluster Deployment,这是您在集群内部部署的 Helm Chart。
-
使用 Kubescape CLI,您可以在本地使用它,甚至可以通过 CICD 管道以自动化方式使用它。
出于本博文的目的,使用了 Helm Chart。但是,您选择的任何选项都将存在相同的结果/结果。
下面的代码:
-
通过 Helm 添加 ARMO 存储库
-
更新仓库
-
在 Kubernetes 集群的
armo-system
命名空间内安装 ARMO
运行下面的代码来部署In Cluster Deployment。
# Add the Helm repo
helm repo add armo https://armosec.github.io/armo-helm/
# Update the helm repo
helm repo update
# Install ARMO on the k8s cluster
helm upgrade --install armo armo/armo-cluster-components -n armo-system --create-namespace --set accountGuid=7bcb8621-517d-4416-9a72-234cf9b5d90c --set clusterName=`kubectl config current-context`
进入全屏模式 退出全屏模式
运行上面的代码后,登录到您的 Kubescape UI。您现在应该会看到您的集群列在 DASHBOARD 页面上。
现在集群已存在,单击左侧窗格中的 CONFIGURATION SCANNING,然后单击 AllControls。
单击 AllControls 后,您将看到几条输出,其中包含从通过的测试到失败的测试再到标记为不相关的测试的所有内容。下面的屏幕截图是一个示例,但请注意,当您扫描自己的 Kubernetes 集群时,您的输出可能看起来不同。
深入了解实际控件,单击 ArmoBest。
如您所见,从集群网络故障到 Kubernetes Secret 故障和 ETCD 故障有几条输出。
生产中的此类漏洞可能是好日子和坏日子之间的成败。例如,C-0012 声明任何有权访问配置文件的攻击者都可以窃取存储在 Kubernetes 内部的机密,这些机密可能是您整个环境的密码和连接字符串。
恭喜!您已正式设置 Kubescape 配置扫描程序,并准备开始修复 Kubernetes 集群内的任何问题。
更多推荐
所有评论(0)