在 DGX Station A100 上管理自加密驱动器#

DGX 操作系统软件支持管理自加密驱动器 (SED) 的功能,包括设置身份验证密钥以锁定和解锁 DGX Station A100 系统驱动器。

您只能管理 SED 数据驱动器,即使驱动器支持 SED,该软件也不能用于管理操作系统驱动器。

概述#

SED 管理软件在 nv-disk-encrypt 软件包中提供。

该软件支持以下配置

  • DGX Station A100 系统,其中所有数据驱动器均为自加密驱动器。

  • 仅支持用作数据驱动器的 SED。

    该软件不会管理作为操作系统驱动器的 SED。

该软件提供以下功能

  • 识别系统上符合条件的驱动器。

  • 允许您在初始化过程中为每个 SED 分配身份验证密钥(密码)。

    • 该软件还可以为每个驱动器生成随机密码。

    • 密码存储在系统上受密码保护的保管库中。

  • 初始化后,SED 在断电时(例如系统关机或驱动器移除)会被锁定。

    恢复供电并挂载根文件系统后,锁定的驱动器将被解锁。

  • 提供导出保管库的功能。

  • 提供擦除驱动器数据的功能。

  • 提供恢复初始化的能力。

安装 nv-disk-encrypt 软件包#

使用软件包管理器安装 nv-disk-encrypt 软件包。

您可以选择安装 TPM2 工具软件包并重启系统。 如果您计划使用 TPM2 存储安全密钥,则需要 TPM 工具软件包。

  1. 更新软件包。

    $ sudo apt update
    
  2. 安装 nv-disk-encrypt 软件包。

    $ sudo apt install -y nv-disk-encrypt
    
  3. 安装 tpm2-tools

    $ sudo apt install -y tpm2-tools
    
  4. 重启系统。

    $ sudo reboot
    

如果您计划使用 TPM2,请确保启用它。 有关更多信息,请参阅启用 TPM

配置可信计算#

本节提供有关如何配置可信计算的信息。

DGX Station A100 系统 BIOS 提供设置控件来配置以下可信计算 (TC) 功能

  • 可信平台模块

    DGX Station A100 包含可信平台模块 2.0 (TPM 2.0),可以从系统 BIOS 启用并与 nv-disk-encrypt 工具一起使用。

    启用此模块后,该工具将 TPM 用于加密,然后将保管库和 SED 身份验证密钥存储在 TPM 上,而不是文件系统上。 使用 TPM 是首选方法,因为它允许保管库数据即使在系统重新映像后仍然存在。

  • 阻止 SID

    某些随 DGX Station A100 系统发货的驱动器可能支持阻止 SID 身份验证功能,该功能可防止恶意行为者获取驱动器的所有权并阻止其他人使用驱动器。 默认情况下,DGX BIOS 将发送阻止 SID 请求。

    在这些设置中,在继续初始化步骤之前,在 BIOS 中启用禁用 Block Sid 功能。

确定驱动器是否支持阻止 SID#

驱动器型号是驱动器是否支持此功能的良好指标。

运行以下命令并查找 KCM6DRUL3T84 型号字符串。

_images/block-sid.png

启用 TPM 并阻止 BIOS 发送阻止 SID 请求#

以下是启用 TPM 并阻止 SBIOS 发送阻止 SID 请求的说明。 您可以选择要执行的任务,因为每个任务都是相互独立的。

  1. 重启 DGX Station A100。

  2. 要进入 BIOS 设置,请在 NVIDIA 启动画面中按 [Del][F2]

  3. 高级选项卡上,滚动到可信计算并按 [Enter]

  4. 完成以下任务之一

    • 要启用 TPM,请滚动到安全设备并选择已启用

    • 要禁用阻止 SID,请滚动到禁用 Block Sid 并选择已启用

  5. 要继续启动过程,请保存并退出 BIOS 设置。

  6. 如果您禁用了阻止 SID,系统将提示您禁用发出阻止 SID 身份验证命令。

    _images/disable-issue-block-auth-command-.png
  7. F10 确认。

系统启动后,您可以初始化驱动器加密。

初始化系统以进行驱动器加密#

以下是一些关于如何初始化 DGX 系统以进行驱动器加密的信息。

注意

在初始化驱动器加密之前,请参阅配置可信计算,并在必要时完成配置说明。

  1. 使用 nv-disk-encrypt 命令初始化系统以进行驱动器加密。

    $ sudo nv-disk-encrypt init [-k <your-vault-password>] [-f <path/to/ json-file>] [-g] [-r]
    

    以下是选项

    • k 允许您在命令中创建保管库密码。 否则,软件将提示您先创建密码,然后再继续。

    • -f 允许您指定一个 JSON 文件,其中包含密码到驱动器的映射。

      有关更多信息,请参阅示例 1:传入 JSON 文件

    • -g 为每个驱动器密码生成随机 salt 值(存储在 /etc/nv-disk-encrypt/.dgxenc.salt 中)。 NVIDIA 强烈建议使用此选项以获得最佳安全性,否则软件将使用默认 salt 值而不是随机生成的值。

    • -r 为每个驱动器生成随机密码。

      这样就避免了创建 JSON 文件或在初始化期间逐个输入密码的需要。

启用驱动器锁定#

以下是一些关于如何启用驱动器锁定的信息。

在初始化系统以进行 SED 管理后,使用 nv-disk-encrypt 命令通过发出以下命令来启用驱动器锁定

$ sudo nv-disk-encrypt lock

在初始化系统并启用驱动器锁定后,当驱动器断电时,驱动器将被锁定。 系统恢复供电并重启后,系统将自动解锁每个驱动器。

初始化示例#

本节提供有关一些初始化示例的信息。

示例 1:传入 JSON 文件#

本节提供有关一种提前指定驱动器/密码映射的方法的信息。

通过使用此示例中的方法,您可以同时初始化多个驱动器,并在发出初始化命令后,避免为每个驱动器输入密码。

确定可以作为自加密驱动器管理的驱动器#

查看 DGX 系统的存储布局,以确定哪些驱动器有资格作为 SED 进行管理。

$ sudo nv-disk-encrypt info

默认输出显示哪些驱动器可以用于加密,哪些驱动器不能用于加密。

以下示例输出片段显示了可以用于加密的驱动器。 请注意 SED capable = Y 和 Boot disk = N

Disk(s) that can be used for encryption
+------+------+------+-------------------------------------------------------------
|    Name   | Serial |       Status                                            |
+------+------+------+-------------------------------------------------------------
| /dev/nvme3n1 | xxxxx1 | SED capable = Y, Boot disk = N, Locked = N, Lock Enabled = N, MBR done = N |

| /dev/nvme6n1 | xxxxx2 | SED capable = Y, Boot disk = N, Locked = N, Lock Enabled = N, MBR done = N |

| /dev/nvme9n1 | xxxxx3 | SED capable = Y, Boot disk = N, Locked = N, Lock Enabled = N, MBR done = N |

以下示例输出显示了不能用于加密的驱动器。 SED capable = Y 和 Boot disk = Y,或者 SED capable = N

Disk(s) that cannot be used for encryption
+------+------+------+-------------------------------------------------------------
|    Name   | Serial  |      Status                                            |
+------+------+------+-------------------------------------------------------------
| /dev/nvme0n1 | xxxxx1  | SED capable = Y, Boot disk = Y, Locked = N, Lock Enabled = N, MBR done = N |

| /dev/sr0     | xxxxx2  | SED capable = N, Boot disk = N, Locked = N, Lock Enabled = N, MBR done = N |

| /dev/nvme1n1 | xxxxx3  | SED capable = Y, Boot disk = Y, Locked = N, Lock Enabled = N, MBR done = N |

| /dev/sda     | unknown | SED capable = N, Boot disk = N, Locked = N, Lock Enabled = N, MBR done = N |

您还可以使用 -j 选项指定以 JSON 格式呈现输出。

$ sudo nv-disk-encrypt info -j

可以用于加密的驱动器由以下内容指示

"sed_capable": true,
"used_for_boot": false

能用于加密的驱动器由以下两个选项指示

"sed_capable": true,
"used_for_boot": true
"sed_capable": false,

创建驱动器/密码映射 JSON 文件#

您可以创建驱动器/密码映射 JSON 文件,并使用此文件初始化系统。

  1. 创建一个 JSON 文件,其中列出您要管理的所有符合条件的 SED 功能驱动器。

    这些是您在完成确定哪些驱动器可以作为自加密驱动器进行管理中的任务后获得的驱动器列表。

    以下示例显示了 JSON 文件的格式

    {
    "/dev/nvme2n1":
    "<your-password>",
    "/dev/nvme3n1":
    "<your-password>",
    "/dev/nvme4n1":
    "<your-password>",
    "/dev/nvme5n1":
    "<your-password>",
    }
    

    注意

    • 必须完全按照语法操作。

    • 密码必须仅由大写字母、小写字母、数字和/或以下特殊字符组成:~:@%^+=_,

  2. 初始化系统并启用锁定。

    以下命令假定您已将 JSON 文件放在 /tmp 目录中

    $ sudo nv-disk-encrypt init -f /tmp/<your-file>.json -g
    $ sudo nv-disk-encrypt lock
    
  3. 出现提示时,输入保管库的密码。

    密码必须仅由大写字母、小写字母、数字和/或以下特殊字符组成:~:@%^+=_,

  4. 出于安全考虑,请删除临时位置中的 JSON 文件。

示例 2:生成随机密码#

本节提供有关如何生成随机密码的信息。

以下命令使用 -k-r 选项,因此系统不会提示您输入密码。 在您将保管库密码传递到命令后,该命令指示工具为每个驱动器生成随机密码。

$ sudo nv-disk-encrypt init -k <your-vault-password> -g -r
$ sudo nv-disk-encrypt lock

保管库密码必须仅由大写字母、小写字母、数字和/或以下特殊字符组成:~:@%^+=_,

示例 3:在提示时一次指定一个密码#

本示例提供有关如何一次指定一个密码的信息。

如果驱动器数量较少,或者您不想创建 JSON 文件,请发出以下命令

$ sudo nv-disk-encrypt init -g
$ sudo nv-disk-encrypt lock

该软件会提示您输入保管库的密码,然后提示您输入每个符合条件的 SED 的密码。

密码必须仅由大写字母、小写字母、数字和/或以下特殊字符组成:~:@%^+=_,

禁用驱动器锁定#

以下是一些关于如何禁用驱动器锁定的信息。

要在初始化后随时禁用驱动器锁定,请运行以下命令

$ sudo nv-disk-encrypt disable
  • 此命令禁用所有驱动器上的锁定。

  • 在此过程完成后,您可以随时再次运行初始设置。

导出保管库#

以下是一些关于如何导出保管库的信息。

要将所有驱动器密钥导出到文件,请使用 export 功能。

提示

运行此命令时,您必须包含保管库密码。

$ sudo nv-disk-encrypt export -k <your-vault-password>

/tmp/secrets.out 文件包含磁盘序列号到驱动器密码的映射。

擦除您的数据#

用 50 个或更少的词语解释此任务的好处、任务的目的、应该由谁执行此任务以及何时执行此任务。

停止 cachefilesd 并卸载 RAID 阵列

注意

完成此任务后,所有数据都将丢失。 在 DGX Station A100 系统上,这些驱动器通常形成 RAID 0 阵列,当您执行擦除操作时,该阵列也会被销毁。

在初始化系统以进行 SED 管理后,使用 nv-disk-encrypt 命令擦除驱动器上的数据。

  1. 要完全停止 RAID,请发出以下命令

    $ systemctl stop cachefilesd
    $ sudo umount /raid
    $ sudo mdadm --stop /dev/md1
    
  2. 完成擦除。

    $ sudo nv-disk-encrypt erase
    

    此命令执行以下操作

    • 将驱动器设置为解锁状态。

    • 禁用驱动器上的锁定。

    • 删除 RAID 0 阵列配置。

  3. 要重建 RAID,请发出以下命令

    $ sudo /usr/bin/configure_raid_array.py -c -f
    

清除 TPM#

如果您丢失了 TPM 密码,您将无法访问 TPM 内容。 再次访问 TPM 的唯一方法是清除内容。 清除 TPM 后,您需要再次初始化保管库和 SED 身份验证密钥。

要清除 TPM,请完成以下步骤

  1. 重启 DGX Station A100。

  2. 要进入 BIOS 设置,请在 NVIDIA 启动画面中按 [Del][F2]

  3. 高级选项卡上,滚动到可信计算并按 [Enter]

  4. 清除 TPM2。

  5. 滚动到可信计算并按 [Enter]

  6. 滚动到挂起操作并按 [Enter]

  7. 在“挂起操作”对话框中,选择 TPM 清除,然后按 [Enter]

  8. 保存并退出 BIOS 设置。

更改磁盘密码、添加磁盘或更换磁盘#

此过程中的步骤可用于更改或轮换密码、添加磁盘或更换磁盘。

  1. 禁用 SED 管理。

  2. 根据需要添加或更换驱动器,然后重建 RAID 阵列。

    有关说明,请参阅重建缓存 RAID 0 卷

  3. 要启用 SED 管理并分配密码,请参阅初始化系统以进行驱动器加密

恢复丢失的密钥#

NVIDIA 建议您备份密钥并将密钥存储在安全位置。

如果您丢失了用于初始化和锁定驱动器的密钥,您将无法解锁驱动器。 恢复的唯一方法是执行 factory-reset,这将导致数据丢失。

SED 驱动器标签上印有 PSID。 此值只能通过物理检查驱动器获得,如下图所示。

_images/sed-psid.png

要指定 PSID 并重置驱动器,请运行以下 sedutil-cli 命令

$ sudo sedutil-cli --yesIreallywanttoERASEALLmydatausingthePSID <your- drive-PSID> /dev/nvme3n1