使用Kube-bench进行Kubernetes CIS基准测试
翻译-2
原文:https://devopscube.com/kube-bench-guide/
- name: 翻译-2
desc: 原文:https://devopscube.com/kube-bench-guide/
bgColor: '#F0DFB1'
textColor: 'green'
2
3
4
# 使用Kube-bench进行Kubernetes CIS基准测试

在这篇博客中,您将了解 kube-bench 以及如何使用 kube-bench 对集群运行 Kubernetes CIS 基准测试。
在为生产用例管理 Kubernetes 集群时,安全性和合规性是需要考虑的关键因素。需要安全地配置群集,以最大限度地减少攻击面。此外,每个组织都可能有系统审计要求,以符合安全标准。
# 1什么是CIS Kubernetes基准?
笔记
CIS 基准是社区共识过程中的产物,其中包含为 Kubernetes 开发的安全配置指南 —— cisecurity.org
Kubernetes CIS 基准测试涵盖以下安全指南和建议
- 控制平面组件:控制平面节点的配置和组件建议。
- 工作节点:工作节点和 Kubelet 配置。
- 策略:RBAC、服务帐户、Pod 安全标准、CNI 和网络策略、Secret 管理等。
下图显示了 Kubernetes API 服务器的 CIS 指南示例列表。

# 2什么是Kube-bench?
Kube-bench 是一个开源工具,通过对 Center for Internet Security (CIS) Kubernetes 基准运行检查来评估 Kubernetes 集群的安全性。它是由云原生安全解决方案提供商 Aqua Security 在 GoLang 中开发的。
Kube-bench是一个开源工具,通过对互联网安全中心(CIS)Kubernetes 基准 (opens new window)运行检查来评估 Kubernetes 集群的安全性。它是由云原生安全解决方案提供商 Aqua Security (opens new window) 在 GoLang 中开发出来的。
Kube-bench 可以帮助您完成以下任务。
- 集群加固:Kube-bench 根据 CIS 基准中概述的安全指南自动检查集群配置。
- 策略实施:Kube-bech 检查 RBAC 配置,以确保将必要的最低权限应用于服务帐户、用户等。 它还检查 Pod 安全标准和 Secret 管理。
- 网络分段:Kube-bench 检查 CNI 及其对网络策略的支持,以确保为所有命名空间定义了网络策略。
当谈到组织使用 kube-bench 时,Red Hat(红帽)进行的一项安全调查 (opens new window)发现,24% 的受访者使用它。

图源: redhat.com
您可以通过两种方式对集群运行 kube-bench 检查。
- 在命令行中运行 kube-bench CLI
- 在 Pod 内运行
让我们看看这两种选择。
# 3从命令行运行Kube-bench
如果您正在准备 CKS 认证 (opens new window),那么在命令行中运行 kube-bench 是重要的任务之一。
笔记
仅当您有权访问控制平面节点时,此方法才有效。如果您正在使用 Kubernetes 托管服务,则可以将 kube-bench 作为 pod 运行,如下一节所述。
# 第一步
登录到控制平面(master)节点并创建一个 kube-bench 目录
sudo mkdir -p /opt/kube-bench
# 第二步
转到 kube-bench releases (opens new window) 页面,然后选择最新的 Linux 二进制文件下载链接。
curl -L https://github.com/aquasecurity/kube-bench/releases/download/v0.6.11/kube-bench_0.6.11_linux_amd64.tar.gz -o /opt/kube-bench.tar.gz
# 第三步
将二进制文件解压缩到/opt/kube-bench
文件夹
tar -xvf kube-bench.tar.gz -C /opt/kube-bench
如果检查/opt/kube-bench
目录,您将看到kube-bench
可执行文件和cfg
文件夹,其中包含不同版本的基准变体以及 GKE、EKS、AKS 等 kubernetes 托管服务资源,如以下树结构所示。
(((译者加:“GKE” 是谷歌云的 Kubernetes 托管服务,“EKS” 是亚马逊云的,“AKS” 是微软云的)))
vagrant@master-node:~$ tree
.
├── cfg
│ ├── ack-1.0
│ │ ├── config.yaml
│ │ ├── controlplane.yaml
│ │ ├── etcd.yaml
│ │ ├── managedservices.yaml
│ │ ├── master.yaml
│ │ ├── node.yaml
│ │ └── policies.yaml
│ ├── aks-1.0
│ │ ├── config.yaml
│ │ ├── controlplane.yaml
│ │ ├── managedservices.yaml
│ │ ├── master.yaml
│ │ ├── node.yaml
│ │ └── policies.yaml
│ ├── cis-1.6-k3s
│ │ ├── config.yaml
│ │ ├── controlplane.yaml
│ │ ├── etcd.yaml
│ │ ├── master.yaml
│ │ ├── node.yaml
│ │ └── policies.yaml
│ ├── config.yaml
│ ├── eks-stig-kubernetes-v1r6
│ │ ├── config.yaml
│ │ ├── controlplane.yaml
│ │ ├── managedservices.yaml
│ │ ├── master.yaml
│ │ ├── node.yaml
│ │ └── policies.yaml
│ ├── gke-1.2.0
│ │ ├── config.yaml
│ │ ├── controlplane.yaml
│ │ ├── managedservices.yaml
│ │ ├── master.yaml
│ │ ├── node.yaml
│ │ └── policies.yaml
│ └── rh-1.0
│ ├── config.yaml
│ ├── controlplane.yaml
│ ├── etcd.yaml
│ ├── master.yaml
│ ├── node.yaml
│ └── policies.yaml
├── kube-bench
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 第四步
将 kube-bench 可执行文件移动到属于系统 PATH 的/usr/local/bin
目录中
sudo mv /opt/kube-bench/kube-bench /usr/local/bin/
现在,您可以从任何系统位置执行kube-bench
。
让我们使用 kube-bench 可执行文件运行基准测试。我们将使用通用的 config.yaml 来运行以下基准测试命令。您必须以 sudo 身份运行该命令。
sudo kube-bench --config-dir /opt/kube-bench/cfg --config /opt/kube-bench/cfg/config.yaml
上述命令将运行基准检查,并创建检查项、修复建议和摘要,如下所示。
# 检查项示例
[INFO] 1 Control Plane Security Configuration
[INFO] 1.1 Control Plane Node Configuration Files
[PASS] 1.1.1 Ensure that the API server pod specification file permissions are set to 644 or more restrictive (Automated)
[PASS] 1.1.2 Ensure that the API server pod specification file ownership is set to root:root (Automated)
# 修复建议示例
== Remediations master ==
1.1.9 Run the below command (based on the file location on your system) on the control plane node.
For example, chmod 600 <path/to/cni/files>
1.1.12 On the etcd server node, get the etcd data directory, passed as an argument --data-dir,
from the command 'ps -ef | grep etcd'.
# 摘要示例
== Summary master ==
41 checks PASS
9 checks FAIL
11 checks WARN
0 checks INFO
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
如果您想将报告放在单独的文件中,可以将输出定向到如下所示的文件。
sudo kube-bench --config-dir /opt/kube-bench/cfg --config /opt/kube-bench/cfg/config.yaml > kube-bench.report

# 额外-从软件包安装Kube-bench
您还可以使用 Linux 软件包安装和运行 kube-bench。在项目的 releases 页面上,您将找到.deb
和.rpm
软件包。
例如,要在 Debian/Ubuntu 系统上安装,您可以执行以下命令。
curl -L https://github.com/aquasecurity/kube-bench/releases/download/v0.6.11/kube-bench_0.6.11_linux_amd64.deb -o kube-bench.deb
sudo dpkg -i kube-bench.deb
2
3
安装完成后,您可以在 /etc/kube-bench/ 目录中找到 kube-bench cfg 文件夹。
此外,您可以直接运行kube-bench
检查,而无需提供目录配置参数,就像我们在二进制安装中所做的那样。默认情况下,kube-bench
会自动引用/etc/kube-bench/cfg
目录。
若要运行检查,请执行以下命令。
sudo kube-bench
# 4在Pod中运行Kube-bench
运行kube-bench
的另一种方法是将其部署为 Kubernetes job (opens new window) 的 Pod。当您无法通过 root 权限访问控制平面或工作节点时,此方法对于在托管的 Kubernetes 集群上运行 CIS 基准测试特别有用。
kubectl apply -f https://raw.githubusercontent.com/aquasecurity/kube-bench/main/job.yaml
或者,如果要修改 YAML,可以将其下载到文件中,然后应用它
curl https://raw.githubusercontent.com/aquasecurity/kube-bench/main/job.yaml > job.yaml
kubectl apply -f job.yaml
然后 kube-bench 报告将在 pod 日志中可用。首先列出 pod
kubectl get pods
现在通过 pod 名称获取日志。将 kube-bench-4j2bs 替换为您的 pod 名称。
kubectl logs kube-bench-4j2bs
您还可以将 kube-bench 日志导出到文件中
kubectl logs kube-bench-4j2bs > kube-bench.report
# 5Kube-bench 可能的错误
unable to determine benchmark version: config file is missing 'version_mapping' sectio
(无法确定基准版本:配置文件缺少 “version_mapping” 部分)
2
3
如果你运行kube-bench
命令时没有提供--config-dir
和--config
参数,则会出现上述错误。
# 6适用于Kubernetes托管集群的Kube-bench(GKE、EKS、AKS 等)
如果您正在使用 GKE、EKS 或 AKS 等 Kubernetes 托管服务,则无法访问控制平面节点来安装 kube-bench 应用程序。
所有托管的 Kubernetes 服务都遵循责任共担模型,其中云提供商负责控制平面的可用性和安全性,而用户需要在用户、策略等方面负责安全性。
此外,当你部署 Pod 时,它会被调度到一个节点上,Kube-bench 只会发现当前节点上的 kubelet 并运行相应检查。在这种情况下,它只会对工作节点运行测试。如果您将 Pod 调度到控制平面上,则它将运行控制平面所需的所有检查。
(((译者加:Kube-bench 的 Pod 被调度到哪个节点之上,就对哪个节点运行检查)))
# 7kube-bench替代方案
如果您正在寻找 kube-bench 的开源替代方案来运行 CIS 基准测试,则您可以看看以下两个工具。
# 8总结
Kube-bench 有助于验证您的 Kubernetes 集群是否已根据互联网安全中心(CIS)的建议进行了配置。
为了符合组织的安全策略和审计要求,您可以运行 kube-bench 来检查和修复集群中的安全问题。
如果您正在学习 kubernetes,请查看全面的 kubernetes 教程 (opens new window)。
本文原作者:Bibin Wilson
https://devopscube.com/author/bibinwilson/
- name: 本文原作者:Bibin Wilson
desc: https://devopscube.com/author/bibinwilson/
bgColor: '#38b6ff'
textColor: 'black'
2
3
4