第 12 章 使用 FDO 加入一个带有数据库后端的 RHEL for Edge 设备
您可以使用 FDO 服务器 - manufacturer-server
,join-server
, 和 rendezvous
- 支持从 SQL 后端(如 SQLite 或 PostgreSQL 数据库)而不是文件,来存储和查询所有者凭证。这样,您可以在 FDO 服务器选项中选择一个 SQL 数据存储,以及凭证和其他参数,将所有者凭证存储在 SQL 数据库中,从而加入了一个 RHEL for Edge 设备。SQL 文件已打包在 RPM 中。
目前,SQL 后端不支持所有 FDO 功能。
12.1. 加入带有 FDO 数据库的设备
使用 SQL 数据库来加入 Edge 设备。以下示例使用 diesel
工具,但您也可以使用 SQLite 或 PostgreSQL 数据库。
您可以在一些服务器中使用与其他服务器中的文件系统存储不同的数据库存储,例如,使用文件系统存储加入制造服务器和用于 Rendezvous 和 Owner 服务器的 Postgres 。
先决条件
- 您已使用 FDO 生成配置制造服务器的密钥和证书。请参阅链接 [生成密钥和证书]
- 您已安装并配置了制造服务器。请参阅 安装和运行制造服务器
- 您已安装并配置了 rendezvous 服务器。请参阅 安装、配置和运行 Rendezvous 服务器
- 您已安装并配置了所有者服务器。请参阅 安装、配置和运行所有者服务器
-
您在
/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/*
目录。它包含您需要在安装完制造、rendezvous 和所有者服务器的 RPM 后,为每个服务器和类型组合创建数据库的.sql
文件。 初始化数据库内容。您可以使用 SQL 数据库(如 SQLite 或 PostgreSQL)或
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
文件销毁数据库。创建数据库后,更改特定服务器的配置文件,以使其使用数据库。
每台服务器都有一个存储配置部分。
-
制造商服务器:
ownership_voucher_store_driver
-
所有者服务器:
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
- 重复步骤来配置所有者服务器和 Rendezvous 服务器。
-
制造商服务器:
运行 FDO 加入服务。如需了解更多详细信息,请参阅自动提供和加入带有 FDO 的 RHEL for Edge 设备运行制造服务器来启动 FDO 加入过程设备初始化:
$ sudo LOG-LEVEL=debug SQLITE_MANUFACTURER-DATABASE_URL=./manufacturer-db.sqlite ./usr/libexec/fdo/fdo-manufacturing-server
加入过程在两个阶段发生:
- 通常发生在制造站点中的设备初始化阶段。
发生在设备的最终目的地的设备加入过程。
因此,存储在制造服务器的数据库中的所有者凭证必须导出,并传到最终的所有者数据库。
要从 manufacturing-vouchers 数据库文件导出所有权凭证,请将 Owner Voucher 复制到所有者,以继续 FDO 加入协议。
创建一个文件夹
export
:$ mkdir export
通过提供命令所需的所有变量,导出制造数据库中存在的所有者凭证。
$ fdo-owner-tool export-manufacturer-vouchers DB_TYPE DB_URL PATH [GUID]
- DB_TYPE
- 保存所有者凭证的制造 DB 的类型:sqlite、postgres
- DB_URL
- 数据库连接 URL 或数据库文件的路径
- PATH
- 将导出所有者凭证的目录的路径
- GUID
- 要导出的所有者凭证的 GUID。如果没有提供 GUID,则将导出所有的所有者凭证。
OV 必须传送到最终的所有者的数据库。为此,请使用
fdo-owner-tool
来导入所有者凭证。改为所有者数据库。通过运行以下命令来导入所有权凭证:$ 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 一次,并尝试将它们导入到数据库。如果命令发现错误,它会返回一个输出,其中包含有故障的OV 的 GUID ,并制定了导致错误的信息。无故障 OVs 被导入到数据库中。设备从加入服务器接收配置。然后,设备接收一个到 SSH 密钥,并开始在设备上安装操作系统。最后,操作系统自动在设备中重启,并使用存储在 TPM 中的强大密钥对设备进行加密。