首页 > 其他分享 >kube-bench

kube-bench

时间:2023-05-12 12:23:50浏览次数:40  
标签:Kubernetes -- bench 安全 集群 kube

安全是一个绕不开的话题,那么,在云原生领域,在kubernetes内更加的需要安全。毕竟没有人愿意自己的项目是千疮百孔,适当的安全可以保证项目或者平台稳定高效的运行。

安全性是一个永远不会消失的问题,无论该技术推出多长时间都无关紧要。因此,我们应该始终使用 kube bench、kube-hunter 和 CIS 基准来强化 Kubernetes 集群。我们的集群越安全,它们就越不容易出现停机和黑客攻击。

一,

什么是CIS?

当然了,我们这里提到的CIS指的是一个技术性的安全组织,不是什么独联体,无关政治。

互联网安全中心 (CIS) 是一家历史悠久的全球安全组织,已将其 Kubernetes 基准创建为“客观的、共识驱动的安全指南”,为集群组件配置提供行业标准建议并强化 Kubernetes 安全态势。

级别 1 建议实施起来相对简单,同时提供主要好处,通常不会影响业务功能。级别 2 或“深度防御”建议适用于需要更全面战略的关键任务环境。

CIS 还提供确保集群资源符合基准并为不合规组件生成警报的工具。CIS 框架适用于所有 Kubernetes 发行版。

优点: 严格且被广泛接受的配置设置蓝图。
缺点: 并非所有建议都与所有组织相关,必须相应地进行评估。
二,
现在的kubernetes集群安全现状
ubernetes (K8s) 成为世界领先的容器编排平台是有原因的,当今有74% 的 IT 公司将其用于生产中的容器化工作负载。它通常是大规模处理容器配置、部署和管理的最简单方法。

但是,尽管 Kubernetes 使容器的使用变得更容易,但在安全性方面也增加了复杂性。究其原因,集群的规模随着业务的增长可能也会不断增加,并且可能会有若干个集群,而每一套集群都是由若干个组件组成的,并且可能还会有高可用的需求,这些使得集群变得更加复杂。

Kubernetes 的默认配置并不总是为所有部署的工作负载和微服务提供最佳安全性。此外,如今您不仅要负责保护您的环境免受恶意网络攻击,还要负责满足各种合规性要求。说人话就是kubeadm这样的工具使得部署不在困难,但,每一个集群并不具有最佳的安全性。

合规性已成为确保业务连续性、防止声誉受损和确定每个应用程序的风险级别的关键。合规性框架旨在通过轻松监控控制、团队级别的问责制和漏洞评估来解决安全和隐私问题——所有这些都在 K8s 环境中提出了独特的挑战。

为了完全保护 Kubernetes,需要多管齐下的方法:干净的代码、完全的可观察性、防止与不受信任的服务交换信息以及数字签名。还必须考虑网络、供应链和 CI/CD 管道安全、资源保护、架构最佳实践、机密管理和保护、漏洞扫描和容器运行时保护。

三,
什么是kube-bench?
Kube-Bench是一款针对Kubernete的安全检测工具,从本质上来说,Kube-Bench是一个基于Go开发的应用程序,它可以帮助研究人员对部署的Kubernete进行安全检测

那么,kube-bench到底是检测kubernetes集群的什么呢?

主要是检测kubernetes集群的各个组件的配置文件,查看这些配置文件是否符合安全基线的标准。

例如,kubelet的配置文件:

其中的anonymous的值可以是true或者false,默认anonymous-auth参数设置成true,也就是可以进行匿名认证,这时对kubelet API的请求都以匿名方式进行,系统会使用默认匿名用户和默认用户组来进行访问,默认用户名“system:anonymous”,默认用户组名“system:unauthenticated”。那么,这显然是不安全的一种配置方式,因此,下面的文件做了显式的定义false,可以有效的提高集群的安全性。

那么,如果我们每一个集群都这样人肉检索配置是否合乎安全,显然是不合适的。

kube-bench这个工具可以自动的将各个组件内的这些错误的,不合乎安全基线的配置找出来,并生成一个详细的报告。也就是说,kube-bench是一个自动化的安全检测工具。

 

简介


Kube-bench可以检查Kubernetes是否根据CIS Kubernetes基准中定义的安全最佳实践进行部署。

安装


运行如下命令安装Kube-bench

  1. docker run --rm -v `pwd`:/host aquasec/kube-bench:latest install
  2. ./kube-bench

更多安装方式请参考:https://github.com/aquasecurity/kube-bench/blob/main/docs/running.md

检查


检查对k8s控制节点进行压测

  1. ./kube-bench master


检查完成后呢,我们发现它有10个问题。

解决问题


我们以设置--kubelet-certificate-authority为例。


我们通过设置证书授权来改善kubernetes.

  1. # 修改kube-apiserver.yaml
  2. vim /etc/kubernetes/manifests/kube-apiserver.yaml
  3. # 添加证书授权
  4. - --kubelet-certificate-authority=/etc/kubernetes/pki/ca.crt


随后重启kubelet,并再次检查,我们就会发现这个问题以及解决了。

  1. systemctl daemon-reload
  2. systemctl restart kubelet.service
  3. ./kube-bench master


通过它的一些问题描述来一点点改善我们的集群环境。

常见问题

问题一


授权模式不应设置为AlwaysAllow,而应包括Node和RBAC。
实例地址ip设置无效。
不安全端口失败参数应该设置为0。


解决方法

  1. vim /etc/kubernetes/manifests/kube-apiserver.yaml
  2. # - --authorization-mode=AlwaysAllow
  3. - --authorization-mode=Node,RBAC
  4. # - --insecure-bind-address=0.0.0.0
  5. - --insecure-port=0

问题二


确保anonymous-auth参数设置为false
确保--authorization-mode参数不能设置为AlwaysAllow
尽可能的使用webhook authn或authz

  1. vim /var/lib/kubelet/config.yaml # master和node都需要改配置
  2. anonymous:
  3. enabled: false
  4. authorization:
  5. mode: Webhook
  1. systemctl daemon-reload
  2. systemctl restart kubelet.service

问题三


确保etcd的--client-cert-auth失败设置为true

    1. vim /etc/kubernetes/manifests/etcd.yaml
    2. - --client-cert-auth=true
    3. systemctl daemon-reload
    4. systemctl restart kubelet.service

标签:Kubernetes,--,bench,安全,集群,kube
From: https://www.cnblogs.com/gaoyuechen/p/17393729.html

相关文章

  • kubernetes学习笔记27:etcd性能
    理解etcd性能:etcd集群架构图,包含raft层,storage层(storage层包含treeindex层和boltdb底层持久化存储key-value层),它们每一层都可能造成性能损失,raft层需要网络同步数据,网络io节点之间的rtt和带宽都会影响etcd性能,另外wal也会受到磁盘io的写入速度影响。storage层,磁盘iofdatasync延迟......
  • chipyard——DUT/testbench/host
    一,简介chipyard中有两类DUT,一类是无法自启动,必须由主机将测试程序加载到DUT的内存中,并向DUT发信号,表示程序已准备好运行。还有一类可以自启动的DUT,具有bootrom,可自行加载程序。chipyard主机(hostcomputer/outsideworld)与DUT的两种通信方式:使用TetheredSerialInterface(TSI......
  • Kubernetes概述 (一篇教你认识k8s)
    一、Kubernetes概述 1.k8s是什么K8S的全称为Kubernetes(K12345678S),PS:“嘛,写全称也太累了吧,不如整个缩写”。作用:用于自动部署、扩展和管理“容器化(containerized)应用程序"的开源系统。可以理解成K8S是负责自动化运维管理多个容器化程序(比如Docker)的集群,是一......
  • 带你完成数据库的clickbench性能测试(小白都能看懂)
    clickbench官网链接:https://benchmark.clickhouse.com/如下采用的数据库为分析型数据库支持MySQL协议,其他所有的数据库操作方法均类似测试背景利用clickhouse的clickbench测试数据与查询SQL对AtomData进行了性能测试,所有的测试方法均与其他clickbench上的其他产品一致。预期......
  • Kubernetes 使用 Ingress-nginx 实现灰度发布功能
    推荐阅读Helm3(K8S资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506Helm3(K8S资源对象管理工具)博客专栏:https://blog.csdn.net/xzk9381/category_10895812.html本文原文链接:https://blog.csdn.net/xzk9381/article/details/109570832,转载请注明出处。如有发现文......
  • KubeEdge在边缘计算领域的安全防护及洞察
    摘要:着重介绍Kubeedge在安全防护方面的实践,并介绍OpenSSF在开源软件安全方面的计划与目标。本文分享自华为云社区《KubeEdge在边缘计算领域的安全防护及洞察》,作者:华为云云原生团队。随着开源软件安全漏洞持续引起世界各地政府和企业的关注,越来越多的组织、开发人员、研究人员和......
  • kubernetes集群故障处理思路
    kubernetes集群故障处理思路1.0 概述本文主要介绍了pod的创建流程,一般问题处理思路以及一些辅助的检查项,以编快速定位及解决问题1.1 kubernetes故障处理思路概览图k8s集群出现故障,一般可以从两大种情况看,个别pod异常和大量pod异常,针对两种情况,可以参考以下处理思路1.2 po......
  • Minikube:搭建部署单机 Kubernetes
    第一步:安装docker安装过程见连接 Centos安装docker-扰扰-博客园(cnblogs.com)第二步:安装VirtualBox2.1、直接使用yum源方式安装VirtualBox,配置正确的repo文件即可:[virtualbox]name=OracleLinux/RHEL/CentOS-$releasever/$basearch-VirtualBoxbaseurl=http......
  • 关于使用kubeadm reset命令对kubeadm init与kubeadm join操作后遇到报错的情况-进行恢
    在Kubernetes/k8s集群中,无论是在开始的master节点初始化,还是后面客户端使用kubeadmjoin命令加入到集群可能都会遇到很多报错,对于新手来说、很多还不是很好解决、也有一些情况,是在初始化之前忘记执行一些操作,而导致报错这种一般都需要执行漏掉的操作,重新执行初始化操作,但是如......
  • 搭建 Kubernetes 集群
    简介Kubernetes是一个开源系统,用于容器化应用的自动部署、扩缩和管理。它将构成应用的容器按逻辑单位进行分组以便于管理和发现。搭建环境:CentOSv7.6.1810docker-ce-versionv23.0.5kubernetes-versionv1.23.6本次使用2台服务器进行搭建,运行下面命令写入/etc/hosts文件(......