首页 >要闻 > > 正文

一文搞懂基于 Kube-Bench 评估 Kubernetes 安全性 天天速看料

腾讯云 2023-02-15 11:58:49

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 !

上一篇:吉林村庄“依山傍雪”村民走上教练岗位迎“冬忙”_天天微动态 下一篇:最后一页
x
推荐阅读

一文搞懂基于 Kube-Bench 评估 Kubernetes 安全性 天天速看料

2023-02-15

吉林村庄“依山傍雪”村民走上教练岗位迎“冬忙”_天天微动态

2023-02-15

甘肃金太阳2023高三2月联考答案及试卷各科汇总_更新中 全球速递

2023-02-15

decline的用法和短语_decline的用法及例句 全球速看料

2023-02-15

cad画图步骤超详细_cad画图 全球快报

2023-02-15

真人电影《花木兰》观后感影评5篇2020最新精选

2023-02-15

12123预约考试科目三_12123预约考试科目三-环球速讯

2023-02-15

class是什么意思

2023-02-15

g.o.a.t是什么意思_T O是什么啊 滚动

2023-02-14

综合实践活动计划大全5篇-天天微动态

2023-02-14

给长辈阿姨送什么礼物好

2023-02-14

好消息!丰台这个棚改项目待资金到位后,将启动拆迁腾退! 当前报道

2023-02-14

迅游vip激活码领取2020_迅游激活码免费领取

2023-02-14

当前时讯:奥林匹克的由来是什么

2023-02-14

龙爪花的功效与作用_龙爪花的功效与作用

2023-02-14

缺的就是绿牌车?哈弗申报两款插混新车,如歌/枭龙都是新面孔

2023-02-14

孩子早恋问题的处理方法

2023-02-14

侨银股份预中标约7789万元中山市环卫服务项目_当前速讯

2023-02-14

初中男生送男生什么生日礼物好

2023-02-14

泉峰汽车“战略性亏损”待解

2023-02-14

逃生全攻略_极速逃生攻略

2023-02-14

多省明确试点现房销售,新房“即买即交付”或加速落地-天天消息

2023-02-14

泰安是鲁什么 天天热推荐

2023-02-14

天天视讯!练字封面设计手绘简笔画_封面设计手绘简笔画

2023-02-13

pbt是什么材料-每日速递

2023-02-13

天天消息!西安情人节未央区还能预约结婚登记吗

2023-02-13

鬼谷子给卫庄盖聂的选题,两个细节就预示了他们未来的道路

2023-02-13

女性客户送什么礼物好

2023-02-13

让全网沸腾的吴易昺,杭州这些学校的老师太激动:初中时就很拼,比赛总能逆转! 天天新动态

2023-02-13

帝欧家居:公司暂无与隆基合作的屋顶光伏项目

2023-02-13

环球信息:三六零3连板 股价创去年4月以来新高

2023-02-09

国家限电限产的真正原因是什么

2023-02-09

台式机最好的显卡_台式机独立显卡排名

2023-02-09

骷髅王出装铭文_骷髅王出装

2023-02-09

PE行业上市公司有哪些?PE股票一览_精选

2023-02-09

中国传动(ADR)(CHSTY.US)2月8日收盘报11.8美元/股-当前快讯

2023-02-09

六一儿童节文案短句_六一儿童节文案

2023-02-09

简易租房合同范文10篇

2023-02-09

几月份去贵州旅游最好 贵州什么时候去旅游最适合 每日看点

2023-02-09

好听的日本动漫音乐排行榜

2023-02-08

合肥四大名点在哪买_合肥四大名点|即时看

2023-02-08

快资讯丨做大做强 再创辉煌_再创辉煌的上一句是什么

2023-02-08

全球焦点!当下"最赚钱"的10大行业你从事哪个

2023-02-08

当前简讯:广州岭南花卉批发市场_广州花卉批发市场

2023-02-08

视觉中国(000681)龙虎榜数据(02-08)|环球今头条

2023-02-08

天天最新:大学生炒股成功案例

2023-02-08

奥美医疗(002950)2月8日主力资金净买入571.47万元 天天资讯

2023-02-08

箭如雨下!雷霆半场三分19中12 领先湖人10分

2023-02-08

亲爱的,这不是爱情散文

2023-02-08

饿了么免单2月8日答案2023最新消息 世界新视野

2023-02-08

今日热搜:震后土耳其:交通事故随处可见 救护车雪中艰难前行

2023-02-08

全球头条:青州镇全力推进重点项目建设 奋力实现首季“开门红”

2023-02-08

天天精选!二年级数学下册期中考试卷

2023-02-08

am和sam是什么职位_sam是什么职位 环球实时

2023-02-08

解语花是什么意思?_解语花什么意思

2023-02-08

热消息:佘诗曼43岁生日狂收礼:单身生活很开心

2023-02-08

全球焦点!0951开头是哪里号码_0950开头区号到底什么电话

2023-02-08

高压锅卡死怎么处理

2023-02-07

东京奥运会中华台北奥运会夺冠放什么歌_中国台北东京奥运会赢了放什么歌

2023-02-07

舒兰市在哪里

2023-02-07

缓存

2023-02-07

国联证券谋求公募牌照,拟29.49亿收购中融基金100%股权

2023-02-07

宝信软件:公司将严格按照《上海证券交易所股票上市规则》关于业绩快报的相关规定进行信息披露

2023-02-07

差强人意的国产互动影视类游戏《飞越13号房》|报资讯

2023-02-07

天天快资讯丨气得像什么填词语两个字名词

2023-02-07

普瑞康雪莲培养物:科技打造防辐射“盾牌”,筑牢国民健康防线

2023-02-07

主板打新股需要什么条件?主板打新股规则及条件?

2023-02-07

全球动态:一种复合富锂正极材料及其制备方法和用途

2023-02-07

焦点日报:筋挛_关于筋挛介绍

2023-02-07

百度文库下载的文档怎么保存到本地_百度文库下载的文档怎么保存到电脑 最新

2023-02-07

预制菜行业规范化进程提速 浦东颁发上海首张预制菜“身份证”

2023-02-07

焦点快播:名记:爵士拒绝出售马尔卡宁/凯斯勒/阿巴基 范德彪最可能被卖

2023-02-06

雪域雄鹰第二部绝命巅峰_雪域雄鹰第二部

2023-02-06

环球晶1月营收59.3亿元 环比下降1.97%-时讯

2023-02-06

大宗交易:颖泰生物成交80万元,折价27.40%(02-06)-快讯

2023-02-06

大有作为打一正确生肖_大有作为|当前视讯

2023-02-06

环球热议:焦点访谈丨合力打通“出山路”

2023-02-06

【环球新视野】腾讯成立职业技能培训学校 由腾讯教育科技公司全资持股

2023-02-06

2023年全国医师资格考试甘肃考区报名官网入口 全球最新

2023-02-06

当前速读:去年海南服务进出口超350亿元 服务出口181.81亿元

2023-02-06

又有一家新医院开建,服务人口超10万

2023-02-06

“会员”在涨价、权益在打折,视频网站平台怎么了? 当前视点

2023-02-06

庭院种姜的最佳时间 庭院种姜什么时候最好

2023-02-06

库里的励志故事用英语_库里的励志故事 每日速讯

2023-02-05

marilyn manson

2023-02-05

滕王高阁临江渚-全球热点评

2023-02-05

环球百事通!七年级道德与法治上册知识点归纳整理_七年级道德与法治上册知识点

2023-02-05

每日聚焦:美国在两国战争中开启了没收其中一国资产转移给另一国家的先例

2023-02-05

两当白皮松个体23|全球快消息

2023-02-05

中团网兰州站|环球快资讯

2023-02-05

天天关注:9533885是什么单位的号码_9533885是什么号码

2023-02-05

某样品由氧化铜和铜组成_某样品为铜和氧化铜的混合物_速递

2023-02-05

最新资讯:女艺人陪酒价格表_女星陪酒价目表

2023-02-04

驴打滚是用什么材料做的_全球简讯

2023-02-04

中国水产科学发展报告_2011-2015 精_全球关注

2023-02-04

每日时讯!胶囊胃镜一次多少钱天津_胶囊胃镜一次多少钱

2023-02-04

陈数真是中年女人的穿搭模板,不仅减龄时髦,还很显瘦

2023-02-04

罚没逾8.8亿元!“金满满”​传销被重罚

2023-02-04

中盐甘肃省盐业集团天城商贸有限责任公司_当前快看

2023-02-04

卧龙电驱(600580)2月3日主力资金净卖出3774.51万元

2023-02-04