Hello folks,我是 Luga,今天我们来介绍另一款开源容器平台安全扫描工具 - Kube-bench。作为 Aqua Security 一款出色的开源产品,其能够基于 Internet 安全中心指南分析 Kubernetes Cluster 运行行为,并为其进行安全评估。
随着企业云原生技术及生态理念的普及,Kubernetes 事实上已成为容器编排的首选工具,无论怎么说都不为过,基于其,使得部署和管理应用程序变得从未如此简单。虽然新技术的引入带来种种益处,然而,Kubernetes Cluster 的安全性便一直是云原生生态不可逾越的鸿沟。攻击者可能会想法设法地寻找各种潜在漏洞并利用新的方法闯入系统,对整个系统进行破坏性“建设”。
为了提高 Kubernetes Cluster 的安全性,在实际的业务场景中,我们往往需要了解 W & H(即“它是什么”以及“它是如何工作的”)。为此,需要对 Kubernetes Cluster 进行全方位详细分析,包括存储 Kubernetes 组件配置的文件系统,集成插件、运行环境以及其他关联要素等。NSA、MITRE、CIS 等机构发布基准并不断升级维护 Kubernetes 集群的安全。然而,这些基准测试涵盖了太多细节,使得手动检查变得非常繁琐。
(相关资料图)
在探索如何为 Kubernetes Cluster 进行漏洞安全评估扫描时,目前,市场上有两个比较流行的工具值得为大家推荐:Kube-bench 和 Kubescape。
在之前的博文中,我们已讨论过 Kubescape 开源产品,并对其进行深入描述:它们的功能是什么、它们如何工作、它们使用哪些框架、何时使用它们以及为什么使用它们,以及它们如何相互补充。
Kube-bench 概述
作为一个基于开源 Go 开发的应用程序,Kube-bench 主要用于检查 Kubernetes Cluster 是否根据安全最佳实践进行部署规划。它实现了 CIS Kubernetes 基准,这些基准是由互联网安全中心开发的用于以安全方式运行 Kubernetes 的指导性文档。Kube-bench 可以针对自我管理的 Kubernetes Cluster 以及由流行的云提供商(如 AWS、Azure、GKE Cluster 等)管理的 Kubernetes Cluster 执行。
除此之外,Kube-bench 还提供了 JSON 格式的扫描输出,因此如果大家想根据集群扫描结果制作报告或创建警报,可以基于此进行脚本创建并自定义配置相关策略。
工作原理
通常,Kube-bench 是一个往往不会在 Kubernetes Cluster 上持续运行的工具。相反,我们可以使用简单的命令在所有 Node 上运行,然后,基于不同的部分进行检测,从而输出修复报告及建议。具体如下所示:
1、Master Node 安全配置
2、etcd Node 配置
3、控制平面配置
4、Work Node 安全配置
5、Kubernetes 政策
基于不同的环境,执行自己的检测行为、然后,对失败或警告检测的补救措施及其摘要(通过/失败/警告/信息检查的计数)进行输出。最后,发布了一个总体的概括。
其实,无论是基于源码角度,还是其执行实施检测角度,Kube-bench 工作原理较为简单。基本上围绕“执行引擎”——>“探测扫描”——>"建议输出"等流程进行。
如下为基于不同环境的检测示例:
[INFO] 1 Master Node Security Configuration[INFO] 1.1 Master Node Configuration Files[FAIL] 1.1.1 Ensure that the API server pod specification file permissions are set to 644 or more restrictive (Automated)[FAIL] 1.1.2 Ensure that the API server pod specification file ownership is set to root:root (Automated)[FAIL] 1.1.3 Ensure that the controller manager pod specification file permissions are set to 644 or more restrictive (Automated)[FAIL] 1.1.4 Ensure that the controller manager pod specification file ownership is set to root:root (Automated)[FAIL] 1.1.5 Ensure that the scheduler pod specification file permissions are set to 644 or more restrictive (Automated)
[INFO] 1.2 API Server[WARN] 1.2.1 Ensure that the --anonymous-auth argument is set to false (Manual)[PASS] 1.2.2 Ensure that the --token-auth-file parameter is not set (Automated)[PASS] 1.2.3 Ensure that the --kubelet-https argument is set to true (Automated)[PASS] 1.2.4 Ensure that the --kubelet-client-certificate and --kubelet-client-key arguments are set as appropriate (Automated)[FAIL] 1.2.5 Ensure that the --kubelet-certificate-authority argument is set as appropriate (Automated)
以及对应的修复示例:
1.1.1 Run the below command (based on the file location on your system) on themaster node.For example, chmod 644 /etc/kubernetes/manifests/kube-apiserver.yaml1.1.2 Run the below command (based on the file location on your system) on the master node.For example,chown root:root /etc/kubernetes/manifests/kube-apiserver.yaml1.1.3 Run the below command (based on the file location on your system) on the master node.For example,chmod 644 /etc/kubernetes/manifests/kube-controller-manager.yaml1.1.4 Run the below command (based on the file location on your system) on the master node.For example,chown root:root /etc/kubernetes/manifests/kube-controller-manager.yaml1.1.5 Run the below command (based on the file location on your system) on the master node.For example,chmod 644 /etc/kubernetes/manifests/kube-scheduler.yaml
1.2.1 Edit the API server pod specification file /etc/kubernetes/manifests/kube-apiserver.yamlon the master node and set the below parameter.--anonymous-auth=false1.2.5 Follow the Kubernetes documentation and setup the TLS connection betweenthe apiserver and kubelets. Then, edit the API server pod specification file/etc/kubernetes/manifests/kube-apiserver.yaml on the master node and set the--kubelet-certificate-authority parameter to the path to the cert file for the certificate authority.--kubelet-certificate-authority=
以及总体的概要总结输出,如下所示:
44 checks PASS37 checks FAIL19 checks WARN0 checks INFO
When Kube-bench ?
Kube-bench 提供了一个简单的工具来检查 Kubernetes 的配置(包括 Master 和 Work)是否符合最佳的安全实践(基于 CIS Kubernetes Benchmark)。
Kube-bench 在扫描节点(Master Node、Work Node、etcd Node)时的分析行为表现的非常棒。Kube-bench 能够给出关于配置文件的所有权限以及错误配置的标志和参数的非常精确的说明,以及在适用的地方直接发出命令。然而,我们发现在扫描集群内的组件时,往往输出更多的是指导方针,没有关于哪个工件配置错误的具体信息。以下是 Kubernetes 策略部分下的一些检查和修复示例:
1、Check - 检测
[INFO] 5 Kubernetes Policies[INFO] 5.1 RBAC and Service Accounts[WARN] 5.1.1 Ensure that the cluster-admin role is only used where required (Manual)[WARN] 5.1.2 Minimize access to secrets (Manual)[WARN] 5.1.3 Minimize wildcard use in Roles and ClusterRoles (Manual)
[INFO] 5.2 Pod Security Policies[WARN] 5.2.1 Minimize the admission of privileged containers (Automated)[WARN] 5.2.2 Minimize the admission of containers wishing to share the host process ID namespace (Automated)[WARN] 5.2.3 Minimize the admission of containers wishing to share the host IPC namespace (Automated)[WARN] 5.2.4 Minimize the admission of containers wishing to share the host network namespace (Automated)[WARN] 5.2.5 Minimize the admission of containers with allowPrivilegeEscalation (Automated)
2、Remediations - 修复
5.1.1 Identify all clusterrolebindings to the cluster-admin role. Check if they are used and if they need this role or if they could use a role with fewer privileges.Where possible, first bind users to a lower privileged role and then remove the clusterrolebinding to the cluster-admin role :kubectl delete clusterrolebinding [name]5.1.2 Where possible, remove get, list and watch access to secret objects in the cluster.5.1.3 Where possible replace any use of wildcards in clusterroles and roles with specific objects or actions.
部署方式
通常来说,Kube-bench 部署方式较为简单,目前一些 Kubernetes Cluster 的管理平台,例如, Rancher、Kubeoperator 等已经支持并集成 Kube-bench 工具,因此,如果已经在使用这些平台的话我们也可以直接使用平台上的相应功能来完成扫描。
针对 Kube-bench 的部署运行,如果直接从命令行运行 Kube-bench,那么,可能需要成为 root / sudo 才能访问所有配置文件。
默认情况下,Kube-bench 会尝试自动检测 Kubernetes Cluster 的运行版本,并将其映射到相应的 CIS Benchmark 版本。例如,Kubernetes 1.15 版本映射到 CIS Benchmark 版本 cis-1.15,这是对应 Kubernetes 1.15 有效的基准版本。
除此之外,Kube-bench 还尝试识别 Node 上运行的组件,并使用它来确定要运行哪些测试(例如,如果节点正在运行 API Server,则只运行 Master Node 测试)。
需要注意的是 ,使用 Kube-bench 无法检查托管 Kubernetes Cluster 的 Master Node,例如 GKE、EKS、AKS 和 ACK,因为无法访问这些节点,尽管仍然可以使用 Kube-bench 检查 Worker 这些环境中的 Node 配置。
基于 Container 部署
基于容器部署模式,主要是使用主机 PID 命名空间在容器内运行,并将配置和其他文件所在的目录挂载在主机上,以便 Kube-bench 可以检查它们的存在和权限 /etc 或 /var 等等。
具体部署方式可参考如下所示:
[leonli@192 ~ ] % 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 凭据。具体如下所示:
[leonli@192 ~ ] % 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/ 进行,具体如下所示:
[leonli@192 ~ ] % docker run --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 命名空间以检查正在运行的进程,以及访问主机上存储配置文件和其他文件的某些目录等。
需要注意的是,要在 Master Node 上运行测试,需要在该 Node 上安排 Pod。这涉及在 Pod 规范中设置 nodeSelector 和 tolerations (容忍度)。
自 Kubernetes v1.11 以来,应用于 Master Node 的默认标签发生了变化,因此如果使用的是旧版本,则可能需要修改 nodeSelector 和 tolerations 才能在 Master Node 上运行作业。
源码部署
此种部署方式通常较为简单,首先在设备上安装并配置好 Go 环境变量,然后运行下列命令即可,具体如下所示:
[leonli@192 ~ ] % go get github.com/aquasecurity/kube-bench[leonli@192 ~ ] % cd $GOPATH/src/github.com/aquasecurity/kube-bench[leonli@192 ~ ] % go build -o kube-bench .[leonli@192 ~ ] % ./kube-bench --help# Run all checks[leonli@192 ~ ] % ./kube-bench
公有云平台部署
针对第三方公有云平台,主要涉及 AKS Cluster、EKS Cluster、On-prem Cluster、OpenShift、 GKE Cluster 以及 ACK(Alibaba Cloud Container Service For Kubernetes) Cluster 等等。因各大厂商平台接口标准的差异性,使得在这些集群中运行存在各种限制及要求,导致运行 Kube-bench 的方法不尽相同。
基于上述所述,相对于 Kubescape,Kube-bench 在扫描主机、文件权限和所有权、不同 Kubernetes 控制平面组件的标志时展现了它的优秀才能;而 Kubescape 则在扫描集群内的对象(例如 Pod、名称空间、帐户等)时显示了它的价值。无论基于那种工具,能够解决实际的安全问题才是根本。
因此处内容涉及面较小,基本上体现在原理及执行层面,故大家可以参考本文进行相关实践。本文解析到此为止,希望对大家有用。关于 Kube-bench 更多需要了解的信息,欢迎大家交流、关注!
Adiós !
标签: Kubernetes 腾讯云测试服务
-
一文搞懂基于 Kube-Bench 评估 Kubernetes 安全性
Hellofolks,我是Luga,今天我们来介绍另一款开源容器平台安全扫描工具-Kube-bench。作为AquaSecurity一款
-
人有福报要来,之前就有预兆
一个人日常生活若好抵触顶撞父母,是绝对不能做大官的,连基本的日常工作都不会顺利,一生挫折连连,重要时刻无不败北。原因很简单,抵触顶撞
-
重庆美食特色
说到重庆的特色美食小吃,你最先想起的一道美食是什么呢?不知道下面小编要来介绍的这些美食小吃你都吃过没有呢?下面一起来看看吧。重庆特色美
-
当前快播:关于礼貌的名言中国
1、彬彬有礼的风度,主要是自我克制的表现。2、---爱默生我们想要涵养公正的品德,就应养成一种“不苟”的优良习惯。3
-
环球头条:工程造价毕业设计总结优秀范文
当工作进行到一定阶段或告一段落时,需要我们来对前段时期所做的工作认真地分析研究一下,肯定成绩,找出问题,归纳出经验教训,以便于更好的
-
当前聚焦:外媒:苹果公司试图扩大在印产量,但障碍重重
参考消息网2月14日报道据路透社2月14日报道,英国《金融时报》14日援引熟悉iPhone制造商营运状况的消息人士的话说,苹果公(@参考消息)
-
胆红素偏高的原因大概有哪些?
胆红素偏高的原因胆红素是胆色素的一种,它是人胆汁中的主要色素,呈橙黄色。它是体内铁卟啉化合物的主要代谢产物,有毒性,可对大脑和神经系
-
全球热文:天禾股份:广东省供销合作联社正在积极参与预制菜全产业链标准化试点工作
同花顺金融研究中心2月14日讯,有投资者向天禾股份提问,董秘您好!公司“预制菜”项目最新进展如何? 公司回答表示,您好!广东省供销...
-
今日讯!甘肃一男子称社区大门周一紧锁 涉事社区:因带居民就医锁门半小时,已道歉
甘肃一男子称社区大门周一紧锁涉事社区:因带居民就医锁门半小时,已道歉
-
环球短讯!珍惜水资源的作文
珍惜水资源的作文(精选24篇)导语:众所周知,水是生命之源,是我们赖以生存的必要条件,难以想象如果世界没有了水,我们的生
-
报道:不止氯乙烯 美国脱轨列车还运载其他有毒化学品
一列运载有毒化学品的列车本月初在美国俄亥俄州东部脱轨,当地应急部门先前声称对车载有毒气体氯乙烯进行了“受控释放”。然而,美国媒体13...
-
【全球独家】新疆兵团农场人家的“四喜临门”
中新网新疆图木舒克2月14日电(史玉江尹群燕韩世猛)“用一句老话说,我大学毕业迄今,我们家‘四喜临门’。”卡地·吾
-
谢师宴致辞
谢师宴致辞范文15篇无论在学习、工作或是生活中,大家都对致辞很是熟悉吧,致辞是指在举行会议或某种仪式时具有一定身份的人的
-
环球热门:陈思斯个人资料微博_陈思斯个人资料
1、陈思斯,中国复大陆女演员,毕业于制中央戏剧学院表演系,在影视剧《戈壁母亲》、《雪域天路》等均有出色表演。2、因热播宫廷大剧《甄嬛传
-
我上天津我主良缘相亲交友找对象的原因,是这样的……
作为一个在天津独自工作生活的单身女青年,我其实没怎么觉得辛苦,毕竟这里的竞争压力没有北京上海广州那些大城市大,我的工作收入也还可以,
-
天天热点评!通富微电(002156)2月14日9点34分触及涨停板
2月14日盘中消息,9点34分通富微电(002156)触及涨停板。目前价格23 28,上涨10 02%。其所属行业半导体目前上涨。领涨股为通富微电。该股为DR
-
全球快看:怡和嘉业:华为生态伙伴
BMC怡和嘉业生产的M1Mini单水平睡眠呼吸机(以下简称“迷你呼吸机”)正式获得HUAWEIHiLink技术认证,BMC怡和嘉业成为HUAWEIHiLink生态伙伴。
-
焦点速读:三奶奶送的孩子胎记
送给他们一些有纪念意义的礼物,像是一些能让他们感到温暖与感动的礼物,如是一些能够让他们感动的礼物,能够让他们一直记得你。
-
【环球快播报】简单易做的家常菜
简单易做的家常菜,简单易做家常菜有:鱼香鸡丁、酸辣洋白菜、蟹黄豆腐、麻婆豆腐、炒肝尖、豆角焖饭、木须肉、鱼头豆腐汤、蒸鲫鱼、酸菜鱼、
-
环球观焦点:凤台租房_凤台租房
1、一、廉租房每年几月份申请新申请廉租房家庭在每年7月份,向户籍所在地居委会提出书面申请,按照流程进行审核,对满足申请条
-
环球看点!关羽为何月下看春秋
关羽为何月下看春秋,关羽看《春秋》是为了塑造出关羽文武双全、战场上威风八面、虎啸雷鸣,油灯下深思熟虑、运筹帷幄,一个十全十美的人物的
-
环球消息!电脑温度多少度正常_了解硬件的正常温度范围
1、一般用40度左右很正常。如果你在运行大型软件或者玩游戏,温度会立刻飙升到70度左右,这是正常的。最好不要超过85度。
-
金刚般若波罗蜜多心经
金刚般若波罗蜜多心经,《金刚般若波罗蜜经》又叫《金刚经》来自印度的初期大乘佛教;《金刚般若波罗蜜多心经》的首次翻译的人是鸠摩罗什译,
-
感抗公式_感抗
1、①当交流电通过电感线圈的电路时,电路中产生自感电动势,阻碍电流的改变,形成了感抗。2、自感系数越大则自感电动势也越大
-
2023年热门选品来了!亚马逊等跨境电商卖家不可错过的爆单机会!
近日,数据分析平台AMZScout发布了全球第二大电商平台eBay的热门品类数据,揭示了当前eBay全球最热销的八大品类及细分产品。数据统计显示,当
-
买给男生的礼物
如果是自己喜欢的男生,就给他买一个,如果是自己喜欢的男生,就给他一些礼物。其次可以根据男生的喜好选择一些他平时用的东西
-
环球精选!今日白银价格多少钱一克(2023年2月13日)
今日白银价格多少钱一克(2023年2月13日)
-
当前热讯:音符敲开柏辽兹的情感世界 是爱情在“狂飙”
杭州日报讯干练飒爽的标志性短发,陈琳的手中虽然没有指挥棒,却在舞台上挥洒自如、气贯长虹。2月10日晚,著名指挥家陈琳执棒杭州爱乐乐团,携
-
天天简讯:亚洲室内田径锦标赛,湖南选手张溟鲲获跳远铜牌
湖南运动员张溟鲲出战2023亚洲室内田径锦标赛男子跳远决赛。图 新华网中国田径协会官网消息,北京时间2月12日,正在哈萨
-
世界关注:心系老东家!卡卡祝贺皇马夺得世俱杯冠军:Hala Madrid
在世俱杯决赛中,皇马5-3击败利雅得新月夺得冠军。前巴西球星、皇马旧将卡卡也在社媒转发皇马官推庆祝夺冠的推文,配文:“HalaMadrid”(...