6.7. 配置自定义 File Integrity Operator
6.7.1. 查看 FileIntegrity 对象属性
和任何 Kubernetes 自定义资源 (CR) 一样,您可以运行 oc explain fileintegrity
,然后使用以下方法查看各个属性:
$ oc explain fileintegrity.spec
$ oc explain fileintegrity.spec.config
6.7.2. 重要属性
属性 | 描述 |
---|---|
|
键值对映射必须与节点标签匹配,才能在该节点上调度 AIDE Pod。典型的用途是仅设置一个键值对,其中 |
|
布尔值属性。如果设为 |
| 在带有自定义污点的节点上指定调度容限。如果没有指定,将应用默认容限,允许在 control plane 节点上运行容限。 |
|
AIDE 完整性检查之间暂停的秒数。在节点中频繁进行 AIDE 检查需要大量资源,因此可以指定较长的时间间隔。默认为 |
|
从 |
| 包含自定义 AIDE 配置的 configMap 的名称。如果省略,则会创建一个默认配置。 |
| 包含自定义 AIDE 配置的 configMap 的命名空间。如果未设置,FIO 会生成适合 RHCOS 系统的默认配置。 |
|
在由 |
| 启动第一个 AIDE 完整性检查前等待的秒数。默认设为 0。此属性是可选的。 |
6.7.3. 检查默认配置
默认 File Integrity Operator 配置存储在与 FileIntegrity
CR 名称相同的配置映射中。
流程
要检查默认配置,请运行:
$ oc describe cm/worker-fileintegrity
6.7.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 Container Platform 的排除项
6.7.5. 提供自定义 AIDE 配置
任何配置 AIDE 内部行为的条目,如 DBDIR
、LOGDIR
、database
和 database_out
都会被 Operator 覆盖。对于要监视是否发生了完整性更改的所有路径,Operator 会在其前面为 /hostroot/
添加前缀。这样,要重复使用可能通常不适用于容器化环境并从根目录启动的现有 AIDE 配置,就会更方便。
/hostroot
是运行 AIDE 的 Pod 挂载主机文件系统的目录。更改配置会触发重新初始化数据库。
6.7.6. 定义自定义 File Integrity Operator 配置
本例重点基于为 worker-fileintegrity
CR 提供的默认配置,为在 control plane 节点上运行的扫描程序定义自定义配置。如果您计划部署作为守护进程集运行的自定义软件,并将其数据存储在 control plane 节点上的 /opt/mydaemon
下,则此工作流可能很有用。
流程
- 复制默认配置。
- 使用必须监视或排除的文件编辑默认配置。
- 将已编辑的内容存储至新配置映射中。
-
通过
spec.config
中的属性将FileIntegrity
对象指向新的配置映射。 提取默认配置:
$ 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
根据该文件创建配置映射:
$ oc create cm master-aide-conf --from-file=aide.conf
定义引用该配置映射的
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.7.7. 更改自定义文件完整性配置
要更改文件完整性配置,切勿更改生成的配置映射。相反,可通过 spec.name
、namespace
和 key
属性更改链接到 FileIntegrity
对象的配置映射。