第12章 FDO を使用してデータベースバックエンドで RHEL for Edge デバイスをオンボードする

FDO サーバー (manufacturer-serveronboarding-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 データベースをホストにインストールしている。
  • データベースシステムを設定し、テーブルを作成する権限がある。

手順

  1. 以下のパッケージをインストールします。

    $ dnf  install -y sqlite sqlite-devel libpq libpq-devel
  2. /usr/share/doc/fdo/migrations/* ディレクトリーにアクセスします。これには、製造サーバー、ランデブーサーバー、および所有者サーバーの RPM をインストールした後、サーバーとタイプの組み合わせごとにデータベースを作成するのに必要な .sql ファイルが含まれています。
  3. データベースの内容を初期化します。SQLite や PostgreSQL などの SQL データベース、または diesel ツールを使用して SQL を実行することができます。

    • SQL データベースを使用している場合は、ユーザーの作成、アクセス管理などを使用してデータベースサーバーを設定します。データベースサーバーを設定したら、データベースを実行できます。
    • データベースシステムで .sql ファイルを実行しない場合は、diesel ツールを使用して sql を実行できます。diesel ツールを使用している場合は、データベースを設定した後、diesel migration run コマンドを使用してデータベースを作成します。
  4. 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 ファイルはデータベースを破棄します。

  5. データベースを作成したら、特定のサーバーの設定ファイルを変更して、データベースが使用されるようにします。

    各サーバーにはストレージ設定セクションがあります。

    • Manufacturer サーバー: ownership_voucher_store_driver
    • Owner サーバー: ownership_voucher_store_driver
    • Rendezvous サーバー: storage_driver

      1. manufacturing-server.yml ファイルをエディターで開き、ストアデータベースを変更します。

        $ sudo editor manufacturing-server.yml
      2. Directory セクションの ownership_voucher_store_driver 設定を変更します。

        $ /home/rhel/fido-device-onboard-rs/aio-dir/stores/owner_vouchers
      3. 以下の詳細を指定します。
    • 使用しているデータベースの種類: SQLite または PostgreSQL
    • サーバータイプ: たとえば、PostgreSQL を使用する場合は、次の構成を設定します。

      ownership_voucher_store_driver:
        Postgres:
          Manufacturer
      1. 手順を繰り返して、Owner サーバーおよび Rendezvous sサーバーを設定します。
  6. 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 に転送する必要があります。

  7. Ownership Voucher をエクスポートするには、製造バウチャーデータベースファイルから Owner Voucher を所有者にコピーして、FDO オンボーディングプロトコルを続行します。

    1. export フォルダーを作成します。

      $ mkdir export
    2. コマンドに必要なすべての変数を指定して、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 がエクスポートされます。
  8. 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 に保存されている強力なキーを使用してデバイスを暗号化します。