1 基础简介

本文基于 k8s安全01–云安全简介 继续介绍几个常用的安全工具和安全配置,后续会在此文中持续更新相关的安全工具。

2 安全工具与运行时

2.1 CIS-Cat

CIS-Cat 是 The Center for Internet Security, Inc. (CIS®) 开发提供的一个免费工具,可以用来先检测系统中安全事项,以便于用户调整优化系统安全。

  1. 安装jdk,笔者使用 v3 的CIS-Cat工具,需要使用jdk1.8.* 或者openjdk11版本的jdk。
    直接:
    apt-get install openjdk-11-jdk -y
    或者下载jdk的bin文件,然后解压加入到环境变量:
    vim ~/.bashrc
    ......
    export JAVA_HOME=/home/xg/soft/jdk1.8.0_201
    export PATH=$JAVA_HOME/bin:$PATH
    
  2. 下载安装CIS-Cat工具
    安装:
    wget https://learn.cisecurity.org/e/799323/l-799323-2019-11-15-3v7x/2mnnf/\79038343?h=xWidc0ywLqO6rH0WMcM1VXE9q1_WfdjCoVQ-tL2jXks
    mv 79038343\?h\=xWidc0ywLqO6rH0WMcM1VXE9q1_WfdjCoVQ-tL2jXks CIS-Cat.zip
    apt-get update
    apt-get install unzip
    unzip CIS-Cat.zip
    执行并输出安全报告
    Assessor-CLI# bash Assessor-CLI.sh -i
    
  3. 执行输出测试报告
    执行起始输出信息:在这里插入图片描述
    选择测试项界面:
    在这里插入图片描述
    结果汇总:在这里插入图片描述
    输出完成后会生成一个html的测试报告,方便查看详细异常问题,如下图
    报告在report目录下, reports/kmaster-CIS_Ubuntu_Linux_18.04_LTS_Benchmark-20210627T023243Z.html
    在这里插入图片描述
    在这里插入图片描述

2.2 trivy

trivay 是一种适用于CI的简单而全面的容器漏洞扫描程序。其具备检测全面、使用简单、扫描快且无状态、易于安装等优点。

  1. 安装
    apt-get install wget apt-transport-https gnupg lsb-release -y
    wget -qO - https://aquasecurity.github.io/trivy-repo/deb/public.key | sudo apt-key add -
    echo deb https://aquasecurity.github.io/trivy-repo/deb $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list.d/trivy.list
    apt-get update
    apt-get install trivy -y
    $ trivy --version
    Version: 0.16.0
    
  2. 测试
    trivy image knqyf263/vuln-image:1.2.3
    检测有漏洞的 knqyf263/vuln-image:1.2.3镜像,可以发现很多漏洞
    
    在这里插入图片描述
    trivy --clear-cache image nginx
    检测最新的nginx,还是存在 一些漏洞的
    
    在这里插入图片描述
    docker pull alpine:3.14.0
    检测最新的alpine:3.14.0,无漏洞
    
    在这里插入图片描述

2.3 Secure Runtimes

RuntimeClass是需要在kube-apiserver和每个可能使用该运行时节点上的kubelets上启用的功能。我们可以在API服务器中创建对象,并在pod请求时声明引擎启动,但如果不配置后端,pod将永远不会达到就绪状态。
开启RuntimeClass方法见 docs/concepts/containers/runtime-class/#cri-configuration

vim runtimeclass.yaml
apiVersion: node.k8s.io/v1beta1
kind: RuntimeClass
metadata:
  name: gvisor
handler: runsc # 注意,如果使用的是docker(非containerd 和CRI),那么测试的时候最好将runsc更改为docker,否则无法正常拉起pod

kubectl create -f runtimeclass.yaml

vim gvisor-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: simple-gvisor
spec:
  runtimeClassName: gvisor
  containers:
  - name: secure-nginx
    image: nginx:1.19.6

kubectl create -f gvisor-pod.yaml

$ kubectl get po 
NAME                   READY   STATUS    RESTARTS   AGE
simple-gvisor          1/1     Running   0          65s
web-848bb65cf6-9lfgc   1/1     Running   1          9d

3 注意事项

  1. 使用 runtimeclass 的时候需要在集群中每个节点中开启 runtimeclass 的 handler,不开启的话无法正常拉起pod。

4 说明

  1. 软件环境
    ubuntu 环境18.04 server版本
    java 环境 1.8.0_201
    k8s 版本 1.19.4
  2. 参考文档
    CIS-CAT 介绍
    trivy github
    docs/concepts/containers/runtime-class
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐