6.4. 配置自定义 File Integrity Operator

6.4.1. 查看 FileIntegrity 对象属性

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

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

6.4.2. 重要属性

表 6.1. 重要的 specspec.config 属性

属性描述

spec.nodeSelector

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

spec.debug

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

spec.tolerations

在带有自定义污点的节点上指定调度容限。如果没有指定,则会应用默认的容限,允许容限在 control plane 节点上运行(也称为 master 节点)。

spec.config.gracePeriod

AIDE 完整性检查之间暂停的秒数。在节点中频繁进行 AIDE 检查需要大量资源,因此可以指定较长的时间间隔。默认为 900 秒或 15 分钟。

maxBackups

重新init 进程中保留 AIDE 数据库和日志备份的最大数量,以保持在节点上。除了这个数量外,旧的备份会被守护进程自动修剪。

spec.config.name

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

spec.config.namespace

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

spec.config.key

在由 名称和命名空间 指定的配置映射中包含实际 AIDE 配置的密钥。默认值为 aide.conf

6.4.3. 检查默认配置

默认 File Integrity Operator 配置存储在与 FileIntegrity CR 名称相同的配置映射中。

流程

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

    $ oc describe cm/worker-fileintegrity

6.4.4. 了解默认的 File Integrity Operator 配置

下面是配置映射的 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
  • /etc/ 下一些特定于 OpenShift 的排除项

6.4.5. 提供自定义 AIDE 配置

任何配置 AIDE 内部行为的条目,如 DBDIRLOGDIRdatabasedatabase_out 都会被 Operator 覆盖。对于要监视是否发生了完整性更改的所有路径,Operator 会在其前面为 /hostroot/ 添加前缀。这样,要重复使用可能通常不适用于容器化环境并从根目录启动的现有 AIDE 配置,就会更方便。

注意

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

6.4.6. 定义自定义 File Integrity Operator 配置

本例重点根据为 worker-fileintegrity CR 提供的默认配置,为 control plane 节点(也称为 master 节点)上运行的扫描程序定义自定义配置。如果您计划部署作为守护进程集运行的自定义软件,并将其数据存储在 control plane 节点上的 /opt/mydaemon 下,则此工作流可能很有用。

流程

  1. 复制默认配置。
  2. 使用必须监视或排除的文件编辑默认配置。
  3. 将已编辑的内容存储至新配置映射中。
  4. 通过 spec.config 中的属性将 FileIntegrity 对象指向新的配置映射。
  5. 提取默认配置:

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

    这将创建一个名为 aide.conf 的文件,您可对其进行编辑。为了说明 Operator 如何对路径进行后期处理,本例添加一个不含前缀的排除目录:

    $ 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

    排除特定于 control plane 节点的路径:

    !/opt/mydaemon/

    将其他内容存储在 /etc 中:

    /hostroot/etc/	CONTENT_EX
  6. 根据该文件创建配置映射:

    $ oc create cm master-aide-conf --from-file=aide.conf
  7. 定义引用该配置映射的 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

    Operator 处理所提供的配置映射文件,并使用与 FileIntegrity 对象相同的名称将结果存储在配置映射中:

    $ oc describe cm/master-fileintegrity | grep /opt/mydaemon

    输出示例

    !/hostroot/opt/mydaemon

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

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