6.6. 高度なカスタム File Integrity Operator タスクの実行

6.6.1. データベースの再初期化

File Integrity Operator が予定される変更を検知する場合、データベースの再初期化が必要になることがあります。

手順

  • FileIntegrity カスタムリソース (CR) に file-integrity.openshift.io/re-init のアノテーションを付けます。

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

    古いデータベースとログファイルがバックアップされ、新しいデータベースが初期化されます。oc debug を使用して起動する Pod の以下の出力に示されるように、古いデータベースおよびログは /etc/kubernetes の下にあるノードに保持されます。

    出力例

     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 オブジェクトに表示されます。

6.6.2. マシン設定の統合

OpenShift Container Platform 4 では、クラスターノード設定は MachineConfig オブジェクトで提供されます。MachineConfig オブジェクトによって生じるファイルへの変更が予想されますが、ファイルの整合性スキャンは失敗しないことを前提にすることができます。MachineConfig オブジェクトの更新によって生じるファイルの変更を抑制するために、File Integrity Operator はノードオブジェクトを監視します。ノードが更新されると、AIDE スキャンは更新の期間一時停止します。更新が完了すると、データベースが再初期化され、スキャンが再開されます。

この一時停止および再開ロジックは、ノードオブジェクトのアノテーションに反映されるため、MachineConfig API での更新にのみ適用されます。

6.6.3. デーモンセットの参照

それぞれの 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 デーモンによって作成された設定マップは保持されず、File Integrity Operator がこれらを処理した後に削除されます。ただし、障害およびエラーの発生時に、これらの設定マップの内容は FileIntegrityNodeStatus オブジェクトが参照する設定マップにコピーされます。