密钥环服务消费者要求安装密钥环组件或插件。
要使用密钥环插件,请先按照这里的说明操作。(此外,有关安装插件的一般信息,请参见 第 7.6.1 节,“安装和卸载插件”。)
要改用密钥环组件,请先按照 第 8.4.4.2 节,“密钥环组件安装” 中的说明操作。
如果您打算将密钥环功能与所选的密钥环组件或插件一起使用,请在安装该组件或插件后,按照 第 8.4.4.12 节,“通用密钥环密钥管理功能” 中的说明安装这些功能。
一次只能启用一个密钥环组件或插件。启用多个密钥环组件或插件不受支持,结果可能与预期不符。
如果您需要支持持久化系统变量值的的安全存储,则必须在 MySQL 服务器实例上启用密钥环组件,而不是密钥环插件,因为密钥环插件不支持该功能。参见 持久化敏感系统变量。
MySQL 提供以下密钥环插件选项。
keyring_okv
:一个 KMIP 1.1 插件,用于与 KMIP 兼容的后端密钥环存储产品(如 Oracle Key Vault 和 Gemalto SafeNet KeySecure Appliance)一起使用。在 MySQL 企业版发行版中提供。keyring_aws
:与 Amazon Web Services Key Management Service 通信作为密钥生成的后端,并使用本地文件进行密钥存储。在 MySQL 企业版发行版中提供。keyring_hashicorp
:与 HashiCorp Vault 通信以进行后端存储。在 MySQL 企业版发行版中提供。
要使服务器可以使用该插件,插件库文件必须位于 MySQL 插件目录(由 plugin_dir
系统变量指定的目录)中。如果需要,请通过在服务器启动时设置 plugin_dir
的值来配置插件目录位置。
密钥环组件或插件必须在服务器启动序列的早期加载,以便其他组件可以在自己的初始化过程中根据需要访问它。例如,InnoDB
存储引擎使用密钥环进行表空间加密,因此密钥环组件或插件必须在 InnoDB
初始化之前加载并可用。
每个密钥环插件的安装过程都类似。以下说明描述了如何安装 keyring_okv
。要使用其他密钥环插件,请用其名称替换 keyring_okv
。
keyring_okv
插件库文件的基本名称为 keyring_okv
。文件名的后缀因平台而异(例如,Unix 和类 Unix 系统为 .so
,Windows 为 .dll
)。
要加载插件,请使用 --early-plugin-load
选项指定包含该插件的插件库文件。例如,在插件库文件后缀为 .so
的平台上,请在服务器 my.cnf
文件中使用以下行,并根据需要调整平台的 .so
后缀。
[mysqld]
early-plugin-load=keyring_okv.so
在启动服务器之前,请查看所选密钥环插件的说明,了解特定于该插件的配置说明。
keyring_okv
:第 8.4.4.6 节,“使用 keyring_okv KMIP 插件”。keyring_aws
: 第 8.4.4.7 节,“使用 keyring_aws Amazon Web Services 密钥环插件”keyring_hashicorp
: 第 8.4.4.8 节,“使用 HashiCorp Vault 密钥环插件”
完成任何特定于插件的配置后,启动服务器。通过检查信息模式 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_okv | ACTIVE |
+--------------+---------------+
如果插件初始化失败,请检查服务器错误日志以获取诊断消息。
插件可以通过除 --early-plugin-load
之外的其他方法加载,例如 --plugin-load
或 --plugin-load-add
选项或 INSTALL PLUGIN
语句。但是,使用这些方法加载的密钥环插件可能在服务器启动序列中太晚,无法用于某些使用密钥环的组件,例如 InnoDB
使用
--plugin-load
或--plugin-load-add
加载插件发生在InnoDB
初始化之后。使用
INSTALL PLUGIN
安装的插件将在mysql.plugin
系统表中注册,并在后续的服务器重启时自动加载。但是,由于mysql.plugin
是一个InnoDB
表,因此其中命名的任何插件只能在InnoDB
初始化之后才能在启动期间加载。
如果在某个组件尝试访问密钥环服务时,没有可用的密钥环组件或插件,则该组件将无法使用该服务。因此,该组件可能无法初始化或可能以有限的功能初始化。例如,如果 InnoDB
在初始化时发现有加密表空间,它会尝试访问密钥环。如果密钥环不可用,InnoDB
只能访问未加密的表空间。为了确保 InnoDB
也可以访问加密表空间,请使用 --early-plugin-load
加载密钥环插件。