该 keyring_encrypted_file
插件是 MySQL Enterprise Edition 的一部分,一个商业产品。要了解更多关于商业产品的信息,请参阅 https://www.mysql.com/products/。
该 keyring_encrypted_file
密钥环插件将密钥环数据存储在服务器主机上的加密、密码保护的文件中。
该插件已弃用,并将在未来 MySQL 版本中删除。相反,考虑使用 component_encrypted_keyring_file
组件来存储密钥环数据(参阅 第 8.4.4.5 节,“使用 component_keyring_encrypted_file 加密文件基于密钥环组件”)。
对于加密密钥管理,keyring_encrypted_file
插件不是用于合规性解决方案的解决方案。安全标准如 PCI、FIPS 等要求使用密钥管理系统来保护、管理和保护加密密钥在密钥库或硬件安全模块(HSM)中。
要安装 keyring_encrypted_file
,请使用 第 8.4.4.3 节,“密钥环插件安装” 中的通用说明,以及特定于 keyring_encrypted_file
的配置信息。
要在服务器启动过程中使用 keyring_encrypted_file
,必须使用 --early-plugin-load
选项。要指定加密密钥环数据文件的密码,请设置 keyring_encrypted_file_password
系统变量。(密码是必需的;如果在服务器启动时未指定,keyring_encrypted_file
初始化将失败。)keyring_encrypted_file_data
系统变量可选地配置用于存储数据的文件的位置。默认值是平台特定的。要显式配置文件位置,请在启动时设置变量值。例如,在服务器 my.cnf
文件中使用以下行,调整平台的 .so
后缀和文件位置,并将密码替换为您选择的密码:
[mysqld]
early-plugin-load=keyring_encrypted_file.so
keyring_encrypted_file_data=/usr/local/mysql/mysql-keyring/keyring-encrypted
keyring_encrypted_file_password=password
因为 my.cnf
文件在写入时存储密码,因此它应该具有限制模式,只能由运行 MySQL 服务器的帐户访问。
密钥环操作是事务性的:keyring_encrypted_file
插件在写入操作期间使用备份文件,以确保如果操作失败,可以回滚到原始文件。备份文件具有与 keyring_encrypted_file_data
系统变量相同的名称,但带有 .backup
后缀。
有关配置 keyring_encrypted_file
插件的系统变量的更多信息,请参阅 第 8.4.4.19 节,“密钥环系统变量”。
为了确保只有在正确的密钥环存储文件存在时才刷新密钥,keyring_encrypted_file
在文件中存储密钥环的 SHA-256 校验和。在更新文件之前,插件验证它包含预期的校验和。此外,keyring_encrypted_file
使用 AES 加密文件内容,然后写入文件,并在读取文件后解密文件内容。
该 keyring_encrypted_file
插件支持标准 MySQL 密钥环服务接口的函数。密钥环操作由这些函数执行,可以在两个级别访问:
-
SQL 接口:在 SQL 语句中,调用 第 8.4.4.15 节,“通用密钥环密钥管理函数” 中描述的函数。
-
C 接口:在 C 语言代码中,调用 第 7.6.9.2 节,“密钥环服务” 中描述的密钥环服务函数。
示例(使用 SQL 接口):
SELECT keyring_key_generate('MyKey', 'AES', 32);
SELECT keyring_key_remove('MyKey');
关于keyring_encrypted_file
允许的密钥值特征的信息,请参阅第 8.4.4.13 节,“支持的 Keyring 密钥类型和长度”。