23.6.13.1 NDB 文件系统加密设置和使用

文件系统加密:要启用以前未加密的文件系统的加密,需要执行以下步骤:

  1. [ndbd default]在文件的部分中 设置所需的数据节点参数config.ini,如下所示:

    Press CTRL+C to copy
    [ndbd default] EncryptedFileSystem= 1

    这些参数必须按照所有数据节点上所示进行设置。

  2. --initial使用或 启动管理服务器以 --reload使其读取更新的配置文件。

  3. 执行所有数据节点的滚动初始启动(或重启)(请参阅第 23.6.5 节,“执行 NDB Cluster 的滚动重启”):启动每个数据节点 --initial;此外,为每个数据节点进程提供选项 --filesystem-password--filesystem-password-from-stdin以及密码。当您在命令行上提供密码时,会显示一条警告,类似于以下内容:

    Press CTRL+C to copy
    > ndbmtd -c 127.0.0.1 --filesystem-password=ndbsecret ndbmtd: [Warning] Using a password on the command line interface can be insecure. 2022-08-22 16:17:58 [ndbd] INFO -- Angel connected to '127.0.0.1:1186' 2022-08-22 16:17:58 [ndbd] INFO -- Angel allocated nodeid: 5

    --filesystem-password可以接受文件形式的密码,tty, 或 stdin; --filesystem-password-from-stdin只接受来自的密码stdin。后者保护密码不暴露在进程命令行或文件系统中,并允许从另一个安全应用程序传递密码。

    您还可以将密码放在 my.cnf数据节点进程可以读取但系统其他用户无法读取的文件中。使用与上一个示例相同的密码,文件的相关部分应如下所示:

    Press CTRL+C to copy
    [ndbd] filesystem-password=ndbsecret

    您还可以提示用户在启动数据节点进程时提供加密密码,方法是使用 文件--filesystem-password-from-stdin 中的选项my.cnf,如下所示:

    Press CTRL+C to copy
    [ndbd] filesystem-password-from-stdin

    在这种情况下,在启动数据节点进程时会提示用户输入密码,如下所示:

    Press CTRL+C to copy
    > ndbmtd -c 127.0.0.1 Enter filesystem password: ********* 2022-08-22 16:36:00 [ndbd] INFO -- Angel connected to '127.0.0.1:1186' 2022-08-22 16:36:00 [ndbd] INFO -- Angel allocated nodeid: 5 >

    无论使用何种方法,加密密码的格式都与用于加密备份的密码的格式相同(请参阅 第 23.6.8.2 节,“使用 NDB Cluster Management Client 创建备份”);启动每个数据节点进程时必须提供密码;否则数据节点进程无法启动。这由数据节点日志中的以下消息指示:

    Press CTRL+C to copy
    > tail -n2 ndb_5_out.log 2022-08-22 16:08:30 [ndbd] INFO -- Data node configured to have encryption but password not provided 2022-08-22 16:08:31 [ndbd] ALERT -- Node 5: Forced node shutdown completed. Occurred during startphase 0.

    当按照刚才的描述重新启动时,每个数据节点都会清除其磁盘上的状态,并以加密的形式重建它。

文件系统密码轮换--filesystem-password:要更新数据节点使用的加密密码,请执行数据节点的滚动初始重启,并在使用或 重启时向每个数据节点提供新密码 --filesystem-password-from-stdin

文件系统解密:要从加密的文件系统中删除加密,请执行以下操作:

  1. 在文件的[ndbd default]部分中 config.ini,设置 EncryptedFileSystem = OFF.

  2. --initial使用或 重新启动管理服务器 --reload

  3. 执行数据节点的滚动初始重启。重新启动节点二进制文件时,不要 使用任何与密码相关的选项。

    重新启动时,每个数据节点都会清除其磁盘上的状态,并以未加密的形式重建它。

要查看文件系统加密是否已正确配置,您可以对ndbinfo config_valuesconfig_params此类似的表使用查询:

Press CTRL+C to copy
mysql> SELECT v.node_id AS Node, p.param_name AS Parameter, v.config_value AS Value -> FROM ndbinfo.config_values v -> JOIN ndbinfo.config_params p -> ON v.config_param=p.param_number -> WHERE p.param_name='EncryptedFileSystem'; +------+----------------------+-------+ | Node | Parameter | Value | +------+----------------------+-------+ | 5 | EncryptedFileSystem | 1 | | 6 | EncryptedFileSystem | 1 | | 7 | EncryptedFileSystem | 1 | | 8 | EncryptedFileSystem | 1 | +------+----------------------+-------+ 4 rows in set (0.10 sec)

在这里, EncryptedFileSystem等于1在所有数据节点上,这意味着为此集群启用了文件系统加密。