在一篇文章中了解基于 Kube-Bench 评估 Kubernetes 安全性

发布于:2024-10-24 编辑:匿名 来源:网络

大家好,我是 Luga,今天我们将介绍另一款开源容器平台安全扫描工具 - Kube-bench。作为 Aqua Security 优秀的开源产品,它可以分析 Kubernetes Cluster 的运行行为,并根据互联网安全中心指南进行安全评估。

???? 随着企业云原生技术和生态理念的普及,Kubernetes实际上已经成为容器编排的首选工具。无论如何强调都不为过。

基于它,部署和管理应用程序变得前所未有的简单。尽管新技术的引入带来了各种好处,但 Kubernetes Cluster 的安全性始终是云原生生态中难以逾越的鸿沟。

攻击者可能会想方设法地寻找各种潜在的漏洞,并利用新的方法侵入系统,对整个系统进行破坏性的“构建”。 为了提高 Kubernetes Cluster 的安全性,在实际业务场景中,我们常常需要了解 W&H(即“它是什么”和“它是如何工作的”)。

为此,需要对Kubernetes集群进行全面细致的分析,包括存储Kubernetes组件配置的文件系统、集成的插件、运行环境等相关要素。 NSA、MITRE、CIS 等机构发布基准并持续升级,以维护 Kubernetes 集群的安全。

然而,这些基准测试涵盖了太多细节,使得手动检查非常繁琐。 在探索如何对 Kubernetes 集群进行漏洞安全评估扫描时,目前市场上有两个流行的工具值得推荐:Kube-bench 和 Kubescape。

在之前的博文中,我们讨论了 Kubescape 开源产品并深入描述了它们:它们是做什么的、它们是如何工作的、它们使用哪些框架、何时以及为何使用它们,以及它们如何相互补充。 Kube-bench 概述 作为一款基于开源 Go 开发的应用程序,Kube-bench 主要用于检查 Kubernetes 集群是否按照安全最佳实践部署。

它实现了 CIS Kubernetes 基准,这是由互联网安全中心开发的用于以安全方式运行 Kubernetes 的指导文档。Kube-bench 可以针对自我管理的 Kubernetes 集群以及由 AWS、Azure、GKE 集群等流行云提供商管理的 Kubernetes 集群执行。

此外,Kube-bench 还提供 JSON 格式的扫描输出,因此如果您想要根据集群扫描结果制作报告或创建警报,您可以基于此创建脚本并自定义相关策略。工作原理 一般来说,Kube-bench 是一种在 Kubernetes 集群上无法一致运行的工具。

相反,我们可以使用一个简单的命令在所有节点上运行,然后根据不同的部分进行检测,输出修复报告和建议。具体如下: 1. 主节点安全配置 2. etcd 节点配置 3. 控制平面配置 4. 工作节点安全配置 5. Kubernetes 策略根据不同环境执行自己的检测行为,然后响应失败或警告检测输出补救措施及其摘要(通过/失败/警告/信息检查的计数)。

最后,发布总体摘要。 事实上,Kube-bench的工作原理无论是基于源码角度还是其执行和实现检测角度都比较简单。

基本上都是围绕着“执行引擎”->“检测扫描”->“推荐输出”的流程。??????如下基于不同环境的检测示例:??语言代码:javascript复制[INFO] 1 主节点安全配置[INFO] 1.1 主节点配置文件[FAIL] 1.1.1 确保API server pod规范文件权限设置为或更多限制(自动)[失败] 1.1.2 确保 API 服务器 pod 规范文件所有权设置为 root:root(自动)[失败] 1.1.3 确保控制器管理器 pod 规范文件权限设置为或更多限制性(自动)[失败] 1.1.4 确保控制器管理器 pod 规范文件所有权设置为 root:root(自动)[失败] 1.1.5 确保调度程序 pod 规范文件权限设置为或更严格(自动) )代码语言:javascript复制[INFO] 1.2 API Server[WARN] 1.2.1 确保 --anonymous-auth 参数设置为 false (手动)[PASS] 1.2.2 确保 --token-auth-file未设置参数(自动)[PASS] 1.2.3 确保设置了 --kubelet-https 参数为 true (自动)[通过] 1.2.4 确保 --kubelet-client-certificate 和 --kubelet-client-key 参数设置适当(自动)[失败] 1.2.5 确保 --kubelet-证书颁发机构参数设置为适当的(自动)以及回复的修复示例:代码语言:javascript复制1.1.1 在主节点上运行以下命令(基于系统上的文件位置)。

例如, chmod /etc/ kubernetes/manifests/kube-apiserver.yaml1.1.2 在主节点上运行以下命令(基于系统上的文件位置)。例如,chown root:root /etc/kubernetes/manifests/kube-apiserver.yaml1。

1.3 在主节点上运行以下命令(基于系统上的文件位置)。例如,chmod /etc/kubernetes/manifests/kube-controller-manager.yaml1.1.4 运行以下命令(基于文件位置)在主节点上。

例如, chown root:root /etc/kubernetes/manifests/kube-controller-manager.yaml1.1.5 运行以下命令以及(基于您系统上的文件位置)在主节点上。例如,chmod /etc/kubernetes/manifests/kube-scheduler.yaml代码语言:javascript复制 1.2.1 编辑 API 服务器 pod 规范文件 /etc/kubernetes/ manifests/kube-apiserver.yamlon 主节点并设置以下参数。

--anonymous-auth=false1.2.5 按照 Kubernetes 文档并在 apiserver 和 kubelet 之间设置 TLS 连接。然后,在主节点上编辑 API Server pod 规范文件 /etc/kubernetes/manifests/kube-apiserver.yaml 并将 --kubelet-certificate-authority 参数设置为证书颁发机构的 cert 文件的路径。

-- kubelet-certificate-authority= ,总体摘要输出如下: 代码语言:javascript 复制 44 检查 PASS37 检查 FAIL19 检查 WARN0 检查 INFO 当 Kube-bench ? Kube-bench 提供了一个简单的工具来检查 Kubernetes 配置(包括 Master 和 Work)是否符合最佳安全实践(基于 CIS Kubernetes Benchmark)Kube-bench 在扫描节点(Master Node、Work Node、etcd Node)时的分析行为非常好。 Kube-bench 能够非常精确地描述配置文件的所有权限以及错误配置的标志和参数,并在适用的情况下直接发出命令。

然而,我们发现,当扫描集群内的组件时,输出通常更多地是一个指南,没有关于哪个工件配置错误的具体信息。以下是 Kubernetes 策略部分下的一些检查和修复示例: 1. 检查 - 检测代码语言:javascript 复制 [信息] 5 Kubernetes 策略 [信息] 5.1 RBAC 和服务帐户 [警告] 5.1.1 确保 cluster-admin仅在需要时使用角色(手动)[警告] 5.1.2 最小化对机密的访问(手动)[警告] 5.1.3 最小化角色和 ClusterRoles 中通配符的使用(手动)代码语言:javascriptCopy[INFO] 5.2 Pod 安全策略[警告] 5.2.1 最小化特权容器的准入(自动)[警告] 5.2.2 最小化希望共享主机进程 ID 命名空间的容器的准入(自动)[警告] 5.2.3 最小化希望共享的容器的准入主机 IPC 命名空间(自动)[警告] 5.2.4 最大限度地减少希望共享主机网络命名空间的容器的准入(自动)[警告] 5.2.5 通过allowPrivilegeEscalation 最大限度地减少容器的准入(自动) 2. 补救措施 - 修复代码语言:javascript 复制 5.1.1 识别与 cluster-admin 角色的所有 clusterrole 绑定。

C看看它们是否被使用,以及他们是否需要这个角色,或者他们是否可以使用权限较少的角色。如果可能,首先将用户绑定到权限较低的角色,然后删除对 cluster-admin 角色的 clusterrole 绑定:kubectl delete clusterrolebinding [name ]5.1.2 在可能的情况下,删除对集群中秘密对象的获取、列出和监视访问。

5.1.3 在可能的情况下,用特定对象或操作替换集群角色和角色中任何通配符的使用。部署方式 一般来说,Kube-bench 的部署方式比较简单。

目前,一些Kubernetes集群管理平台,例如Rancher、Kubeoperator等已经支持并集成了Kube-bench工具。因此,如果我们已经在使用这些平台,我们也可以直接使用平台上相应的功能来完成扫描。

对于 Kube-bench 部署运行,如果直接从命令行运行 Kube-bench,则可能需要成为 root/sudo 才能访问所有配置文件。 默认情况下,Kube-bench 会尝试自动检测 Kubernetes Cluster 的运行版本,并将其映射到相应的 CIS Benchmark 版本。

例如,Kubernetes 版本 1.15 映射到 CIS 基准版本 cis-1.15,这是 Kubernetes 1.15 的有效基准版本。 除此之外,Kube-bench 尝试识别节点上运行的组件,并使用它来确定要运行哪些测试(例如,如果节点正在运行 API 服务器,则仅运行主节点测试)。

需要注意的是,托管 Kubernetes 集群的主节点(例如 GKE、EKS、AKS 和 ACK)无法使用 Kube-bench 进行检查,因为这些节点不可访问,尽管仍然可以使用 Kube-bench 进行检查这些环境中的工作节点配置。基于容器的部署是基于容器部署模式,主要利用主机PID命名空间在容器内运行,并挂载主机上配置等文件所在的目录,以便Kube-bench检查它们的存在和权限/etc 或 /var 等,具体部署方法如下: 代码语言:javascript copy [leonli@~ ] % docker run --pid=host -v /etc:/etc:ro -v /var:/ var:ro -t docker.io /aquasec/kube-bench:latest --version 1.18 注意:测试需要路径中包含 kubelet 或 kubectl 二进制文件,以自动检测 Kubernetes 版本。

这个问题可以通过 -v $(which kubectl):/usr/local/mount-from-host/bin/kubectl 来解决。此外,还需要传入 kubeconfig 凭据。

具体如下: 代码语言: javascript copy [leonli@~ ] % docker run --pid=host -v /etc:/etc:ro -v /var:/var:ro -v $(which kubectl): /usr/local/mount-from-host/bin/kubectl -v ~/.kube:/.kube -e KUBECONFIG=/.kube/config -t docker.io/aquasec/kube-bench:latest 当然,在除了上面的启动方式之外,你还可以使用自己的配置,安装在默认配置 /opt/kube-bench/cfg/ 上,如下: 代码语言:javascript copy [leonli@~] % docker运行 --pid =host -v /etc:/etc:ro -v /var:/var:ro -t -v path/to/my-config.yaml:/opt/kube-bench/cfg/config.yaml -v $(which kubectl):/usr/local/mount-from-host/bin/kubectl -v ~/.kube:/.kube -e KUBECONFIG=/.kube/config docker.io/aquasec/kube-bench :latest 基于 Kubernetes 的部署 除了上面的部署模式之外,另一种经典的部署方式是在 Kubernetes Cluster 的 Pod 中运行 Kube-bench,但是这种模式需要访问主机的 PID 命名空间来检查运行进程,并且访问主机。某些目录用于存储配置文件和其他文件等。

需要注意的是,要在主节点上运行测试,需要在该节点上调度 Pod。这涉及到在 Pod 规范中设置 nodeSelector 和容忍度。

自 Kubernetes v1.11 以来,应用于主节点的默认标签已发生变化,因此,如果您使用的是旧版本,则可能需要修改 nodeSelector 和 tolerations 才能在主节点上运行作业。源代码部署 这种部署方式通常比较简单。

首先在设备上安装并配置Go环境变量,然后运行以下命令,如下图: 代码语言:javascript copy [leonli@~ ] % go get github.com com/aquasecurity/kube-bench[leonli@~] % cd $GOPATH/src/github.com/aquasecurity/kube-bench[leonli@~] % go build -o kube-bench .[leonli@~] % ./ kube-bench --help# 运行所有检查[leonli@~] % ./kube-bench 公有云平台部署针对第三方公有云平台,主要涉及AKS Cluster、EKS Cluster、On-prem Cluster、OpenShift、GKE集群和ACK(阿里云容器服务Kubernetes)集群等。由于各大厂商平台接口标准的差异,在这些集群中运行存在各种限制和要求,导致Kube-bench的运行方式不同。

综上所述,与 Kubescape 相比,Kube-bench 在扫描主机、文件权限和所有权、以及不同 Kubernetes 控制平面组件的标志方面表现出了出色的能力;而 Kubescape 扫描集群内的对象(例如 Pod、名称空间、帐户等)显示其价值。无论基于什么样的工具,能够解决实际的安全问题才是根本。

? 因此,这里的内容涉及面较小,基本体现在原理和实现层面,相关实践大家可以参考这篇文章。本篇文章的分析到此结束,希望对大家有用。

在一篇文章中了解基于 Kube-Bench 评估 Kubernetes 安全性

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 老铺黄金等人“折A转港”

    老铺黄金等人“折A转港”

    老铺黄金A股崩盘后,选择转投港股。 11月10日,老铺黄金在香港联交所披露招股说明书。 梦金源今年9月向港股市场发起进攻,之前也曾遭遇过“A”的失败。 11月17日,深交所公告称,星期六福已于11月8日主动撤回上市申请。 黄金珠宝终端消费热情带动黄金珠宝企业业绩稳步上升,不

    06-18

  • 全球首次碳化硅MEMS微推力阵列在轨点火试验成功

    全球首次碳化硅MEMS微推力阵列在轨点火试验成功

    南京理工大学化工学院消息:近日,碳化硅MEMS(微机电系统)微推力阵列芯片在轨点火试验成功与金牛座纳米星运行37天后,从地面收到点火命令成功点火,金牛座纳米星的姿态控制技术在轨道上得到验证。 金牛座纳米卫星由八院所属上海依依斯航天技术有限公司研制。 9月12日11时26

    06-06

  • 【全球财经24小时】2023年9月21日投融资事件汇总及详情

    【全球财经24小时】2023年9月21日投融资事件汇总及详情

    今日全球市场共发生16起投资披露事件,其中境内13起,境外13起。 其中,国内先进制造业4例,医疗健康行业4例,汽车交通运输行业1例,电商零售行业1例,企业服务行业1例,传统制造业2例。 涉外医疗健康行业2例,金融行业1例。 国内事件 1、灵科药业完成C2轮融资,整体C轮融资金

    06-18

  • 相信你的耳朵,盲目测试全球最薄vivo X5Max的Hi-Fi 2.0

    相信你的耳朵,盲目测试全球最薄vivo X5Max的Hi-Fi 2.0

    vivo在年底前发布了年度旗舰——全球最薄vivo,它保持着全球最薄手机的记录。 此外,vivo X5Max还搭载全新手机Hi-Fi 2.0架构,使该手机成为全球音质最好的手机,媲美专业Hi-Fi玩家。 那么,什么是Hi-Fi 2.0?根据vivo提供的信息,Hi-Fi 2.0采用了二次供电+二次放大+专业音频解

    06-17

  • 共享纸巾平台“纸鼠”完成数百万元天使轮融资,白马金服投资

    共享纸巾平台“纸鼠”完成数百万元天使轮融资,白马金服投资

    据投资界2月6日消息,共享纸巾平台“纸鼠”近日宣布,已完成数百万元天使轮融资,投资方为白马金服。    据悉,本轮融资资金将用于共享卫生纸机的升级、研发和市场拓展。   Paper Mouse成立于今年10月,是一个组织共享平台。 公开信息显示,纸鼠目前已预订多台卫生纸机,

    06-18

  • 尊湃通信完成数亿元Pre-A轮融资,致力于提供全系列Wi-Fi芯片及解决方案

    尊湃通信完成数亿元Pre-A轮融资,致力于提供全系列Wi-Fi芯片及解决方案

    投资界(ID:pedaily)5月9日消息,尊湃通信科技(南京)尊湃传播股份有限公司(二)近日宣布完成数亿元Pre-A轮融资。 本轮由小米集团、虎山资本、天极资本、嘉域资本、上海科创海王资本、品智信息等知名金融投资机构投资。 以及产业投资者的构成。 此前,尊湃通讯于5月21日完

    06-18

  • 宜家最酷的未来产品都来自这个神秘的实验室

    宜家最酷的未来产品都来自这个神秘的实验室

    在哥本哈根肉类加工区的中心地带,有无数的画廊、艺术咖啡馆和创意工作室。 其中有一栋由鱼市场改建而成的平米建筑。 利用技术和好奇心来绘制宜家的未来蓝图。 这就是宜家资助的 SPACE10 冒险之旅的起点。 作为宜家的未来生活实验室和产品创意孵化器,SPACE10总是开发一些超级

    06-21

  • 李彦宏内部信宣布李震宇晋升为百度集团高层副总裁

    李彦宏内部信宣布李震宇晋升为百度集团高层副总裁

    百度创始人与CEO李彦宏通过内部信宣布,百度集团副总裁和智能驾驶集团总经理李震宇晋升为集团高层副总裁,并将继续担任全面负责IDG的业务和管理工作,并向集团CEO汇报。

    06-17

  • 艾罗能源正计划在A股IPO,主要产品包括光伏储能系统等

    艾罗能源正计划在A股IPO,主要产品包括光伏储能系统等

    艾罗能源正在筹划A股IPO。 公司长期专注于家用光伏逆变器、家用储能设备等新能源供电设备的研发。 、生产、销售。

    06-18

  • 香港理工大学研发出适用于可穿戴电子装置的高透气超弹导电材料

    香港理工大学研发出适用于可穿戴电子装置的高透气超弹导电材料

    2020年3月24日,香港理工大学(理大)研发出适用于长时间佩戴电子装置的高透气超弹导电材料一段时间。 。 这种创新的导电材料采用涂层或印刷的方法,将液态金属材料添加到静电纺丝制成的弹性纤维网上。 它不仅具有高透气性、弹性、导电性且具有高导电稳定性,可广泛应用于健

    06-06

  • 冯仑:有了这样的制度环境,创新只是“副产品”

    冯仑:有了这样的制度环境,创新只是“副产品”

    近日,万通集团创始人冯仑在WISE超级进化者大会上谈到创新时表示,个人驱动力是一方面,外部的制度环境也很重要。 冯仑表示,必须有一个允许民营企业存在的制度环境,企业才愿意创新。 比如,土地1-2年不开发就被拿走,比如加大健康住房的投入,但登记价格和不创新一样,企业

    06-18

  • 杨迪、麻子、谢广坤都做出了“爆炸性的改变”,这背后是谁?

    杨迪、麻子、谢广坤都做出了“爆炸性的改变”,这背后是谁?

    亚洲换头术的魔力在短视频继续放大。 前一分钟杨迪还自嘲小眼睛,后一分钟成功变身男团酷偶像。 苹果手机的面部识别功能在真正的“苦力”面前不得不被打败。 《狂飙》中的麻子哥变身为五官精致的清秀美男。 无奖猜测。 原本只是想看热闹的网友们大概没有想到,看完一个视频后

    06-18