×

查看 FileIntegrity 对象属性

与任何 Kubernetes 自定义资源 (CR) 一样,您可以运行 oc explain fileintegrity,然后使用以下命令查看各个属性:

$ oc explain fileintegrity.spec
$ oc explain fileintegrity.spec.config

重要属性

表 1. 重要的 specspec.config 属性
属性 描述

spec.nodeSelector

必须与节点标签匹配的关键值对映射,以便 AIDE Pod 才能在该节点上调度。典型用法是仅设置一个键值对,其中 node-role.kubernetes.io/worker: "" 将 AIDE 调度到所有工作节点上,node.openshift.io/os_id: "rhcos" 将其调度到所有 Red Hat Enterprise Linux CoreOS (RHCOS) 节点上。

spec.debug

一个布尔属性。如果设置为true,则在 AIDE 守护进程集中运行的守护进程将输出额外的信息。

spec.tolerations

指定容忍度,以便在具有自定义污点的节点上进行调度。如果未指定,则会应用默认容忍度,该容忍度允许在控制平面节点上运行。

spec.config.gracePeriod

AIDE 完整性检查之间暂停的秒数。在节点上频繁进行 AIDE 检查可能会占用大量资源,因此指定更长的间隔时间可能很有用。默认为900,即 15 分钟。

maxBackups

re-init过程中保留在节点上的 AIDE 数据库和日志备份的最大数量。超过此数量的旧备份将由守护进程自动清除。

spec.config.name

包含自定义 AIDE 配置的 ConfigMap 的名称。如果省略,则会创建默认配置。

spec.config.namespace

包含自定义 AIDE 配置的 ConfigMap 的命名空间。如果未设置,则 FIO 将生成适合 RHCOS 系统的默认配置。

spec.config.key

在由namenamespace指定的 ConfigMap 中包含实际 AIDE 配置的键。默认值为aide.conf

spec.config.initialDelay

开始第一次 AIDE 完整性检查之前等待的秒数。默认为 0。此属性是可选的。

检查默认配置

默认文件完整性操作员配置存储在与FileIntegrity CR 同名的 ConfigMap 中。

步骤
  • 要检查默认配置,请运行

    $ oc describe cm/worker-fileintegrity

了解默认文件完整性操作员配置

以下是 ConfigMap 的aide.conf键的摘录

@@define DBDIR /hostroot/etc/kubernetes
@@define LOGDIR /hostroot/etc/kubernetes
database=file:@@{DBDIR}/aide.db.gz
database_out=file:@@{DBDIR}/aide.db.gz
gzip_dbout=yes
verbose=5
report_url=file:@@{LOGDIR}/aide.log
report_url=stdout
PERMS = p+u+g+acl+selinux+xattrs
CONTENT_EX = sha512+ftype+p+u+g+n+acl+selinux+xattrs

/hostroot/boot/    	CONTENT_EX
/hostroot/root/\..* PERMS
/hostroot/root/   CONTENT_EX

FileIntegrity实例的默认配置涵盖以下目录下的文件:

  • /root

  • /boot

  • /usr

  • /etc

以下目录未涵盖:

  • /var

  • /opt

  • 一些 OpenShift Container Platform 特定的/etc/下的排除项

提供自定义 AIDE 配置

配置 AIDE 内部行为的任何条目(例如DBDIRLOGDIRdatabasedatabase_out)都将被操作员覆盖。操作员将在所有要监视完整性更改的路径之前添加前缀/hostroot/。这使得更容易重用现有的 AIDE 配置,这些配置通常可能并非针对容器化环境量身定制,并且从根目录开始。

/hostroot是运行 AIDE 的 Pod 挂载主机文件系统的目录。更改配置将触发数据库的重新初始化。

定义自定义文件完整性操作员配置

此示例侧重于为在控制平面节点上运行的扫描仪定义自定义配置,该扫描仪基于为worker-fileintegrity CR 提供的默认配置。如果您计划部署作为守护进程集运行并在控制平面节点上的/opt/mydaemon下存储其数据的自定义软件,此工作流程可能很有用。

步骤
  1. 复制默认配置。

  2. 使用必须监视或排除的文件编辑默认配置。

  3. 将编辑后的内容存储在新 ConfigMap 中。

  4. 通过spec.config中的属性将FileIntegrity对象指向新的 ConfigMap。

  5. 提取默认配置

    $ oc extract cm/worker-fileintegrity --keys=aide.conf

    这将创建一个名为aide.conf的文件,您可以对其进行编辑。为了说明操作员如何后处理路径,此示例添加了一个没有前缀的排除目录

    $ vim aide.conf
    示例输出
    /hostroot/etc/kubernetes/static-pod-resources
    !/hostroot/etc/kubernetes/aide.*
    !/hostroot/etc/kubernetes/manifests
    !/hostroot/etc/docker/certs.d
    !/hostroot/etc/selinux/targeted
    !/hostroot/etc/openvswitch/conf.db

    排除特定于控制平面节点的路径

    !/opt/mydaemon/

    将其他内容存储在/etc

    /hostroot/etc/	CONTENT_EX
  6. 基于此文件创建一个 ConfigMap

    $ oc create cm master-aide-conf --from-file=aide.conf
  7. 定义引用 ConfigMap 的FileIntegrity CR 清单

    apiVersion: fileintegrity.openshift.io/v1alpha1
    kind: FileIntegrity
    metadata:
      name: master-fileintegrity
      namespace: openshift-file-integrity
    spec:
      nodeSelector:
          node-role.kubernetes.io/master: ""
      config:
          name: master-aide-conf
          namespace: openshift-file-integrity

    操作员处理提供的 ConfigMap 文件,并将结果存储在与FileIntegrity对象同名的 ConfigMap 中

    $ oc describe cm/master-fileintegrity | grep /opt/mydaemon
    示例输出
    !/hostroot/opt/mydaemon

更改自定义文件完整性配置

要更改文件完整性配置,切勿更改生成的 ConfigMap。相反,请更改通过spec.namenamespacekey属性链接到FileIntegrity对象的 ConfigMap。