使用 Scan

Scan 是用于运行和管理单个合规扫描的资源,适用于一个 profile。

何时使用 Scan

在以下情况下使用 Scan:

  • 单独运行一个 profile
  • 在不创建 batch 资源的情况下快速验证一个目标
  • 直接管理单个合规基线的执行
  • 运行独立的 OS 扫描,例如 stig-os-example

当你需要将多个 profile 一起管理,或安排重复运行时,请改用 Using 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

OS 扫描示例

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

注意:stig-os-example 只是一个示例 profile 名称。请使用集群中实际可用的 profile 名称。

Scan 参数

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

参数类型描述
spec.profilestring与此 Scan 关联的 profile。一个 Scan 恰好引用一个 profile。
spec.scanTypestring可选。支持 platform、node 和 all。在 platform 模式下,系统仅扫描 Kubernetes 资源。在 node 模式下,系统仅扫描节点文件。
spec.nodeScopeStrategystringKubernetes 扫描可选。支持 auto 和 manual。在 auto 模式下,节点根据规则特定的作用域定义进行选择。在 manual 模式下,所有规则都会在指定节点上执行。
spec.targetNodeRolesarray可选。限制节点角色。有效值包括 control-plane 和 worker。配置后,它会与 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 下进行配置。

有关 scanType、nodeScopeStrategy、targetNodeRoles 和 nodeSelector 的详细行为,请参阅 Node Selection and Scheduling。

重要说明:

  • OS 扫描要求 scanType: node。
  • CIS 仅支持 scanType: node;不支持 platform 和 all,因为 kube-bench 不支持规则级节点选择。
  • STIG 支持 platform、node 和 all。

Scan 注解

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

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

监控 Scan 结果

要检查 Scan 的状态和结果:

# Check one Scan
kubectl get scan os-scan -n compliance-system -o wide

# Check all Scans
kubectl get scan -n compliance-system -o wide