使用 Scan

Scan 是用于运行和管理单个合规扫描(针对一个 profile)的资源。

何时使用 Scan

当您需要以下操作时,请使用 Scan

  • 单独运行一个 profile
  • 快速验证一个目标,而无需创建批量资源
  • 直接管理单个合规基线的执行
  • 运行独立的操作系统扫描,例如 stig-os-microos

当您需要管理多个 profile 或安排重复运行时,请使用使用 ScanSuite

基本 Scan 示例

apiVersion: compliance.security.alauda.io/v1alpha1
kind: Scan
metadata:
  name: cis-controlplane-scan
  namespace: compliance-system
spec:
  profile: cis-k8s-controlplane
  scanType: node
  nodeScopeStrategy: auto
  targetNodeRoles:
    - control-plane
  maxHistoricalResults: 3

操作系统扫描示例

apiVersion: compliance.security.alauda.io/v1alpha1
kind: Scan
metadata:
  name: os-scan
  namespace: compliance-system
spec:
  profile: stig-os-microos
  scanType: node

Scan 参数

下表描述了 Scan 资源的顶层参数:

参数类型描述
spec.profilestring与此 Scan 关联的 profile。一个 Scan 仅引用一个 profile。
spec.scanTypestring可选。支持 platformnodeall。在 platform 模式下,系统仅扫描 Kubernetes 资源;在 node 模式下,系统仅扫描节点文件。
spec.nodeScopeStrategystringKubernetes 扫描时可选。支持 automanual。auto 模式根据规则特定的范围定义选择节点;manual 模式则在指定节点上执行所有规则。
spec.targetNodeRolesarray可选。限制节点角色。有效值包括 control-planeworker。配置后与 nodeScopeStrategy 一起参与节点过滤。
spec.nodeSelectorobject可选。使用节点标签进行选择。配置后与 nodeScopeStrategy 一起参与节点过滤。
spec.maxHistoricalResultsint可选。此 Scan 保留的历史结果数量(默认值:5)。
spec.reportDeliveryobject可选。生成报告的投递配置。目前支持邮件投递。

报告投递参数

如果配置了 spec.reportDelivery,以下字段用于邮件投递:

参数类型描述
spec.reportDelivery.email.enabledboolean启用由 Scan 生成报告的邮件投递。
spec.reportDelivery.email.recipientsRef.namestring定义邮件接收者的 ConfigMap 名称。

节点选择说明

对于 Scan,节点选择和调度字段直接配置在 spec 下。

详细行为请参见节点选择和调度,包括 scanTypenodeScopeStrategytargetNodeRolesnodeSelector

重要说明:

  • 操作系统扫描需要 scanType: node
  • CIS 仅支持 scanType: node;不支持 platformall,因为 kube-bench 不支持规则级别的节点选择。
  • STIG 支持 platformnodeall

Scan 注解

以下注解可用于控制 Scan 执行:

注解作用域描述
compliance.security.alauda.io/force-scan: "true"k8s, os手动触发立即执行 Scan。执行完成后自动重置为 false

监控 Scan 结果

查看 Scan 状态和结果:

# 查看单个 Scan
kubectl get scan os-scan -n compliance-system -o wide

# 查看所有 Scan
kubectl get scan -n compliance-system -o wide