• 开源工具系列7:Kube-bench


    导语

    Kube-Bench 是一个基于Go开发的应用程序,属于 Kubernete 的安全检测的工具。它可以帮助研究人员对部署的 Kubernete 进行安全检测。

    Kube-Bench 是什么

    • 从本质上来说,Kube-Bench 是一个基于Go开发的应用程序,属于 Kubernete 的安全检测的工具。它可以帮助研究人员对部署的 Kubernete 进行安全检测。
    • 可通过运行 CIS Kubernetes Benchmark 中记录的检查来检测,检测 Kubernetes 是否根据 CIS Kubernetes 基准中定义的安全最佳实践进行部署。
    • 测试规则需要通过 YAML 文件进行配置,因此我们可以轻松更新该工具的测试规则。

    安装 Kube-Bench

    如果您直接从命令行运行 kube-bench,您可能需要成为 root / sudo 才能访问所有配置文件。

    默认情况下,kube-bench 会尝试自动检测 Kubernetes 的运行版本,并将其映射到相应的 CIS Benchmark 版本。例如,Kubernetes 1.15 版本映射到 CIS Benchmark 版本 cis-1.15,这是对 Kubernetes 1.15 有效的基准版本。

    kube-bench 还尝试识别节点上运行的组件,并使用它来确定要运行哪些测试(例如,如果节点正在运行 API 服务器,则只运行主节点测试)。

    注意

    请注意 ,使用 kube-bench 无法检查托管集群的主节点,例如 GKE、EKS、AKS 和 ACK,因为人们无法访问这些节点,尽管仍然可以使用 kube-bench 检查 worker这些环境中的节点配置。

    无法检查托管集群的主节点,例如 GKE、EKS、AKS 和 ACK,使用 kube-bench 作为一个无法访问这些节点,尽管仍然可以使用 kube-bench 检查这些环境中的工作节点配置。

    运行 Kube-Bench

    在容器内运行

    您可以避免在主机上安装 kube-bench,方法是使用主机 PID 命名空间在容器内运行它,并挂载配置和其他文件位于主机上的 /etc 和 /var 目录,以便 kube-bench 可以检查它们的存在和权限。

    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 凭据。例如:

    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/ 中的默认配置之上

    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 集群中运行

    您可以在 pod 内运行 kube-bench,但它需要访问主机的 PID 命名空间以检查正在运行的进程,以及访问主机上存储配置文件和其他文件的某些目录。

    提供的 job.yaml 文件可用于将测试作为作业运行。例如:

    1. $ kubectl apply -f job.yaml
    2. job.batch/kube-bench created
    3. $ kubectl get pods
    4. NAME READY STATUS RESTARTS AGE
    5. kube-bench-j76s9 0/1 ContainerCreating 0 3s
    6. # Wait for a few seconds for the job to complete
    7. $ kubectl get pods
    8. NAME READY STATUS RESTARTS AGE
    9. kube-bench-j76s9 0/1 Completed 0 11s
    10. # The results are held in the pod's logs
    11. kubectl logs kube-bench-j76s9
    12. [INFO] 1 Master Node Security Configuration
    13. [INFO] 1.1 API Server
    14. ...

    要在主节点上运行测试,需要在该节点上安排 pod。这涉及在 pod 规范中设置 nodeSelector 和容忍度。

    自 Kubernetes 1.11 以来,应用于主节点的默认标签发生了变化,因此如果您使用的是旧版本,则可能需要修改 nodeSelector 和 tolerations 才能在主节点上运行作业。

    启动 Kube-Bench

    有多种运行 Kube-Bench 的方法。您可以在 pod 内运行 Kube-Bench,但它需要访问主机的 PID 命名空间以检查正在运行的进程,以及访问主机上存储配置文件和其他文件的某些目录。

    提供的 job.yaml 文件可用于将测试作为作业运行。例如:

    1. $ kubectl apply -f job.yaml
    2. job.batch/Kube-Bench created
    3. $ kubectl get pods
    4. NAME READY STATUS RESTARTS AGE
    5. Kube-Bench-j76s9 0/1 ContainerCreating 0 3s
    6. # Wait for a few seconds for the job to complete
    7. $ kubectl get pods
    8. NAME READY STATUS RESTARTS AGE
    9. Kube-Bench-j76s9 0/1 Completed 0 11s
    10. # The results are held in the pod's logs
    11. kubectl logs Kube-Bench-j76s9
    12. [INFO] 1 Master Node Security Configuration
    13. [INFO] 1.1 API Server
    14. ...

    获取 Kube-Bench 结果

    1. $ kubectl apply -f job.yaml
    2. job.batch/kube-bench created
    3. $ kubectl get pods
    4. NAME READY STATUS RESTARTS AGE
    5. kube-bench-j76s9 0/1 ContainerCreating 0 3s
    6. # Wait for a few seconds for the job to complete
    7. $ kubectl get pods
    8. NAME READY STATUS RESTARTS AGE
    9. kube-bench-j76s9 0/1 Completed 0 11s

    Kube-Bench 结果

    1. # The results are held in the pod's logs
    2. kubectl logs kube-bench-j76s9
    3. [INFO] 1 Master Node Security Configuration
    4. [INFO] 1.1 API Server
    5. ...

    检测结果内容示例

    注意事项

    1. Kube-Bench 尽可能接近地实现 CIS Kubernetes Benchmark 。如果 Kube-Bench 没有按照 Benchmark 中的描述正确执行安全测试,请在这里提出问题。要报告基准本身的问题(例如,您认为不合适的测试),请加入 CIS 社区。
    2. Kubernetes 版本和 CIS 基准测试版本之间没有一对一的映射。请参阅 CIS Kubernetes 基准支持,了解不同版本的基准涵盖了哪些 Kubernetes 版本。
    3. Kube-Bench 无法检查受管集群的主节点,例如 GKE、EKS 和 AKS,因为 Kube-Bench 不能访问这些节点。不过,Kube-Bench 在这些环境中仍然可以检查 worker 节点配置。
    4. 默认情况下,Kube-Bench 会根据机器上运行的 Kubernetes 版本来确定要运行的测试集。

    Kube-Bench 项目信息

    Github 项目地址:

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

    关于HummerRisk

    HummerRisk 是开源的云原生安全平台,以非侵入的方式解决云原生的安全和治理问题,核心能力包括混合云的安全治理和K8S容器云安全检测。

    Github 地址:https://github.com/HummerRisk/HummerRisk

    Gitee 地址:https://gitee.com/hummercloud/HummerRisk

  • 相关阅读:
    实战|如何低成本训练一个可以超越 70B Llama2 的模型 Zephyr-7B
    java进阶之路
    LDO基础知识
    c++基础2
    Java设计模式七大原则-里氏替换原则
    不止于“算”,开放计算加速技术落地和行业赋能
    无涯教程-JavaScript - ADDRESS函数
    详解MySQL的MVCC(ReadView部分解析C++源码)
    Linux命令200例:dnsconf用于配置和管理域名解析服务
    197、管理 RabbitMQ 的虚拟主机
  • 原文地址:https://blog.csdn.net/wolaisongfendi/article/details/130562261