密钥环服务消费者需要安装密钥环组件或插件:
要使用密钥环插件,请从此处的说明开始。(此外,有关安装插件的一般信息,请参阅 第 5.6.1 节,“安装和卸载插件”。)
要改用密钥环组件,请从 第 6.4.4.2 节“密钥环组件安装”开始。
如果您打算将密钥环功能与所选密钥环组件或插件结合使用,请在安装该组件或插件后安装这些功能,使用 第 6.4.4.15 节,“通用密钥环密钥管理功能”中的说明。
一次只能启用一个密钥环组件或插件。不支持启用多个密钥环组件或插件,结果可能与预期不同。
如果您需要支持持久系统变量值的安全存储,则必须在 MySQL 服务器实例上启用密钥环组件,而不是不支持该功能的密钥环插件。请参阅 保留敏感系统变量。
MySQL 提供了这些密钥环插件选项:
keyring_file
:将密钥环数据存储在服务器主机的本地文件中。在 MySQL Community Edition 和 MySQL Enterprise Edition 发行版中可用。keyring_encrypted_file
:将密钥环数据存储在服务器主机本地的加密、受密码保护的文件中。在 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 企业版发行版中可用。keyring_oci
:与后端存储的 Oracle Cloud Infrastructure Vault 通信。请参阅 第 6.4.4.12 节,“使用 Oracle Cloud Infrastructure Vault 密钥环插件”。
为了被服务器使用,插件库文件必须位于MySQL插件目录(由plugin_dir
系统变量命名的目录)中。plugin_dir
如有必要,通过在服务器启动时
设置值来配置插件目录位置
。
密钥环组件或插件必须在服务器启动序列的早期加载,以便其他组件可以在它们自己的初始化期间根据需要访问它。例如,
InnoDB
存储引擎使用密钥环进行表空间加密,因此密钥环组件或插件必须在InnoDB
初始化之前加载并可用。
每个密钥环插件的安装都是相似的。以下说明描述了如何安装
keyring_file
. 要使用不同的密钥环插件,请将其名称替换为keyring_file
.
keyring_file
插件库文件
的基本名称是keyring_file
. 文件名后缀因平台而异(例如,.so
对于 Unix 和类 Unix 系统,.dll
对于 Windows)。
要加载插件,请使用
--early-plugin-load
选项命名包含它的插件库文件。例如,在插件库文件后缀为 的平台上,
.so
在服务器文件中使用这些行,
根据需要my.cnf
调整
.so
平台的后缀:
[mysqld]
early-plugin-load=keyring_file.so
在启动服务器之前,请检查您选择的密钥环插件的注释以获取特定于该插件的配置说明:
keyring_file
: 第 6.4.4.6 节,“使用 keyring_file 基于文件的密钥环插件”。keyring_encrypted_file
: 第 6.4.4.7 节,“使用 keyring_encrypted_file 加密的基于文件的密钥环插件”。keyring_okv
: 第 6.4.4.8 节,“使用 keyring_okv KMIP 插件”。keyring_aws
: 第 6.4.4.9 节,“使用 keyring_aws Amazon Web Services Keyring 插件”keyring_hashicorp
: 第 6.4.4.10 节,“使用 HashiCorp Vault Keyring 插件”keyring_oci
: 第 6.4.4.12 节,“使用 Oracle Cloud Infrastructure Vault 密钥环插件”
执行任何特定于插件的配置后,启动服务器。通过检查
INFORMATION_SCHEMA.PLUGINS
表或使用SHOW PLUGINS
语句来验证插件安装(请参阅第 5.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
InnoDB
插件加载使用
--plugin-load
or--plugin-load-add
发生在InnoDB
初始化之后。使用安装的插件
INSTALL PLUGIN
在mysql.plugin
系统表中注册并自动加载以供后续服务器重新启动。但是,因为mysql.plugin
是一个 表,任何以它命名的插件只有在初始化InnoDB
后才能在启动时加载 。InnoDB
如果当组件尝试访问密钥环服务时没有密钥环组件或插件可用,则该组件不能使用该服务。因此,组件可能无法初始化或可能会使用有限的功能进行初始化。例如,如果InnoDB
在初始化时发现有加密的表空间,它会尝试访问密钥环。如果密钥环不可用,
InnoDB
则只能访问未加密的表空间。为确保也InnoDB
可以访问加密的表空间,请使用
--early-plugin-load
加载密钥环插件。