component_keyring_encrypted_file
是 MySQL Enterprise Edition 的一个扩展,一个商业产品。要了解更多关于商业产品的信息,请参阅 https://www.mysql.com/products/。
该 component_keyring_encrypted_file
密钥环组件将密钥环数据存储在服务器主机上的加密、密码保护的文件中。
对于加密密钥管理,component_keyring_file
和 component_keyring_encrypted_file
组件,以及 keyring_file
和 keyring_encrypted_file
插件,不是作为符合监管要求的解决方案。安全标准,如 PCI、FIPS 等,要求使用密钥管理系统来保护、管理和保护加密密钥在密钥库或硬件安全模块(HSM)中。
要使用 component_keyring_encrypted_file
进行密钥库管理,您必须:
-
编写一个清单,告诉服务器加载
component_keyring_encrypted_file
,如 第 8.4.4.2 节,“Keyring组件安装”所述。 -
编写
component_keyring_encrypted_file
的配置文件,如下所述。
在初始化时,component_keyring_encrypted_file
读取全局配置文件,或者全局配置文件与本地配置文件的组合:
-
组件尝试从组件库文件所在的目录(即服务器插件目录)中读取其全局配置文件。
-
如果全局配置文件指示使用本地配置文件,组件尝试从数据目录中读取其本地配置文件。
-
尽管全局和本地配置文件位于不同的目录中,但文件名在两个位置都是
component_keyring_encrypted_file.cnf
。 -
如果没有预配置文件,
component_keyring_encrypted_file
无法初始化。
本地配置文件允许设置多个服务器实例使用 component_keyring_encrypted_file
,这样每个服务器实例的组件配置都是特定于给定数据目录实例的。这使得同一个密钥环组件可以与每个实例的distinct数据文件一起使用。
component_keyring_encrypted_file
配置文件具有以下属性:
-
配置文件必须是有效的 JSON 格式。
-
配置文件允许以下配置项:
-
"read_local_config"
:该项仅在全局配置文件中允许。如果该项不存在,组件将仅使用全局配置文件。如果该项存在,其值为true
或false
,指示组件是否从本地配置文件中读取配置信息。如果
"read_local_config"
项存在于全局配置文件中,组件首先检查该项的值:-
如果值为
false
,组件将处理全局配置文件中的其他项,并忽略本地配置文件。 -
如果值为
true
,组件将忽略全局配置文件中的其他项,并尝试读取本地配置文件。
-
-
"path"
:该项的值是一个字符串,指定用于存储密钥环数据的文件名。该文件名应使用绝对路径,而不是相对路径。该项在配置中是必需的。如果未指定,component_keyring_encrypted_file
初始化将失败。 -
"password"
:该项的值是一个字符串,指定用于访问数据文件的密码。该项在配置中是必需的。如果未指定,component_keyring_encrypted_file
初始化将失败。 -
"read_only"
:该项的值指示密钥环数据文件是否为只读。该项的值为true
(只读)或false
(读写)。该项在配置中是必需的。如果未指定,component_keyring_encrypted_file
初始化将失败。
-
-
数据库管理员负责创建要使用的任何配置文件,并确保其内容正确。如果出现错误,服务器启动将失败,管理员必须纠正服务器错误日志中指示的任何问题。
-
任何存储密码的配置文件都应该具有限制模式,并且只能由运行 MySQL 服务器的帐户访问。
根据前面的配置文件属性,要配置 component_keyring_encrypted_file
,请在 component_keyring_encrypted_file
库文件安装目录中创建一个名为 component_keyring_encrypted_file.cnf
的全局配置文件,并可选地在数据目录中创建一个名为 component_keyring_encrypted_file.cnf
的本地配置文件。以下说明假设使用名为 /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
库文件安装目录中创建此文件。 -
或者,要使用全局和本地配置文件对,全球文件如下所示:
{ "read_local_config": true }
在
component_keyring_encrypted_file
库文件安装目录中创建此文件。本地文件如下所示:
{ "path": "/usr/local/mysql/keyring/component_keyring_encrypted_file", "password": "password", "read_only": false }
在数据目录中创建此文件。
密钥环操作是事务性的:component_keyring_encrypted_file
在写入操作期间使用备份文件,以确保如果操作失败,可以回退到原始文件。备份文件具有与数据文件相同的名称,后缀为 .backup
。
component_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');
有关 component_keyring_encrypted_file
允许的密钥值特征的信息,请参阅 第 8.4.4.13 节,“支持的密钥环密钥类型和长度”。