赞
踩
CIS Kubernetes Benchmark 由互联网安全中心(CIS)社区维护,旨在提供 Kubernetes 的安全配置基线,旨在为互联网环境提供免费的安全防御方案。CIS是一个非营利性组织,其制定的安全基准覆盖了多个领域,包括操作系统、中间件、应用程序等多个层面。
CIS官网:https://www.cisecurity.org/
在Kubernetes领域,CIS也提出了相应的安全基准,专门针对Kubernetes集群的配置和管理提出了一系列安全建议和最佳实践。这些安全基准旨在帮助组织评估和加强其Kubernetes集群的安全性。
Kubernetes CIS基准:https://www.cisecurity.org/benchmark/kubernetes/
kube-bench是由容器安全企业Aquasecurity开发的一款工具,它基于CIS为Kubernetes制定的安全标准,专门用于评估Kubernetes集群的安全配置。这个工具主要的功能包括检测存在安全隐患的配置项、文件权限设置、账户安全及暴露的端口等多个方面。通过这些检查,kube-bench帮助用户识别并修正Kubernetes集群中可能存在的安全问题,进而增强集群的安全性。
项目地址:https://github.com/aquasecurity/kube-bench
1、下载二进制包
https://github.com/aquasecurity/kube-bench/releases
2、解压使用
- tar zxvf kube-bench_0.6.3_linux_amd64.tar.gz
-
- mkdir /etc/kube-bench # 创建默认配置文件路径
-
- mv cfg /etc/kube-bench/cfg
1. 运行所有适用的检查项
如果无法运行,可容器化部署,参考文章:https://zhuanlan.zhihu.com/p/627749341
kube-bench run
2. 只运行控制组内的某些检查项
kube-bench run --check=1.1.1,1.1.2
3. 列出所有可用的控制检查项
kube-bench check --list
4. 针对特定的节点角色运行检查(master/node/etcd/policies)
kube-bench run --targets=master,node
5. 将结果输出为JSON格式
kube-bench run --json
6. 并行运行检查以提高速度
kube-bench run --parallel
7. 更新CIS基准到最新版本
kube-bench download latest
8. 查看kube-bench版本
kube-bench version
1.文件格式
kube-bench的配置文件采用YAML格式,包含一系列的检查项配置。每个检查项通过唯一的id进行标识。
测试项目配置文件路径:/etc/kube-bench/cfg/cis-1.6/
配置项示例:
- id: 1.2.21
text: "Ensure that the --profiling argument is set to false (Automated)"
audit: "/bin/ps -ef | grep $apiserverpbin | grep -v grep"
tests:
test_items:
- flag: "--profiling"
compare:
op: eq
value: false
remediation: |
Edit the API server pod specification file $apiservercconf
on the master node and set the below parameter.
--profiling=fals
2.检查项字段
每个检查项都包含以下几个主要字段:
id: 唯一标识符
text: 对该检查项的文字描述
audit: 执行审计的命令,用于检查当前系统状态
tests: 具体的测试条件 #tests下的test_items字段定义了具体的测试条件。可以根据实际需求修改该部分的测试逻辑
- test_items: 实际测试项
- compare: 测试结果与期望值的比较方式(eq、neq等)
remediation: 如果审计失败,给出的修复建议
scored: 该项对总分数的影响(true、false、WARN)
type: 该项的处理方式(manual、skip、info) #对于某些无法自动检查的项目,可以设置type=manual,kube-bench就会跳过该项并给出WARN警告。如果想跳过某项检查,可以将对应项的type设为skip,这样kube-bench就不会执行该项检查。
处理方式
测试条件
输出结果分为不同的部分,每部分检查 Kubernetes 的特定安全性方面,比如 API 服务器的配置、控制器管理器、调度器等。每项检查后面标记了“PASS”、“WARN”或“FAIL”,分别表示通过、警告或失败。警告和失败项通常需要人工检查或更正。例如,“FAIL”可能表明配置不符合安全最佳实践,而“WARN”可能意味着某些安全特性没有被启用或需要人工确认配置是否正确。
下图为Node相关的安全检查
1.1.12项“确保 etcd 数据目录权限设置为 700 或更严格 (自动化)”显示为“FAIL”,意味着当前的权限设置不够严格,可能需要进行权限的修改来加强安全性。
下图为关于Node节点的修复建议
1.1.9:建议对特定文件修改权限为644。 1.1.10:建议更改文件的所有权为 root 用户和 root 组。 1.1.12:针对 etcd 服务器节点,提供了获取 etcd 数据目录的方法,并建议将该目录的所有权更改为 etcd 用户和 etcd 组。
后面的部分是关于 API 服务器的安全配置建议,包括:
1.2.1:编辑 API 服务器 pod 规范文件,设置参数 --anonymous-auth=false
以禁用匿名访问。 1.2.6:建议根据 Kubernetes 文档设置 TLS 连接,并编辑 kube-apiserver 的配置文件,设置 --kubelet-certificate-authority
参数。 1.2.10:建议编辑 API 服务器 pod 规范文件,设置 admission 控制插件相关参数。
下图为关于Node安全检查的结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。