第12章 FDO を使用してデータベースバックエンドで RHEL for Edge デバイスをオンボードする
FDO サーバー (manufacturer-server
、onboarding-server
、および rendezvous
) を使用すると、ファイルではなく、SQLite や PostgreSQL データベースなどの SQL バックエンドから Owner Voucher を保存および照会できるようになります。この方法では、FDO サーバーオプションで SQL データストアを選択し、認証情報やその他のパラメーターとともに、Owner Voucher を SQL データベースに保存して、RHEL for Edge デバイスをオンボードすることができます。SQL ファイルは RPM にパッケージ化されています。
現時点では、SQL バックエンドはすべての FDO 機能をサポートしていません。
12.1. FDO データベースを使用したデバイスのオンボーディング
SQL データベースを使用して Edge デバイスをオンボードします。次の例では diesel
ツールを使用していますが、SQLite データベースまたは PostgreSQL データベースを使用することもできます。
一部のサーバーでは異なるデータベースストレージを使用し、他のサーバーではファイルシステムストレージを使用できます。たとえば、Manufacturing サーバーではファイルシステムストレージオンボーディングを使用し、Rendezvous サーバーと Owner サーバーでは Postgres を使用します。
前提条件
- FDO を使用してキーと証明書を生成し、製造サーバーを設定している。[キーと証明書の生成] へのリンクを参照してください。
- 製造サーバーをインストールして設定している。製造サーバーのインストールと実行 を参照してください。
- ランデブーサーバーをインストールして設定している。ランデブーサーバーのインストール、設定、および実行 を参照してください。
- 所有者サーバーをインストールして設定している。所有者サーバーのインストール、設定、および実行 を参照してください。
-
サーバー設定ファイルが
/etc/fdo
にある。 -
RHEL for Edge の OSTree コミットを構築し、それを使用して
Edge-simplified-installer
アーティファクトを生成している。 - デバイスが組み立てられている。
-
diesel
ツールまたは SQL データベースをホストにインストールしている。 - データベースシステムを設定し、テーブルを作成する権限がある。
手順
以下のパッケージをインストールします。
$ dnf install -y sqlite sqlite-devel libpq libpq-devel
-
/usr/share/doc/fdo/migrations/*
ディレクトリーにアクセスします。これには、製造サーバー、ランデブーサーバー、および所有者サーバーの RPM をインストールした後、サーバーとタイプの組み合わせごとにデータベースを作成するのに必要な.sql
ファイルが含まれています。 データベースの内容を初期化します。SQLite や PostgreSQL などの SQL データベース、または
diesel
ツールを使用して SQL を実行することができます。- SQL データベースを使用している場合は、ユーザーの作成、アクセス管理などを使用してデータベースサーバーを設定します。データベースサーバーを設定したら、データベースを実行できます。
-
データベースシステムで
.sql
ファイルを実行しない場合は、diesel
ツールを使用して sql を実行できます。diesel
ツールを使用している場合は、データベースを設定した後、diesel migration run
コマンドを使用してデータベースを作成します。
DB システムを設定した後、
/usr/share/doc/fdo/migrations/*
にインストールされた .sql ファイルを使用して、各サーバータイプのデータベースを作成できます。初期化するサーバータイプとデータベースタイプに一致する
.sql
ファイルを使用する必要があります。たとえば、PostgreSQL データベースで Owner Onboarding Server を初期化する場合は、/usr/share/doc/fdo/migrations/migrations_owner_onboarding_server_postgres/up.sql
フォルダーを使用する必要があります。移行フォルダー内のup.sql
ファイルはデータベースを作成し、down.sql
ファイルはデータベースを破棄します。データベースを作成したら、特定のサーバーの設定ファイルを変更して、データベースが使用されるようにします。
各サーバーにはストレージ設定セクションがあります。
-
Manufacturer サーバー:
ownership_voucher_store_driver
-
Owner サーバー:
ownership_voucher_store_driver
Rendezvous サーバー:
storage_driver
manufacturing-server.yml
ファイルをエディターで開き、ストアデータベースを変更します。$ sudo editor manufacturing-server.yml
Directory セクションの
ownership_voucher_store_driver
設定を変更します。$ /home/rhel/fido-device-onboard-rs/aio-dir/stores/owner_vouchers
- 以下の詳細を指定します。
- 使用しているデータベースの種類: SQLite または PostgreSQL
サーバータイプ: たとえば、PostgreSQL を使用する場合は、次の構成を設定します。
ownership_voucher_store_driver: Postgres: Manufacturer
- 手順を繰り返して、Owner サーバーおよび Rendezvous サーバーを設定します。
-
Manufacturer サーバー:
FDO オンボーディングサービスを実行します。詳細は、FDO を使用した RHEL for Edge デバイスの自動プロビジョニングとオンボーディングを参照してください。製造サーバーを実行して、FDO オンボーディングプロセスデバイスの初期化を開始します。
$ sudo LOG-LEVEL=debug SQLITE_MANUFACTURER-DATABASE_URL=./manufacturer-db.sqlite ./usr/libexec/fdo/fdo-manufacturing-server
オンボーディングプロセスは 2 つのフェーズで行われます。
- 通常、製造現場で行われるデバイス初期化フェーズ。
デバイスの最終目的地で行われるデバイスオンボーディングプロセス。
その結果、Manufacturing Server のデータベースに保存されている Ownership Voucher をエクスポートし、最終的な Owner Database に転送する必要があります。
Ownership Voucher をエクスポートするには、製造バウチャーデータベースファイルから Owner Voucher を所有者にコピーして、FDO オンボーディングプロトコルを続行します。
export
フォルダーを作成します。$ mkdir export
コマンドに必要なすべての変数を指定して、Manufacturing Database にある Owner Voucher をエクスポートします。
$ fdo-owner-tool export-manufacturer-vouchers DB_TYPE DB_URL PATH [GUID]
- DB_TYPE
- Owner Voucher を保持する Manufacturing DB のタイプ: sqlite、postgres
- DB_URL
- データベース接続 URL またはデータベースファイルへのパス
- PATH
- Owner Voucher がエクスポートされるディレクトリーへのパス
- GUID
- エクスポートする所有者バウチャーの GUID。GUID を指定しない場合は、すべての Owner Voucher がエクスポートされます。
OV は最終 Owner のデータベースに配信される必要があります。そのためには、
fdo-owner-tool
を使用して Owner Voucher をインポートします。所有者データベースに変更します。次のコマンドを実行して、Ownership Voucher をインポートします。$ fdo-owner-tool import-ownership-vouchers DB_TYPE DB_URL SOURCE_PATH
- DB_TYPE
- OV をインポートする所有者 DB のタイプ。可能な値: sqlite、postgres
- DB_URL
- DB 接続 URL または DB ファイルへのパス
- SOURCE_PATH
- インポートする OV へのパス、またはインポートするすべての OV が配置されているディレクトリーへのパス
このコマンドは、<SOURCE_PATH> で指定された各 OV を 1 つずつ読み取り、データベースにインポートしようとします。コマンドがエラーを検出すると、障害のある OV の GUID と、エラーの原因に関する情報が指定された出力が返されます。障害のない OV がデータベースにインポートされます。デバイスはオンボーディングサーバーから設定を受信します。次に、デバイスは SSH キーを受信し、デバイスにオペレーティングシステムのインストールを開始します。最後に、デバイス内のオペレーティングシステムが自動的に再起動し、TPM に保存されている強力なキーを使用してデバイスを暗号化します。