×

重新初始化数据库

如果文件完整性操作员检测到计划中的更改,则可能需要重新初始化数据库。

步骤
  • 使用file-integrity.openshift.io/re-init注释FileIntegrity自定义资源 (CR)

    $ oc annotate fileintegrities/worker-fileintegrity file-integrity.openshift.io/re-init=

    旧数据库和日志文件将被备份,并初始化一个新数据库。旧数据库和日志保留在节点上的/etc/kubernetes下,如下面使用oc debug生成的 pod 输出所示。

    示例输出
     ls -lR /host/etc/kubernetes/aide.*
    -rw-------. 1 root root 1839782 Sep 17 15:08 /host/etc/kubernetes/aide.db.gz
    -rw-------. 1 root root 1839783 Sep 17 14:30 /host/etc/kubernetes/aide.db.gz.backup-20200917T15_07_38
    -rw-------. 1 root root   73728 Sep 17 15:07 /host/etc/kubernetes/aide.db.gz.backup-20200917T15_07_55
    -rw-r--r--. 1 root root       0 Sep 17 15:08 /host/etc/kubernetes/aide.log
    -rw-------. 1 root root     613 Sep 17 15:07 /host/etc/kubernetes/aide.log.backup-20200917T15_07_38
    -rw-r--r--. 1 root root       0 Sep 17 15:07 /host/etc/kubernetes/aide.log.backup-20200917T15_07_55

    为了提供一定的记录持久性,生成的配置映射不属于FileIntegrity对象,因此需要手动清理。因此,任何之前的完整性失败仍将显示在FileIntegrityNodeStatus对象中。

机器配置集成

在 OpenShift Container Platform 4 中,集群节点配置通过MachineConfig对象交付。您可以假设由MachineConfig对象引起的的文件更改是预期的,并且不应导致文件完整性扫描失败。为了抑制由MachineConfig对象更新引起的文件更改,文件完整性操作员监视节点对象;当节点正在更新时,AIDE 扫描会在更新期间暂停。更新完成后,数据库将重新初始化,扫描将恢复。

此暂停和恢复逻辑仅适用于通过MachineConfig API 进行的更新,因为它们反映在节点对象注释中。

探索守护进程集

每个FileIntegrity对象代表对多个节点的扫描。扫描本身由守护进程集管理的 pod 执行。

要查找代表FileIntegrity对象的守护进程集,请运行

$ oc -n openshift-file-integrity get ds/aide-worker-fileintegrity

要列出该守护进程集中的 pod,请运行

$ oc -n openshift-file-integrity get pods -lapp=aide-worker-fileintegrity

要查看单个 AIDE pod 的日志,请对其中一个 pod 调用oc logs

$ oc -n openshift-file-integrity logs pod/aide-worker-fileintegrity-mr8x6
示例输出
Starting the AIDE runner daemon
initializing AIDE db
initialization finished
running aide check
...

AIDE 守护进程创建的配置映射不会保留,并在文件完整性操作员处理它们后被删除。但是,在发生故障和错误时,这些配置映射的内容将复制到FileIntegrityNodeStatus对象指向的配置映射。