7.10. ランタイム監視用に Keylime を設定する


監視対象システムの状態が正しいことを確認するには、Keylime エージェントが監視対象システム上で実行されている必要があります。

重要

Keylime のランタイム監視は、Integrity Measurement Architecture (IMA) を使用して多数のファイルを測定するため、システムのパフォーマンスに重大な影響を与える可能性があります。

エージェントをプロビジョニングするときに、Keylime が監視対象システムに送信するファイルを定義することもできます。Keylime はエージェントに送信されたファイルを暗号化し、エージェントのシステムが TPM ポリシーと IMA 許可リストに準拠している場合にのみ復号化します。

Keylime の除外リストを設定することで、Keylime が特定のファイルまたは特定のディレクトリー内の変更を無視するようにできます。ファイルを除外しても、そのファイルは引き続き IMA によって測定されます。

RHEL 9.3 で提供される Keylime バージョン 7.3.0 以降、許可リストと除外リストは Keylime ランタイムポリシーに統合されます。

前提条件

手順

  1. Keylime エージェントが設定され実行されている監視対象システムに、keylime-policy ツールを含む python3-keylime パッケージをインストールします。

    # dnf -y install python3-keylime
    Copy to Clipboard Toggle word wrap
  2. エージェントシステムの現在の状態からランタイムポリシーを作成します。

    # keylime-policy create runtime --ima-measurement --rootfs '/' --ramdisk-dir '/boot/' --output <policy.json>
    Copy to Clipboard Toggle word wrap

    このコマンドの詳細は次のとおりです。

    • <policy.json> はランタイムポリシーのファイル名に置き換えます。
    • 次のディレクトリーは測定から自動的に除外されます。

      • /sys
      • /run
      • /proc
      • /lost+found
      • /dev
      • /media
      • /snap
      • /mnt
      • /var
      • /tmp
    • 必要に応じて、--excludelist <excludelist.txt> オプションを追加して、追加の特定のパスを測定から除外することもできます。除外リストでは、1 行に 1 つの Python 正規表現を使用できます。特殊文字の完全なリストは、docs.python.org の Regular expression operations を参照してください。
  3. 生成されたランタイムポリシーを、keylime_tenant ユーティリティーが設定されているシステムにコピーします。次に例を示します。

    # scp <policy.json> root@<tenant.ip>:/root/<policy.json>
    Copy to Clipboard Toggle word wrap
  4. Keylime テナントが設定されているシステムで、keylime_tenant ユーティリティーを使用してエージェントをプロビジョニングします。

    # keylime_tenant --command add --targethost <agent_ip> --uuid <agent_uuid> --runtime-policy <policy.json> --cert default
    Copy to Clipboard Toggle word wrap
    • <agent_ip> は、エージェントの IP アドレスに置き換えます。
    • <agent_uuid> は、エージェントの UUID に置き換えます。
    • <policy.json> を Keylime ランタイムポリシーファイルへのパスに置き換えます。
    • --cert オプションを使用すると、テナントは、指定されたディレクトリーまたはデフォルトの /var/lib/keylime/ca/ ディレクトリーにある CA 証明書と鍵を使用して、エージェントの証明書を生成し、署名します。ディレクトリーに CA 証明書と鍵が含まれていない場合、テナントは /etc/keylime/ca.conf ファイルの設定に従ってそれらを自動的に生成し、指定されたディレクトリーに保存します。その後、テナントはこれらの鍵と証明書をエージェントに送信します。

      CA 証明書または署名エージェント証明書を生成するときに、CA 秘密鍵にアクセスするためのパスワードの入力を求められる (Please enter the password to decrypt your keystore:) 場合があります。

      注記

      Keylime はエージェントに送信されたファイルを暗号化し、エージェントのシステムが TPM ポリシーと IMA 許可リストに準拠している場合にのみ復号化します。デフォルトでは、Keylime は送信された .zip ファイルを展開します。

    たとえば、次のコマンドを使用すると、keylime_tenant は UUID d432fbb3-d2f1-4a97-9ef7-75bd81c00000 を持つ新しい Keylime エージェントを 127.0.0.1 にプロビジョニングし、policy.json というランタイムポリシーをロードします。また、デフォルトのディレクトリーに証明書を生成し、その証明書ファイルをエージェントに送信します。Keylime は、/etc/keylime/verifier.conf で設定された TPM ポリシーが満たされている場合にのみ、ファイルを復号化します。

    # keylime_tenant --command add --targethost 127.0.0.1 --uuid d432fbb3-d2f1-4a97-9ef7-75bd81c00000 --runtime-policy policy.json --cert default
    Copy to Clipboard Toggle word wrap
    注記

    # keylime_tenant --command delete --uuid <agent_uuid> コマンドを使用して、Keylime によるノードの監視を停止できます。

    keylime_tenant --command update コマンドを使用して、すでに登録されているエージェントの設定を変更できます。

検証

  1. オプション: 監視対象システムを再起動して、設定が永続的であることを確認します。
  2. エージェントのアテステーションが成功することを確認します。

    # keylime_tenant --command cvstatus --uuid <agent.uuid>
    ...
    {"<agent.uuid>": {"operational_state": "Get Quote"..."attestation_count": 5
    ...
    Copy to Clipboard Toggle word wrap

    <agent.uuid> をエージェントの UUID に置き換えます。

    operational_state の値が Get Quote で、attestation_count が 0 以外の場合、このエージェントのアテステーションは成功しています。

    Operational_state の値が Invalid QuoteFailed の場合、アテステーションは失敗し、次のようなコマンド出力が表示されます。

    {"<agent.uuid>": {"operational_state": "Invalid Quote", ... "ima.validation.ima-ng.not_in_allowlist", "attestation_count": 5, "last_received_quote": 1684150329, "last_successful_attestation": 1684150327}}
    Copy to Clipboard Toggle word wrap
  3. アテステーションが失敗した場合は、verifier ログで詳細を表示します。

    # journalctl --unit keylime_verifier
    keylime.tpm - INFO - Checking IMA measurement list...
    keylime.ima - WARNING - File not found in allowlist: /root/bad-script.sh
    keylime.ima - ERROR - IMA ERRORS: template-hash 0 fnf 1 hash 0 good 781
    keylime.cloudverifier - WARNING - agent D432FBB3-D2F1-4A97-9EF7-75BD81C00000 failed, stopping polling
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat