Documentation Home

6.4.4.3 密钥环插件安装

密钥环服务消费者需要安装密钥环组件或插件:

笔记

一次只能启用一个密钥环组件或插件。不支持启用多个密钥环组件或插件,结果可能与预期不同。

如果您需要支持持久系统变量值的安全存储,则必须在 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

在启动服务器之前,请检查您选择的密钥环插件的注释以获取特定于该插件的配置说明:

执行任何特定于插件的配置后,启动服务器。通过检查 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-addINSTALL PLUGINInnoDB

  • 插件加载使用 --plugin-loador --plugin-load-add发生在InnoDB初始化之后。

  • 使用安装的插件INSTALL PLUGINmysql.plugin系统表中注册并自动加载以供后续服务器重新启动。但是,因为mysql.plugin是一个 表,任何以它命名的插件只有在初始化 InnoDB后才能在启动时加载 。InnoDB

如果当组件尝试访问密钥环服务时没有密钥环组件或插件可用,则该组件不能使用该服务。因此,组件可能无法初始化或可能会使用有限的功能进行初始化。例如,如果InnoDB在初始化时发现有加密的表空间,它会尝试访问密钥环。如果密钥环不可用, InnoDB则只能访问未加密的表空间。为确保也InnoDB可以访问加密的表空间,请使用 --early-plugin-load加载密钥环插件。