7.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
- 認証局からの有効な鍵と証明書がある。
手順
オプション:設定ファイルにアクセスするには、
keylime-registrar
パッケージをインストールします。このパッケージがなくてもコンテナーを設定することはできますが、パッケージに付属する設定ファイルを変更する方が簡単な場合があります。# dnf install keylime-registrar
/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
です。
-
必要に応じて、
オプション:エージェントのリスト用に 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 がデータベース構造を作成するための権限があることを確認してください。
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 = </path/to/server_key> server_cert = </path/to/server_cert> trusted_client_ca = ['</path/to/ca/cert1>', '</path/to/ca/cert2>']
注記絶対パスを使用して、鍵と証明書の場所を定義します。または、
tls_dir
オプションでディレクトリーを定義し、そのディレクトリーからの相対パスを使用することもできます。
-
デフォルトの設定を使用して、鍵と証明書を
ファイアウォールでポートを開きます。
# firewall-cmd --add-port 8890/tcp --add-port 8891/tcp # firewall-cmd --runtime-to-permanent
別のポートを使用する場合は、
8890
または8891
を.conf
ファイルで定義されているポート番号に置き換えます。コンテナーを実行します。
$ 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=<passphrase1> \ 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 の仕組み」 を参照してください。
- Keylime registrar の設定の詳細は、「パッケージから Keylime registrar をデプロイする」 を参照してください。
-
podman run
コマンドの詳細は、システム上のpodman-run(1)
man ページを参照してください。