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