8.4.4.3 密钥环插件安装
密钥环服务消费者需要安装一个密钥环组件或插件:
-
要使用密钥环插件,请从这里开始。 (另外,关于安装插件的总体信息,请见第7.6.1节,“Installing and Uninstalling Plugins”。)
-
要使用密钥环组件,而不是插件,请从第8.4.4.2节,“Keyring Component Installation”开始。
-
如果您计划使用密钥环函数与选择的密钥环组件或插件一起使用,请在安装该组件或插件后,使用第8.4.4.12节,“General-Purpose Keyring Key-Management Functions”中的指令安装函数。
在任何时候,只能启用一个密钥环组件或插件。启用多个密钥环组件或插件是未支持的,结果可能不如预期。
如果您需要支持 persisted 系统变量值的安全存储,而不是密钥环插件(它们不支持该功能),则必须在 MySQL 服务器实例上启用密钥环组件。请见 Persisting Sensitive System Variables。
MySQL 提供以下密钥环插件选择:
-
keyring_okv
: 对于 Oracle Key Vault 和 Gemalto SafeNet KeySecure Appliance 等 KMIP 兼容后端密钥存储产品的 KMIP 1.1 插件。仅在 MySQL Enterprise Edition 发行版中可用。 -
keyring_aws
: 使用 Amazon Web Services Key Management Service 作为密钥生成和存储的后端,使用本地文件存储密钥。仅在 MySQL Enterprise Edition 发行版中可用。 -
keyring_hashicorp
: 使用 HashiCorp Vault 作为密钥存储的后端。仅在 MySQL Enterprise Edition 发行版中可用。
服务器可以使用插件库文件时,该文件必须位于 MySQL 插件目录(由plugin_
系统变量指定的目录)中。如果必要,可以在服务器启动时通过设置plugin_
的值来配置插件目录位置。
密钥ring 组件或插件必须在服务器启动序列的早期阶段加载,以便其他组件可以在它们自己的初始化过程中访问它。例如,InnoDB
存储引擎使用密钥ring 对表空间加密,因此在 InnoDB
初始化之前,必须先加载和可用密钥ring 组件或插件。
每个密钥ring 插件的安装都类似。以下是如何安装 keyring_okv
的说明。要使用不同的密钥ring 插件,只需将其名称替换为 keyring_okv
。
keyring_okv插件库文件的基本名称是keyring_okv
。文件名后缀因平台而异(例如,Unix和Unix-like系统中为.so
,Windows中为.dll
)。
要加载插件,请使用--early-plugin-load
选项指定包含插件的库文件名称。例如,在平台上where插件库文件后缀为.so
,在服务器my.cnf
文件中使用以下行,根据您的平台需要调整.so
后缀:
[mysqld]
early-plugin-load=keyring_okv.so
在启动服务器前,请查看您选择的keyring插件的配置说明,以获取该插件特定的配置信息:
-
keyring_okv
:第8.4.4.6节,“使用keyring_okv KMIP插件” -
keyring_aws
:第8.4.4.7节,“使用keyring_aws Amazon Web Services Keyring插件” -
keyring_hashicorp
:第8.4.4.8节,“使用HashiCorp Vault Keyring插件”
在执行插件特定的配置后,启动服务器。验证插件安装通过检查信息schema中的PLUGINS
表或使用SHOW PLUGINS
语句(见第7.6.2节,“获取服务器插件信息”)。例如:
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
FROM INFORMATION_SCHEMA.PLUGINS
WHERE PLUGIN_NAME LIKE 'keyring%';
+--------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+--------------+---------------+
| keyring_file | ACTIVE |
+--------------+---------------+
如果插件无法初始化,检查服务器错误日志以获取诊断消息。
插件可以通过方法其他于--early-plugin-load
加载,例如--plugin-load
或--plugin-load-add
选项或INSTALL PLUGIN
语句。然而,使用这些方法加载的keyring插件可能在服务器启动序列中太晚,以至于某些组件无法使用keyring,如--plugin-load
或--plugin-load-add
选项:
-
使用
--plugin-load
或--plugin-load-add
加载插件的顺序在InnoDB
初始化后发生。 -
使用
INSTALL PLUGIN
安装的插件将在mysql.plugin
系统表中注册,并自动加载在服务器重启后。然而,因为mysql.plugin
是一个InnoDB
表,所以只有在InnoDB
初始化完成后才能在启动时加载插件。
如果组件尝试访问密钥ring服务时没有可用的keyring组件或插件,那么该服务对该组件不可用。结果,该组件可能无法初始化或只能以有限功能初始化。例如,如果InnoDB
在初始化时发现有加密的表空间,它将尝试访问密钥ring。如果密钥ring不可用,InnoDB
只能访问未加密的表空间。为了确保InnoDB
也可以访问加密的表空间,请使用--early-plugin-load
将keyring插件加载到早期。