Compliance Operator 用户指南

版本: 1.0.0
更新日期: 2026-06-08 适用对象: Kubernetes 集群管理员、安全工程师、运维人员

目录

  1. 产品简介
  2. 系统要求
  3. 安装部署
  4. 基础使用
  5. 高级功能
  6. 报告管理
  7. 配置参考
  8. 故障排查
  9. 常见问题
  10. 附录

1. 产品简介

1.1 什么是 Compliance Operator?

Compliance Operator 是一个基于 Kubernetes Operator 模式的自动化合规扫描工具,能够帮助您自动检测 Kubernetes 集群是否符合 CIS Benchmark 和 DISA STIG 等安全标准。

1.2 核心价值

  • 自动化扫描: 无需手动登录每个节点执行扫描命令
  • 统一管理: 通过 Kubernetes CRD 统一管理所有扫描任务
  • 历史记录: 自动保存扫描历史,支持趋势分析
  • 灵活调度: 支持定时扫描,实现持续合规监控
  • 丰富报告: 生成 HTML 和 JSON 格式的合规报告

1.3 工作原理

用户创建 ComplianceScan CRD
         ↓
Operator 解析配置并创建扫描 Job
         ↓
Job 在目标节点上执行扫描(kube-bench 或 OpenSCAP)
         ↓
Operator 收集扫描结果并存储到 ComplianceScanResult CRD
         ↓
用户查看结果或生成报告

单例模式: 同一时刻集群中只有一个 ComplianceScan CR 会被活跃处理。推荐使用单个 CR,通过修改 spec.scanner 并添加触发注解来切换扫描类型(参见 4.1.4 切换到 STIG 合规扫描)。


2. 系统要求

2.1 Kubernetes 集群要求

项目 最低要求 推荐配置
Kubernetes 版本 1.19+ 1.25+

2.2 客户端工具要求

工具 版本要求 用途
kubectl 1.19+ 与集群交互
Helm 3.2.0+ 安装 Chart(可选)

2.3 网络要求

  • Operator Pod 需要访问 Kubernetes API Server
  • 扫描 Job 需要访问节点文件系统(只读)
  • 如果使用定时扫描,需要集群内时间同步

3. 安装部署

3.1 使用 Helm 安装(推荐)

3.1.1 基础安装

# 从本地 Chart 安装
helm install compliance-operator ./charts/compliance-operator \
  --namespace compliance-operator-system \
  --create-namespace

3.1.2 从源码安装

# 克隆项目
git clone https://gitcode.com/openFuyao/compliance-operator.git
cd compliance-operator

# 安装
helm install compliance-operator ./charts/compliance-operator \
  --namespace compliance-operator-system \
  --create-namespace

3.1.3 自定义安装

# 使用自定义values 文件
helm install compliance-operator ./charts/compliance-operator \
  --namespace compliance-operator-system \
  --create-namespace \
  --values my-values.yaml

# 或通过命令行参数覆盖helm install compliance-operator ./charts/compliance-operator \
  --namespace compliance-operator-system \
  --create-namespace \
  --set replicaCount=3 \
  --set image.tag=v1.0.0

3.1.4 验证安装

# 检查 Pod 状态
kubectl get pods -n compliance-operator-system

# 预期输出:
# NAME                                  READY   STATUS    RESTARTS   AGE
# compliance-operator-xxx-xxx          1/1     Running   0          1m

# 检查 CRD
kubectl get crd | grep compliance

# 预期输出:
# compliancescans.compliance.openfuyao.cn
# compliancescanresults.compliance.openfuyao.cn
# compliancescannoderesults.compliance.openfuyao.cn

# 检查服务账户
kubectl get serviceaccount -n compliance-operator-system

# 预期输出:
# NAME                     SECRETS   AGE
# compliance-operator      0         1m
# compliance-scan-job      0         1m

3.2 使用 kubectl 安装

3.2.1 安装 CRD

kubectl apply -f config/crd/bases/

3.2.2 安装 RBAC

kubectl apply -f config/rbac/

3.2.3 安装 Operator

kubectl apply -f config/manager/

3.2.4 验证安装

kubectl get pods -n compliance-operator-system
kubectl get crd | grep compliance

3.3 升级

# 使用 Helm 升级
helm upgrade compliance-operator ./charts/compliance-operator \
  --namespace compliance-operator-system

# 或使用kubectl
kubectl apply -f config/

3.4 卸载

重要:卸载顺序很关键。 ComplianceScan 资源带有 finalizer(compliance.openfuyao.cn/scan-cleanup),需要 operator 在运行时处理清理逻辑(删除关联的扫描 Job 并移除 finalizer)。如果先卸载 operator 再删除 CR,CR 会永远卡在 Terminating 状态。

正确卸载步骤

# 第 1 步:删除所有 CR 实例(operator 仍在运行,能正常处理 finalizer 清理)
kubectl delete compliancescans --all
kubectl delete compliancescanresults --all
kubectl delete compliancescannoderesults --all

# 确认 CR 全部清除
kubectl get compliancescans,compliancescanresults,compliancescannoderesults

# 第 2 步:卸载 operator
helm uninstall compliance-operator -n compliance-operator-system

# 第 3 步:删除命名空间(可选)
kubectl delete namespace compliance-operator-system

# 第 4 步:删除 CRD 定义(可选,彻底清理)
kubectl delete crd compliancescans.compliance.openfuyao.cn
kubectl delete crd compliancescanresults.compliance.openfuyao.cn
kubectl delete crd compliancescannoderesults.compliance.openfuyao.cn

如果 CR 已经卡在 Terminating

如果 operator 已被卸载,CR 因 finalizer 无法移除而卡在 Terminating 状态,可手动移除 finalizer 解除:

# 查看卡住的 CR
kubectl get compliancescans -o wide

# 手动移除 finalizer
kubectl patch compliancescan <name> \
  -p '{"metadata":{"finalizers":[]}}' --type=merge

# 然后正常删除
kubectl delete compliancescan <name>

# 批量处理所有卡住的 CR
for name in $(kubectl get compliancescans -o jsonpath='{.items[*].metadata.name}'); do
  kubectl patch compliancescan "$name" \
    -p '{"metadata":{"finalizers":[]}}' --type=merge
  kubectl delete compliancescan "$name" --ignore-not-found
done

4. 基础使用

提示: CRD 资源支持以下简写形式,可在后续命令中使用:

资源全称 简写
compliancescans cs
compliancescanresults csr
compliancescannoderesults csnsr

例如 kubectl get cs 等同于 kubectl get compliancescans

4.1 创建扫描任务

Compliance Operator 同一时刻只处理一个 ComplianceScan CR(单例模式)。推荐使用单个 CR + 注解触发的方式来依次执行不同类型的扫描,无需反复删除和重建。

4.1.1 创建 CIS Benchmark 扫描

创建文件 scan.yaml

apiVersion: compliance.openfuyao.cn/v1alpha1
kind: ComplianceScan
metadata:
  name: scan
spec:
  scanner: kube-bench
  scanType: all
  benchmark: cis-1.12
  timeout: 30m
  maxHistory: 5

应用配置:

kubectl apply -f scan.yaml

4.1.2 scanType 说明

scanType 决定扫描哪些节点,可选值如下:

scanType 扫描目标 节点判定规则 适用场景
all(默认) 所有就绪节点 不区分角色 全面扫描,适用于首次合规检查
control-plane 控制平面节点 带有 node-role.kubernetes.io/control-planenode-role.kubernetes.io/master 标签的节点 API Server、etcd、Scheduler、Controller Manager 等组件检查
worker 工作节点 不带上述控制平面标签的节点 kubelet、容器运行时等工作负载层面检查

注意: Operator 会自动为所有扫描 Job 添加控制平面节点的容忍度(node-role.kubernetes.io/control-planenode-role.kubernetes.io/master),无需手动配置。如需额外容忍其他污点(如 GPU 节点),可在 spec.tolerations 中追加。

4.1.3 CIS Kubernetes Benchmark support

Source Kubernetes Benchmark kube-bench config Kubernetes versions
CIS 1.5.1 cis-1.5 1.15
CIS 1.6.0 cis-1.6 1.16-1.18
CIS 1.20 cis-1.20 1.19-1.21
CIS 1.23 cis-1.23 1.22-1.23
CIS 1.24 cis-1.24 1.24
CIS 1.7 cis-1.7 1.25
CIS 1.8 cis-1.8 1.26
CIS 1.9 cis-1.9 1.27
CIS 1.10 cis-1.10 1.28
CIS 1.11 cis-1.11 1.29-1.31
CIS 1.12 cis-1.12 1.32-1.34

4.1.4 切换到 STIG 合规扫描

扫描完成后,修改 scanner 字段并添加触发注解,即可用同一个 CR 执行不同类型的扫描:

# 1. 修改扫描器类型和相关参数
kubectl patch compliancescan scan --type merge \
  -p '{"spec":{"scanner":"openscap","scanType":"all","timeout":"30m"}}'

# 2. 添加触发注解,启动新一轮扫描
kubectl annotate compliancescan scan compliance.openfuyao.cn/trigger="$(date +%s)" --overwrite

说明: 添加 compliance.openfuyao.cn/trigger 注解后,Operator 会将扫描重置为 Pending 状态并使用新的扫描器重新执行。注解在触发后会被自动移除。

4.1.5 再次执行相同扫描

如需重新执行当前配置的扫描(不修改任何参数),只需添加触发注解:

kubectl annotate compliancescan scan compliance.openfuyao.cn/trigger="$(date +%s)" --overwrite

4.2 查看扫描状态

4.2.1 查看扫描

kubectl get compliancescans

输出示例:

NAME    SCANNER      PHASE     RESULT         LASTSCAN   AGE
scan   kube-bench   Running   NonCompliant   29s        129m

4.2.2 实时监控扫描进度

kubectl get compliancescans -w

4.2.3 查看扫描详情

kubectl get compliancescan scan -o yaml

4.2.4 查看扫描事件

kubectl describe compliancescan scan

4.3 查看扫描结果

4.3.1 查看所有扫描结果

kubectl get compliancescanresults

输出示例:

NAME                    SCAN  PASS  FAIL  WARN  TOTAL AGE
scan-20260529-120000    scan  85    15    5     105   10m

4.3.2 查看结果详情

kubectl get compliancescanresult scan-20260529-120000 -o yaml

4.3.3 查看结果摘要

kubectl get compliancescanresults -o custom-columns=\
NAME:.metadata.name,\
SCAN:.spec.scanName,\
PASS:.spec.summary.pass,\
FAIL:.spec.summary.fail,\
WARN:.spec.summary.warn,\
TOTAL:.spec.summary.total

4.4 管理扫描任务

4.4.1 重新运行扫描

扫描完成后(状态为 DoneFailed),添加触发注解即可重新执行:

kubectl annotate compliancescan scan compliance.openfuyao.cn/trigger="$(date +%s)" --overwrite

4.4.2 更新扫描配置

修改配置后需要添加触发注解使变更生效:

# 编辑扫描配置
kubectl edit compliancescan scan

# 添加触发注解启动新一轮扫描
kubectl annotate compliancescan scan compliance.openfuyao.cn/trigger="$(date +%s)" --overwrite

4.4.3 删除扫描任务

# 删除扫描任务(不会删除历史结果)
kubectl delete compliancescan scan

5. 高级功能

5.1 定时扫描

5.1.1 创建定时扫描任务

创建文件 scheduled-scan.yaml

apiVersion: compliance.openfuyao.cn/v1alpha1
kind: ComplianceScan
metadata:
  name: weekly-cis-scan
spec:
  scanner: kube-bench
  scanType: all
  benchmark: cis-1.12
  schedule: "0 2 * * 0"  # 每周日凌晨2 点执行
  timeout: 30m
  maxHistory: 10

应用配置:

kubectl apply -f scheduled-scan.yaml

5.1.2 Cron 表达式说明

┌───────────── 分钟 (0 - 59)
│┌───────────── 小时 (0 - 23)
││┌───────────── 日期 (1 - 31)
│││┌───────────── 月份 (1 - 12)
││││┌───────────── 星期几(0 - 6, 0=周日)
│││││* * * * *

常用示例:

  • "0 2 * * *" - 每天凌晨 2 点
  • "0 2 * * 0" - 每周日凌晨 2 点
  • "0 2 1 * *" - 每月 1 日凌晨 2 点
  • "*/30 * * * *" - 每 30 分钟
  • "0 */2 * * *" - 每 2 小时

5.1.3 查看下次扫描时间

kubectl get compliancescan weekly-cis-scan -o jsonpath='{.status.nextScheduleTime}'

5.2 节点选择

5.2.1 使用节点标签

创建文件 labeled-scan.yaml

apiVersion: compliance.openfuyao.cn/v1alpha1
kind: ComplianceScan
metadata:
  name: production-scan
spec:
  scanner: kube-bench
  scanType: all
  benchmark: cis-1.12
  nodeSelector:
    environment: production
  timeout: 30m
  maxHistory: 5

应用配置:

kubectl apply -f labeled-scan.yaml

5.2.2 使用容忍度

创建文件 toleration-scan.yaml

apiVersion: compliance.openfuyao.cn/v1alpha1
kind: ComplianceScan
metadata:
  name: master-scan
spec:
  scanner: kube-bench
  scanType: control-plane
  benchmark: cis-1.12
  tolerations:
  - key: node-role.kubernetes.io/master
    operator: Exists
    effect: NoSchedule
  timeout: 30m
  maxHistory: 5

应用配置:

kubectl apply -f toleration-scan.yaml

5.3 扫描历史管理

5.3.1 查看扫描历史

kubectl get compliancescan scan \
  -o jsonpath='{.status.scanHistory}' | jq

输出示例:

[
  {
    "scanID": "20260529-120000-abcdef12",
    "scanTime": "2026-05-29T12:00:00Z",
    "phase": "Done",
    "result": "NonCompliant",
    "summary": {
      "pass": 85,
      "fail": 15,
      "warn": 5,
      "total": 105
    },
    "resultRef": "scan-20260529-120000"
  }
]

5.3.2 查看特定历史记录

kubectl get compliancescanresult scan-20260529-120000 -o yaml

5.3.3 清理历史记录

历史记录会自动管理(根据maxHistory 配置),也可以手动清理:

# 删除特定历史记录
kubectl delete compliancescanresult scan-20260529-120000

# 删除所有历史记录(谨慎使用)
kubectl delete compliancescanresults -l compliance.openfuyao.cn/scan-name=scan

6. 报告管理

6.1 生成报告

6.1.1 生成 HTML 报告

不指定扫描ID时,默认生成最新一次的报告。

# 生成所有节点的报告
kubectl exec -n compliance-operator-system deploy/compliance-operator -- \
  /compliance-operator report scan --format html > report.html

# 生成特定扫描 ID 的报告
kubectl exec -n compliance-operator-system deploy/compliance-operator -- \
  /compliance-operator report scan \
  --scan-id 20260529-120000-abcdef12 --format html > specific-report.html

# 生成特定节点的报告
kubectl exec -n compliance-operator-system deploy/compliance-operator -- \
  /compliance-operator report scan \
  --node worker-1 --format html > worker-1-report.html

6.1.2 生成 JSON 报告

kubectl exec -n compliance-operator-system deploy/compliance-operator -- \
  /compliance-operator report scan --format json > report.json

6.1.3 报告参数说明

参数 说明 示例
--format 报告格式(html 或json) --format html
--scan-id 特定扫描 ID --scan-id 20260529-120000
--node 特定节点名称 --node worker-1
--o 输出文件路径 --o /tmp/report.html

7. 配置参考

7.1 ComplianceScan CRD 完整配置

apiVersion: compliance.openfuyao.cn/v1alpha1
kind: ComplianceScan
metadata:
  name: example-scan
  labels:
    app: compliance
    environment: production
  annotations:
    description: "Production cluster CIS scan"
spec:
  # 扫描器类型(必填)  # 可选值:kube-bench, openscap
  scanner: kube-bench
  
  # 扫描目标类型(可选,默认:all)  # 可选值:control-plane, worker, all
  scanType: all
  
  # CIS Benchmark 版本(可选,仅kube-bench 使用) 
  benchmark: cis-1.12
  
  # STIG 配置文件(可选,仅openscap 使用)
  # 格式: xccdf_mil.disa.stig_profile_MAC-<level>_<classification>
  profile: xccdf_mil.disa.stig_profile_MAC-1_Classified
  
  # 扫描超时时间(可选,默认:30m)
  # 格式:数字+单位(s=秒, m=分钟, h=小时)
  timeout: 30m
  
  # 历史记录保留数量(可选,默认:5)
  # 范围:1-20
  maxHistory: 5
  
  # 定时扫描 Cron 表达式(可选)
  # 格式:标准Cron 表达式  schedule: "0 2 * * 0"
  
  # 节点选择器(可选)
  nodeSelector:
    environment: production
    tier: backend
  
  # 容忍度(可选)
  tolerations:
  - key: node-role.kubernetes.io/master
    operator: Exists
    effect: NoSchedule
  - key: dedicated
    operator: Equal
    value: special-user
    effect: NoSchedule
  
  # 扫描作业资源配置(可选)
  resources:
    limits:
      cpu: 1000m
      memory: 512Mi
    requests:
      cpu: 200m
      memory: 256Mi
  
  # 镜像拉取策略(可选,默认:IfNotPresent)
  # 可选值:Always, IfNotPresent, Never
  imagePullPolicy: IfNotPresent
  
  # 私有仓库认证 Secret 引用列表(可选)
  imagePullSecrets:
    - name: harbor-secret
  
  # 扫描 Job Pod 优先级类名(可选)
  priorityClassName: "compliance-scan-low"

status:
  # 扫描状态(只读)  phase: Done
  
  # 最后扫描时间(只读)  lastScanTime: "2026-05-29T12:00:00Z"
  
  # 最后扫描ID(只读)
  lastScanID: "20260529-120000-abcdef12"
  
  # 最后扫描结果(只读)  # 可选值:Compliant, NonCompliant, Error
  lastScanResult: NonCompliant
  
  # 下次扫描时间(只读,仅定时扫描)
  nextScheduleTime: "2026-06-05T02:00:00Z"
  
  # 扫描历史(只读)
  scanHistory:
  - scanID: "20260529-120000-abcdef12"
    scanTime: "2026-05-29T12:00:00Z"
    phase: Done
    result: NonCompliant
    summary:
      pass: 85
      fail: 15
      warn: 5
      total: 105
    resultRef: "example-scan-20260529-120000"

7.2 Helm Chart 完整配置

详细配置请参考Helm Chart README

主要配置项:

# 副本数
replicaCount: 1

# 镜像配置
image:
  repository: cr.openfuyao.cn/openfuyao/compliance-operator
  tag: "latest"
  pullPolicy: IfNotPresent
  pullSecrets: []

# 服务账户注解(如用于云 IAM 绑定)
serviceAccount:
  annotations: {}
  scanJobAnnotations: {}

# Controller Runtime 配置
controller:
  leaderElect: true
  maxConcurrentReconciles: 1
  priorityClassName: ""
  logging:
    devMode: true

# 扫描作业配置
scanJob:
  defaultTimeout: 30
  defaultMaxHistory: 5
  resources:
    limits:
      cpu: 1000m
      memory: 512Mi
    requests:
      cpu: 200m
      memory: 256Mi
  images:
    kubeBench:
      repository: hub.oepkgs.net/openfuyao/aquasec/kube-bench
      tag: "v0.15.6"
    openSCAP:
      repository: cr.openfuyao.cn/openfuyao/openscap
      tag: "1.4.4"

# Operator 资源配置
resources:
  limits:
    cpu: 1000m
    memory: 1024Mi
  requests:
    cpu: 250m
    memory: 256Mi

# 节点选择器
nodeSelector: {}

# 容忍度
tolerations:
  - key: node-role.kubernetes.io/control-plane
    operator: Exists
    effect: NoSchedule
  - key: node-role.kubernetes.io/master
    operator: Exists
    effect: NoSchedule

# 亲和性
affinity: {}

# Metrics 配置
metrics:
  enabled: false
  type: ClusterIP

# ServiceMonitor 配置(用于 Prometheus Operator)
serviceMonitor:
  enabled: false
  interval: 30s
  scrapeTimeout: 10s

# 健康检查配置
health:
  startupProbe:
    initialDelaySeconds: 5
    periodSeconds: 5
    failureThreshold: 30
  livenessProbe:
    initialDelaySeconds: 15
    periodSeconds: 20
  readinessProbe:
    initialDelaySeconds: 5
    periodSeconds: 10

# 网络策略配置
networkPolicy:
  enabled: false
  monitoringNamespace: "monitoring"

# Pod 中断预算
pdb:
  minAvailable: 1

8. 故障排查

8.1 常见问题诊断

8.1.1 Operator Pod 无法启动

症状:

kubectl get pods -n compliance-operator-system
# NAME                                  READY   STATUS             RESTARTS   AGE
# compliance-operator-xxx-xxx          0/1     CrashLoopBackOff   5          5m

排查步骤:

  1. 查看 Pod 日志
kubectl logs -n compliance-operator-system deploy/compliance-operator
  1. 检查Pod 事件
kubectl describe pod -n compliance-operator-system -l app.kubernetes.io/name=compliance-operator
  1. 检查RBAC 权限
kubectl auth can-i --list \
  --as=system:serviceaccount:compliance-operator-system:compliance-operator

常见原因:

  • 镜像拉取失败
  • RBAC 权限不足
  • 资源限制过低
  • 配置参数错误

8.1.2 扫描作业失败

症状:

kubectl get jobs -n compliance-operator-system
# NAME                COMPLETIONS   DURATION   AGE
# scan-xxx            0/1           5m         5m

排查步骤:

  1. 查看作业状态
kubectl describe job -n compliance-operator-system <job-name>
  1. 查看作业 Pod 日志
kubectl logs -n compliance-operator-system job/<job-name>
  1. 检查节点状态
kubectl get nodes
kubectl describe node <node-name>

常见原因:

  • 节点资源不足
  • hostPath 挂载失败
  • 扫描器镜像问题
  • 节点不满足调度条件

8.1.3 CRD 未安装

症状:

kubectl get crd | grep compliance
# No resources found

解决方法:

# 手动安装 CRD
kubectl apply -f charts/compliance-operator/crds/

# 验证安装
kubectl get crd | grep compliance

8.1.4 权限被拒绝

症状:

Error from server (Forbidden): compliancescans.compliance.openfuyao.cn is forbidden

排查步骤:

  1. 检查集群角色
kubectl get clusterrole | grep compliance
kubectl describe clusterrole compliance-operator-manager
  1. 检查集群角色绑定
kubectl get clusterrolebinding | grep compliance
kubectl describe clusterrolebinding compliance-operator-manager
  1. 验证服务账户
kubectl get serviceaccount -n compliance-operator-system

解决方法:

# 重新应用 RBAC 配置
kubectl apply -f config/rbac/

8.2 性能问题

8.2.1 扫描速度慢

可能原因:

  • 节点数量过多
  • 扫描作业资源限制过低
  • 网络延迟

解决方法:

  1. 增加扫描作业资源
spec:
  resources:
    limits:
      cpu: 2000m
      memory: 1Gi
  1. 减少并发扫描数
controller:
  maxConcurrentReconciles: 1
  1. 使用节点选择器限制扫描范围
spec:
  nodeSelector:
    scan-enabled: "true"

8.2.2 内存使用过高

可能原因:

  • 扫描结果过大
  • 历史记录过多
  • 内存泄漏

解决方法:

  1. 减少历史记录
spec:
  maxHistory: 3
  1. 增加 Operator 内存限制
resources:
  limits:
    memory: 512Mi

9. 常见问题

Q1: Compliance Operator 支持哪些 Kubernetes 版本?

A: Compliance Operator 支持 Kubernetes 1.19 及以上版本。推荐使用1.25+ 版本以获得最佳体验。

Q2: 扫描会影响集群性能吗?

A: 扫描作业会消耗一定的 CPU 和内存资源,但影响通常很小。建议在业务低峰期执行扫描,或通过资源限制控制影响。

Q3: 如何查看扫描进度?

A: 使用以下命令:

# 实时监控
kubectl get compliancescans -w

# 查看详情
kubectl describe compliancescan <scan-name>

Q4: 扫描失败后如何重试?

A: 扫描失败后(状态为 Failed),添加触发注解即可重新执行:

kubectl annotate compliancescan scan compliance.openfuyao.cn/trigger="$(date +%s)" --overwrite

Q5: 如何清理旧的扫描结果?

A: 历史记录会自动管理(根据 maxHistory 配置),也可以手动清理:

kubectl delete compliancescanresult <result-name>

Q6: 如何自定义扫描规则?

A: 目前不支持自定义规则。kube-bench 和 OpenSCAP 使用预定义的 CIS Benchmark 和STIG 规则。

Q7: Operator Pod 重启后扫描任务会丢失吗?

A: 不会。扫描任务存储在 etcd 中,Operator 重启后会自动恢复。

Q8: 为什么我的扫描状态显示 Ignored?

A: Compliance Operator 采用单例模式,同一时刻只处理一个 ComplianceScan CR(按创建时间排序,最早的优先)。如果误创建了多个 CR,后创建的会被标记为 Ignored

自动激活:当活跃的扫描被删除后,Ignored 状态的扫描会自动变为 Pending 并开始执行,无需手动干预。

推荐做法:只保留一个 CR,通过修改 spec.scanner 并添加触发注解来切换扫描类型(参见 4.1.4 切换到 STIG 合规扫描)。

# 删除多余的 CR,只保留一个
kubectl delete compliancescan <多余的扫描名称>

10. 附录

10.1 CIS Benchmark 检查项列表

详细的 CIS Benchmark 检查项列表请参考:

10.2 DISA STIG 规则列表

详细的 DISA STIG 规则列表请参考:

10.3 联系支持

如果您在使用过程中遇到问题,可以通过以下方式获取支持:


感谢您使用 Compliance Operator!如果这个工具对您有帮助,请给我们一个Star ⭐!