在金融服务、医疗保健、政企业务等场景下,如果您的ACK集群需要符合CIS Kubernetes基线标准,您可以使用集群安全CIS基线检查,扫描集群的Worker节点安全配置、Kubernetes策略、三方托管服务。您可以调整或修复扫描的问题,以提升集群可用性和安全性。
前提条件
已创建ACK托管集群或ACK专有集群。具体操作,请参见创建Kubernetes托管版集群、创建Kubernetes专有版集群。
已在集群中安装security-inspector组件。具体操作,请参见管理组件。
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格式的结果报告。
使用以下命令创建一个扫描任务。
执行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版本
等待5分钟左右,通过以下命令确认本次扫描任务是否完成。
kubectl get benchmarkjobs.securityinspector.alibabacloud.com cis-kubernetes-benchmark -o 'jsonpath={.status.phase}'; echo
命令执行后返回
Succeeded
即表示扫描完成。确认扫描完成后,执行以下命令获取本次扫描结果的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基线标准文档。 | 否 |
Node Name | 当前报告是哪个集群节点的扫描报告。 | 否 |
Total Fail | 计分检查项未通过数量。 | 关于说明信息,请参见下方Result列的说明。 |
Total Warn | 需要关注的不计分检查项数量。 | 关于说明信息,请参见下方Result列的说明。 |
Total Pass | 检查项通过数量。 | 否 |
Section Id | CIS基线标准中定义的章节编号。 | 否 |
Section Description | CIS基线标准中定义的章节简述。 | 否 |
Test Id | CIS基线标准中定义的检查项ID。 | 否 |
Test Description | CIS基线标准中定义的检查项简述。 | 否 |
Scored | 检查项是否计分。取值如下:
| 否 |
Test Remediation | 检查项失败时推荐的调整或修复方法。 更多信息,请参见CIS Kubernetes基线标准文档。 | 关于说明信息,请参见下方Result列的说明。 |
Result | 检查项结果。取值如下:
| 各个值可采取的措施如下:
|
- 本页导读 (1)