当前位置:   article > 正文

CKS之k8s安全基准工具:kube-bench

CKS之k8s安全基准工具:kube-bench

 CIS K8s安全基准(CIS K8s Benchmark)

        CIS Kubernetes Benchmark 由互联网安全中心(CIS)社区维护,旨在提供 Kubernetes 的安全配置基线,旨在为互联网环境提供免费的安全防御方案。CIS是一个非营利性组织,其制定的安全基准覆盖了多个领域,包括操作系统、中间件、应用程序等多个层面。

        CIS官网:https://www.cisecurity.org/

        在Kubernetes领域,CIS也提出了相应的安全基准,专门针对Kubernetes集群的配置和管理提出了一系列安全建议和最佳实践。这些安全基准旨在帮助组织评估和加强其Kubernetes集群的安全性。

        Kubernetes CIS基准:https://www.cisecurity.org/benchmark/kubernetes/

 CIS K8s安全基准测试工具(kube-bench)

        kube-bench是由容器安全企业Aquasecurity开发的一款工具,它基于CIS为Kubernetes制定的安全标准,专门用于评估Kubernetes集群的安全配置。这个工具主要的功能包括检测存在安全隐患的配置项、文件权限设置、账户安全及暴露的端口等多个方面。通过这些检查,kube-bench帮助用户识别并修正Kubernetes集群中可能存在的安全问题,进而增强集群的安全性。

项目地址:https://github.com/aquasecurity/kube-bench

kube-bench部署

1、下载二进制包

https://github.com/aquasecurity/kube-bench/releases

2、解压使用

  1. tar zxvf kube-bench_0.6.3_linux_amd64.tar.gz
  2. mkdir /etc/kube-bench # 创建默认配置文件路径
  3. mv cfg /etc/kube-bench/cfg

kube-bench使用

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


kube-bench配置

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就不会执行该项检查。

  1. 处理方式

  2. 测试条件

kube-bench运行示例

输出结果分为不同的部分,每部分检查 Kubernetes 的特定安全性方面,比如 API 服务器的配置、控制器管理器、调度器等。每项检查后面标记了“PASS”、“WARN”或“FAIL”,分别表示通过、警告或失败。警告和失败项通常需要人工检查或更正。例如,“FAIL”可能表明配置不符合安全最佳实践,而“WARN”可能意味着某些安全特性没有被启用或需要人工确认配置是否正确。

  • “PASS”:表示检查项符合安全推荐。
  • “WARN”:表示配置可能存在风险,建议进行检查。
  • “FAIL”:表示配置不符合安全推荐,需要采取措施改进。

下图为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安全检查的结果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/465742
推荐阅读
相关标签
  

闽ICP备14008679号