8.4.4.5 使用加密文件密钥环组件
component_keyring_encrypted_file
是 MySQL Enterprise Edition 的扩展,一个商业产品。要了解更多关于商业产品,请访问https://www.mysql.com/products/。
加密文件密钥环组件component_keyring_encrypted_file
将密钥环数据存储在服务器主机的加密、密码保护的本地文件中。
对于加密密钥管理,component_keyring_file
和component_keyring_encrypted_file
组件不旨为法规遵从性解决方案。安全标准,如PCI、FIPS等要求使用密钥管理系统来保护、管理和保护加密密钥在密钥库或硬件安全模块(HSM)中。
要使用component_keyring_encrypted_file
进行keystore管理,您必须:
-
编写一个清单文件,告诉服务器加载
component_keyring_encrypted_file
,如第8.4.4.2节,“Keyring Component Installation”中所述。 -
编写
component_keyring_encrypted_file
的配置文件,如下所述。
当初始化时,component_keyring_encrypted_file
将读取全局配置文件或全局配置文件与本地配置文件 pair:
-
组件尝试从安装了组件库文件的目录(即服务器插件目录)中读取其全局配置文件。
-
如果全局配置文件指示使用本地配置文件,组件将尝试从数据目录中读取其本地配置文件。
-
虽然全球和本地配置文件位于不同的目录中,但文件名都是
component_keyring_encrypted_file.cnf
在两个位置。 -
没有预配置文件是错误的。
component_keyring_encrypted_file
不能在无效配置的情况下初始化。
本地配置文件允许设置多个服务器实例使用component_keyring_encrypted_file
component_keyring_encrypted_file
配置文件具有以下属性:
-
配置文件必须是有效的JSON格式。
-
配置文件允许这些配置项:
-
"read_local_config"
: 这个项目只能在全球配置文件中出现。如果项目不存在,组件将只使用全球配置文件。如果项目存在,它的值是true
或false
,表示组件是否应该从本地配置文件中读取配置信息。如果在全球配置文件中出现了
"read_local_config"
项目,同时还有其他项目,组件将首先检查"read_local_config"
项目的值:-
如果值是
false
,组件将处理全球配置文件中的其他项目,并忽略本地配置文件。 -
如果值为
true
,组件将忽略全局配置文件中的其他项目,并尝试读取本地配置文件。
-
-
"path"
:项值是一个字符串,指定用于存储密钥ring数据的文件名。该文件应使用绝对路径,而不是相对路径。这项是配置中的必需项目。如果未指定,component_ keyring_encrypted_file
初始化将失败。 -
"password"
:项值是一个字符串,指定访问数据文件的密码。这项是配置中的必需项目。如果未指定,component_keyring_ encrypted_file
初始化将失败。 -
"read_only"
:项值指示密钥ring数据文件是否为只读。项值是true
(只读)或false
(可读/可写)。这项是配置中的必需项目。如果未指定,component_keyring_ encrypted_file
初始化将失败。
-
-
数据库管理员负责创建用于存储的配置文件,并确保其内容正确。如果出现错误,服务器启动失败,管理员必须根据服务器错误日志中的诊断信息进行更正。
-
任何存储密码的配置文件都应该具有受限模式,并且只能由用来运行 MySQL 服务器的帐户访问。
根据前面的配置文件属性,为了配置component_keyring_encrypted_file
,在component_keyring_encrypted_file
库文件安装目录下创建一个全局配置文件名为component_keyring_encrypted_file.cnf
, optionally 在数据目录下创建一个本地配置文件,也名为component_keyring_encrypted_file.cnf
。以下指令假设将使用读/写方式的keyring数据文件名为/usr/local/mysql/keyring/component_keyring_encrypted_file
,您还需要选择一个密码。
-
如果只使用全局配置文件,则文件内容如下所示:
{ "path": "/usr/local/mysql/keyring/component_keyring_encrypted_file", "password": "password", "read_only": false }
将该文件创建在
component_keyring_encrypted_file
库文件安装目录下。 -
alternatively,如果要使用全局和本地配置文件对,则全局文件内容如下所示:
{ "read_local_config": true }
将该文件创建在
component_keyring_encrypted_file
库文件安装目录下。本地文件内容如下所示:
{ "path": "/usr/local/mysql/keyring/component_keyring_encrypted_file", "password": "password", "read_only": false }
将该文件创建在数据目录下。
Keyring操作是事务性的:component_keyring_encrypted_file
在写操作期间使用备份文件,以确保可以回滚到原始文件,如果操作失败。备份文件的名称与数据文件相同,但后缀为.backup
。
component_keyring_encrypted_file
支持标准MySQL Keyring服务接口中的函数。Keyring操作由这些函数执行是可访问的两个级别:
-
SQL 接口:在 SQL 语句中,调用 第8.4.4.12节,“通用密钥环密钥管理函数” 中描述的函数。
-
C 接口:在 C 语言代码中,调用 第7.6.9.2节,“密钥环服务” 中描述的密钥环服务函数。
示例(使用 SQL 接口):
SELECT keyring_key_generate('MyKey', 'AES', 32);
SELECT keyring_key_remove('MyKey');
关于 component_keyring_encrypted_file
允许的密钥值特征信息,请见 第8.4.4.10节,“支持的密钥环密钥类型和长度”。