7.3. Keylime verifier をコンテナーとしてデプロイする
Keylime verifier は、システム整合性の初期チェックと定期チェックを実行し、エージェントを使用した暗号化鍵のセキュアなブートストラップをサポートします。Keylime verifier は、ホスト上にバイナリーやパッケージがなくても、RPM 方式ではなくコンテナーとして設定できます。コンテナーとしてデプロイすることにより、Keylime コンポーネントの分離性、モジュール性、再現性が向上します。
コンテナーを起動すると、Keylime verifier がデフォルトの設定ファイルとともにデプロイされます。次の 1 つ以上の方法を使用して設定をカスタマイズできます。
- 設定ファイルを含むホストのディレクトリーをコンテナーにマウントします。これは、RHEL 9 のすべてのバージョンで使用できます。
- コンテナーで環境変数を直接変更します。これは、RHEL 9.3 以降のバージョンで使用できます。環境変数を変更すると、設定ファイルの値がオーバーライドされます。
前提条件
-
podman
パッケージとその依存関係がシステムにインストールされている。 オプション: Keylime が verifier からのデータを保存するデータベースにアクセスできます。次のデータベース管理システムのいずれかを使用できます。
- SQLite (デフォルト)
- PostgreSQL
- MySQL
- MariaDB
- 認証局からの有効な鍵と証明書がある。
手順
オプション: 設定ファイルにアクセスするには、
keylime-verifier
パッケージをインストールします。このパッケージがなくてもコンテナーを設定することはできますが、パッケージに付属する設定ファイルを変更する方が簡単な場合があります。# dnf install keylime-verifier
/etc/keylime/verifier.conf.d/
ディレクトリーに新しい.conf
ファイル (例:/etc/keylime/verifier.conf.d/00-verifier-ip.conf
) を作成し、次の内容を記述して、verifier をすべての使用可能な IP アドレスにバインドします。[verifier] ip = *
-
必要に応じて、
port
オプションを使用して、verifier のポートをデフォルト値8881
から変更することもできます。
-
必要に応じて、
オプション: エージェントのリスト用に verifier のデータベースを設定します。デフォルトの設定では、verifier の
/var/lib/keylime/cv_data.sqlite
ディレクトリーにある SQLite データベースを使用します。/etc/keylime/verifier.conf.d/
ディレクトリーに次の内容の新しい.conf
ファイル (/etc/keylime/verifier.conf.d/00-db-url.conf
など) を作成することで、別のデータベースを定義できます。[verifier] database_url = <protocol>://<name>:<password>@<ip_address_or_hostname>/<properties>
<protocol>://<name>:<password>@<ip_address_or_hostname>/<properties>
は、データベースの URL (例:postgresql://verifier:UQ?nRNY9g7GZzN7@198.51.100.1/verifierdb
) に置き換えます。使用する認証情報に、Keylime がデータベース構造を作成するための権限があることを確認してください。
verifier に証明書と鍵を追加します。Keylime にそれらを生成させることも、既存の鍵と証明書を使用することもできます。
-
デフォルトの
tls_dir =generate
オプションを使用すると、Keylime は verifier、registrar、およびテナントの新しい証明書を/var/lib/keylime/cv_ca/
ディレクトリーに生成します。 既存の鍵と証明書を設定にロードするには、verifier 設定でそれらの場所を定義します。Keylime プロセスの実行者である
keylime
ユーザーが証明書にアクセスできる必要があります。/etc/keylime/verifier.conf.d/
ディレクトリーに、次の内容の新しい.conf
ファイル (/etc/keylime/verifier.conf.d/00-keys-and-certs.conf
など) を作成します。[verifier] tls_dir = /var/lib/keylime/cv_ca server_key = </path/to/server_key> server_cert = </path/to/server_cert> trusted_client_ca = ['</path/to/ca/cert1>', '</path/to/ca/cert2>'] client_key = </path/to/client_key> client_cert = </path/to/client_cert> trusted_server_ca = ['</path/to/ca/cert3>', '</path/to/ca/cert4>']
注記絶対パスを使用して、鍵と証明書の場所を定義します。また、相対パスは
tls_dir
オプションで定義されたディレクトリーから解決されます。
-
デフォルトの
ファイアウォールでポートを開きます。
# firewall-cmd --add-port 8881/tcp # firewall-cmd --runtime-to-permanent
別のポートを使用する場合は、
8881
を.conf
ファイルで定義されているポート番号に置き換えます。コンテナーを実行します。
$ podman run --name keylime-verifier \ -p 8881:8881 \ -v /etc/keylime/verifier.conf.d:/etc/keylime/verifier.conf.d:Z \ -v /var/lib/keylime/cv_ca:/var/lib/keylime/cv_ca:Z \ -d \ -e KEYLIME_VERIFIER_SERVER_KEY_PASSWORD=<passphrase1> \ -e KEYLIME_VERIFIER_CLIENT_KEY_PASSWORD=<passphrase2> \ registry.access.redhat.com/rhel9/keylime-verifier
-
-p
オプションは、ホスト上とコンテナー上のデフォルトポート8881
を開きます。 -v
オプションは、コンテナーへのディレクトリーのバインドマウントを作成します。-
Z
オプションを指定すると、Podman がコンテンツにプライベート非共有ラベルを付けます。つまり、現在のコンテナーだけがプライベートボリュームを使用できます。
-
-
-d
オプションは、コンテナーをデタッチしてバックグラウンドで実行します。 -
オプション
-e KEYLIME_VERIFIER_SERVER_KEY_PASSWORD=<passphrase1>
は、サーバーの鍵のパスフレーズを定義します。 -
オプション
-e KEYLIME_VERIFIER_CLIENT_KEY_PASSWORD=<passphrase2>
は、クライアントの鍵のパスフレーズを定義します。 -
オプション
-e KEYLIME_VERIFIER_<ENVIRONMENT_VARIABLE>=<value>
を指定すると、環境変数で設定オプションをオーバーライドできます。複数のオプションを変更するには、環境変数ごとに-e
オプションを個別に挿入します。環境変数とそのデフォルト値の完全なリストは、Keylime の環境変数 を参照してください。
-
検証
コンテナーが実行されていることを確認します。
$ podman ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 80b6b9dbf57c registry.access.redhat.com/rhel9/keylime-verifier:latest keylime_verifier 14 seconds ago Up 14 seconds 0.0.0.0:8881->8881/tcp keylime-verifier
関連情報
- Keylime コンポーネントの詳細は、Keylime の仕組み を参照してください。
- Keylime 検証ツールの設定の詳細は、Keylime verifier の設定 を参照してください。
-
podman run
コマンドの詳細は、システム上のpodman-run(1)
man ページを参照してください。