Pre-General Availability Draft: 2017-07-17
The keyring_file plugin is a keyring plugin
that stores keyring data in a file local to the server host.
The keyring_file plugin for encryption key
management is not intended as a regulatory compliance
solution. Security standards such as PCI, FIPS, and others
require use of key management systems to secure, manage, and
protect encryption keys in key vaults or hardware security
modules (HSMs).
To install the keyring_file plugin, use the
general keyring installation instructions found in
Section 6.5.4.1, “Keyring Plugin Installation”, together with the
configuration information specific to
keyring_file found here.
keyring_file must be loaded at each server
startup using the
--early-plugin-load option. The
keyring_file_data system
variable optionally configures the location of the file used by
the keyring_file plugin for data storage. The
default value is platform specific. To configure the file
location explicitly, set the variable value at startup. For
example, use these lines in the server
my.cnf file (adjust the
.so suffix and file location for your
platform as necessary):
[mysqld]
early-plugin-load=keyring_file.so
keyring_file_data=/usr/local/mysql/mysql-keyring/keyring
Keyring operations are transactional: The
keyring_file plugin uses a backup file during
write operations to ensure that it can roll back to the original
file if an operation fails. The backup file has the same name as
the value of the
keyring_file_data system
variable with a suffix of .backup.
For additional information about
keyring_file_data, see
Section 6.5.4.6, “Keyring System Variables”.
To ensure that keys are flushed only when the correct keyring
storage file exists, keyring_file stores a
SHA-256 checksum of the keyring in the file. Before updating the
file, the plugin verifies that it contains the expected
checksum.
The keyring_file plugin supports the
functions that comprise the standard keyring service interface.
Keyring operations performed by those functions are accessible
at two levels:
SQL interface: In SQL statements, call the user-defined functions (UDFs) described in Section 6.5.4.4, “General-Purpose Keyring Key-Management Functions”.
C interface: In C-language code, call the keyring service functions described in Section 28.3.2, “The Keyring Service”.
Example (using UDFs):
SELECT keyring_key_generate('MyKey', 'AES', 32);
SELECT keyring_key_remove('MyKey');
The key types permitted by keyring_file are
described in Section 6.5.4.3, “Supported Keyring Key Types”.