全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:实现集群安全CIS基线检查

更新时间:Dec 22, 2023

在金融服务、医疗保健、政企业务等场景下,如果您的ACK集群需要符合CIS Kubernetes基线标准,您可以使用集群安全CIS基线检查,扫描集群的Worker节点安全配置、Kubernetes策略、三方托管服务。您可以调整或修复扫描的问题,以提升集群可用性和安全性。

前提条件

CIS Kubernetes基线介绍

CIS(互联网安全中心,Center for Internet Security)针对一些常见的系统制定了一套安全配置指南,称之为基线(Benchmark)。CIS基线由一组互联网安全专家共同讨论和制定的,这些安全指南被政府、企业和学术机构广泛认可和执行。

CIS Kubernetes基线是针对开源Kubernetes发行版本所编写的,旨在尽可能广泛应用于各个发行版本,同时不同的基线版本与特定的Kubernetes版本相关联。更多信息,请参见CIS Kubernetes基线

CIS也推出了更符合各大云厂商实际场景的CIS Kubernetes基线,例如针对ACK场景的CIS基线,即CIS Alibaba Cloud Container Service For Kubernetes(ACK)Benchmark。

使用security-inspector组件实现集群安全CIS基线检查

通过以下步骤,您可以基于CIS Kubernetes基线标准扫描集群,并获取CSV格式的结果报告。

  1. 使用以下命令创建一个扫描任务。

    执行CIS基线检查,程序会根据集群版本选择合适的基线版本进行检查。

    kubectl apply -f - <<EOF
    apiVersion: securityinspector.alibabacloud.com/v1alpha1
    kind: BenchmarkTask
    metadata:
      name: cis-kubernetes-benchmark
    spec:
      benchmarkVersion: 'cis-kubernetes-auto'
    ---
    apiVersion: securityinspector.alibabacloud.com/v1alpha1
    kind: BenchmarkJob
    metadata:
      name: cis-kubernetes-benchmark
    spec:
      taskName: cis-kubernetes-benchmark
    EOF

    以上命令中benchmarkVersion字段的可用值如下,您可以根据需要选取合适的值(推荐使用cis-kubernetes-auto)。

    benchmarkVersion字段的值

    含义

    支持的集群版本

    cis-kubernetes-auto

    由组件根据集群版本自动选择最合适的CIS Kubernetes基线标准进行扫描。

    v1.15及以上版本

    cis-kubernetes-ack-1.0

    按照CIS Alibaba Cloud Container Service For Kubernetes(ACK)Benchmark v1.0.0基线标准进行扫描。

    v1.18及以上版本

    cis-kubernetes-1.20

    按照CIS Kubernetes V1.20 Benchmark v1.0.0基线标准进行扫描。

    v1.20及以上版本

    cis-kubernetes-1.6

    按照CIS Kubernetes Benchmark v1.6.0基线标准进行扫描。

    v1.16~v1.19版本

    cis-kubernetes-1.5

    按照CIS Kubernetes Benchmark v1.5.1基线标准进行扫描。

    v1.15版本

  2. 等待5分钟左右,通过以下命令确认本次扫描任务是否完成。

    kubectl get benchmarkjobs.securityinspector.alibabacloud.com cis-kubernetes-benchmark -o 'jsonpath={.status.phase}'; echo

    命令执行后返回Succeeded即表示扫描完成。

  3. 确认扫描完成后,执行以下命令获取本次扫描结果的CSV格式报告。

    for name in $(kubectl get benchmarkcsvresults.securityinspector.alibabacloud.com -l securityinspector.task.name=cis-kubernetes-benchmark -o name)
    do
      filename="cis-$(echo $name | awk -F '/' '{print $2}')"; \
      kubectl get $name -o jsonpath='{.result.data}' > "$filename".csv; \
      echo "saved $filename.csv"
    done

    获取到报告后,请根据实际业务场景判断是否需要采取措施。报告解读如下。

报告解读

上文扫描获取报告中的各列的说明如下表。

列名

含义

是否需要采取措施

Date

扫描时间

Result Schema

扫描时遵照的基线标准。取值如下:

  • cis-kubernetes-ack-1.0:CIS Alibaba Cloud Container Service For Kubernetes (ACK) Benchmark v1.0.0基线标准。

  • cis-kubernetes-1.20:CIS Kubernetes V1.20 Benchmark v1.0.0基线标准。

  • cis-kubernetes-1.6:CIS Kubernetes Benchmark v1.6.0基线标准。

  • cis-kubernetes-1.5:CIS Kubernetes Benchmark v1.5.1基线标准。

关于各个基线标准的具体内容,请参见CIS Kubernetes基线标准文档

Node Name

当前报告是哪个集群节点的扫描报告。

Total Fail

计分检查项未通过数量。

关于说明信息,请参见下方Result列的说明。

Total Warn

需要关注的不计分检查项数量。

关于说明信息,请参见下方Result列的说明。

Total Pass

检查项通过数量。

Section Id

CIS基线标准中定义的章节编号。

Section Description

CIS基线标准中定义的章节简述。

Test Id

CIS基线标准中定义的检查项ID。

Test Description

CIS基线标准中定义的检查项简述。

Scored

检查项是否计分。取值如下:

  • Scored:计分。

  • Not scored:不计分。

Test Remediation

检查项失败时推荐的调整或修复方法。

更多信息,请参见CIS Kubernetes基线标准文档

关于说明信息,请参见下方Result列的说明。

Result

检查项结果。取值如下:

  • fail:计分检查项未通过。

  • warn:检查项不计分,需要关注。

  • pass:检查通过。

各个值可采取的措施如下:

  • fail:强烈建议根据Test Remediation列的推荐方法进行调整或修复。您也可以根据您的实际业务场景来判断是否调整或修复。

  • warn:保持关注,根据实际业务场景进行调整。

  • pass:无需采取措施。