8.5. Keylime registrar をコンテナーとして設定する

registrar は、すべてのエージェントのデータベースを格納する Keylime コンポーネントであり、Trusted Platform Module (TPM) ベンダーの公開鍵をホストします。registrar の HTTPS サービスは、TPM 公開鍵を受け入れると、クォートをチェックするために、この公開鍵を取得するためのインターフェイスを提供します。Keylime registrar は、ホスト上にバイナリーやパッケージがなくても、RPM 方式ではなくコンテナーとして設定できます。コンテナーとしてデプロイすることにより、Keylime コンポーネントの分離性、モジュール性、再現性が向上します。

コンテナーを起動すると、Keylime registrar がデフォルトの設定ファイルとともにデプロイされます。次の 1 つ以上の方法を使用して設定をカスタマイズできます。

  • 設定ファイルを含むホストのディレクトリーをコンテナーにマウントします。これは、RHEL 9 のすべてのバージョンで使用できます。
  • コンテナーで環境変数を直接変更します。これは、RHEL 9.3 以降のバージョンで使用できます。環境変数を変更すると、設定ファイルの値がオーバーライドされます。

前提条件

  • podman パッケージとその依存関係がシステムにインストールされている。
  • オプション: Keylime が registrar からのデータを保存するデータベースにアクセスできる。次のデータベース管理システムのいずれかを使用できます。

    • SQLite (デフォルト)
    • PostgreSQL
    • MySQL
    • MariaDB
  • 認証局からの有効な鍵と証明書がある。

手順

  1. オプション: 設定ファイルにアクセスするには、keylime-registrar パッケージをインストールします。このパッケージがなくてもコンテナーを設定することはできますが、パッケージに付属する設定ファイルを変更する方が簡単な場合があります。

    # dnf install keylime-registrar
  2. /etc/keylime/registrar.conf.d/ ディレクトリーに新しい .conf ファイル (例: /etc/keylime/registrar.conf.d/00-registrar-ip.conf) を作成し、次の内容を記述して、registrar を使用可能なすべての IP アドレスにバインドします。

    [registrar]
    ip = *
    • 必要に応じて、port オプションを使用して、Keylime エージェントが接続するポートを変更します。デフォルト値は 8890 です。
    • 必要に応じて、tls_port オプションを使用して、Keylime テナントが接続する TLS ポートを変更します。デフォルト値は 8891 です。
  3. オプション: エージェントのリスト用に registrar のデータベースを設定します。デフォルト設定では、registrar の /var/lib/keylime/reg_data.sqlite ディレクトリーにある SQLite データベースを使用します。/etc/keylime/registrar.conf.d/ ディレクトリーに、次の内容の新しい .conf ファイル (/etc/keylime/registrar.conf.d/00-db-url.conf など) を作成できます。

    [registrar]
    database_url = <protocol>://<name>:<password>@<ip_address_or_hostname>/<properties>

    <protocol>://<name>:<password>@<ip_address_or_hostname>/<properties> は、データベースの URL (例: postgresql://registrar:EKYYX-bqY2?#raXm@198.51.100.1/registrardb) に置き換えます。

    使用する認証情報に、Keylime がデータベース構造を作成するための権限があることを確認してください。

  4. registrar に証明書と鍵を追加します。

    • デフォルトの設定を使用して、鍵と証明書を /var/lib/keylime/reg_ca ディレクトリーにロードできます。
    • または、設定で鍵と証明書の場所を定義することもできます。/etc/keylime/registrar.conf.d/ ディレクトリーに新しい .conf ファイルを作成します (例: /etc/keylime/registrar.conf.d/00-keys-and-certs.conf の内容は次のとおりです)。

      [registrar]
      tls_dir = /var/lib/keylime/reg_ca
      server_key = &lt;/path/to/server_key&gt;
      server_cert = &lt;/path/to/server_cert&gt;
      trusted_client_ca = ['&lt;/path/to/ca/cert1&gt;', '&lt;/path/to/ca/cert2&gt;']
      注記

      絶対パスを使用して、鍵と証明書の場所を定義します。または、tls_dir オプションでディレクトリーを定義し、そのディレクトリーからの相対パスを使用することもできます。

  5. ファイアウォールでポートを開きます。

    # firewall-cmd --add-port 8890/tcp --add-port 8891/tcp
    # firewall-cmd --runtime-to-permanent

    別のポートを使用する場合は、8890 または 8891.conf ファイルで定義されているポート番号に置き換えます。

  6. コンテナーを実行します。

    $ podman run --name keylime-registrar \
      -p 8890:8890 \
      -p 8891:8891 \
      -v /etc/keylime/registrar.conf.d:/etc/keylime/registrar.conf.d:Z \
      -v /var/lib/keylime/reg_ca:/var/lib/keylime/reg_ca:Z \
      -d \
      -e KEYLIME_REGISTRAR_SERVER_KEY_PASSWORD=&lt;passphrase1&gt; \
      registry.access.redhat.com/rhel9/keylime-registrar
    • -p オプションは、ホスト上とコンテナー上のデフォルトポート 8890 および 8881 を開きます。
    • -v オプションは、コンテナーへのディレクトリーのバインドマウントを作成します。

      • Z オプションを指定すると、Podman がコンテンツにプライベート非共有ラベルを付けます。つまり、現在のコンテナーだけがプライベートボリュームを使用できます。
    • -d オプションは、コンテナーをデタッチしてバックグラウンドで実行します。
    • オプション -e KEYLIME_VERIFIER_SERVER_KEY_PASSWORD=<passphrase1> は、サーバーの鍵のパスフレーズを定義します。
    • オプション -e KEYLIME_REGISTRAR_<ENVIRONMENT_VARIABLE>=<value> を指定すると、環境変数で設定オプションをオーバーライドできます。複数のオプションを変更するには、環境変数ごとに -e オプションを個別に挿入します。環境変数とそのデフォルト値の完全なリストについては、「Keylime の環境変数」 を参照してください。

検証

  • コンテナーが実行されていることを確認します。

    $ podman ps -a
    CONTAINER ID  IMAGE                               COMMAND            CREATED             STATUS             PORTS                                           NAMES
    07d4b4bff1b6  localhost/keylime-registrar:latest  keylime_registrar  12 seconds ago      Up 12 seconds      0.0.0.0:8881->8881/tcp, 0.0.0.0:8891->8891/tcp  keylime-registrar

関連情報

  • Keylime コンポーネントの詳細は、「Keylime の仕組み」 を参照してください。
  • Keylime registrar の設定の詳細は、「Keylime registrar の設定」 を参照してください。
  • podman run コマンドの詳細は、podman-run(1) man ページを参照してください。