• 首页
  • css3教程
  • html5教程
  • jQuery手册
  • vue手册
  • php手册
  • MySQL手册
  • apache手册
  • redis手册
  • 使用keyring_encrypted_file密钥环插件

    注意

    keyring_encrypted_file插件是商业产品MySQL企业版中的扩展。要了解有关商业产品的更多信息,请参见 https://www.mysql.com/products/。

    keyring_encrypted_file插件是一个密钥环插件,用于将密钥环数据存储在服务器主机本地的加密文件中。

    警告

    keyring_encrypted_file加密密钥管理插件不打算作为一个合规性解决方案。PCI,FIPS等安全性标准要求使用密钥管理系统来保护,管理和保护密钥库或硬件安全模块(HSM)中的加密密钥。

    要安装keyring_encrypted_file插件,请使用“密钥环插件安装”中的常规密钥环安装说明,以及keyring_encrypted_file此处的特定配置信息。

    为了在服务器启动过程中可用,keyring_encrypted_file必须使用该--early-plugin-load选项进行加载。要指定用于加密密钥环数据文件的密码,请设置keyring_encrypted_file_password系统变量。(密码是强制性的;如果在服务器启动时未指定,则keyring_encrypted_file初始化会失败。)keyring_encrypted_file_dat 系统变量可以选择配置keyring_encrypted_file插件用于数据存储的文件的位置。默认值是特定于平台的。要显式配置文件位置,请在启动时设置变量值。例如,在服务器my.cnf文件中使用以下几行(调整.so平台的后缀和文件位置(并用您选择的密码代替):

    [mysqld]
    early-plugin-load=keyring_encrypted_file.so
    keyring_encrypted_file_dat =/usr/local/mysql/mysql-keyring/keyring-encrypted
    keyring_encrypted_file_password=password
    

    由于该my.cnf文件在写入时会存储密码,如图所示,因此它应具有限制模式,并且只能由用于运行MySQL服务器的帐户访问。

    密钥环操作是事务性的:keyring_encrypted_file插件在写操作期间使用备份文件,以确保在操作失败时可以回滚到原始文件。备份文件的名称与keyring_encrypted_file_dat 系统变量的值相同,后缀为.backup

    有关用于配置keyring_encrypted_file插件的系统变量的更多信息,请参见“密钥环系统变量”。

    为确保仅在存在正确的密钥环存储文件时才刷新keyring_encrypted_file密钥,请在文件中存储密钥环的SHA-256校验和。在更新文件之前,插件会验证它是否包含预期的校验和。另外,keyring_encrypted_file在写入文件之前使用AES加密文件内容,在读取文件之后解密文件内容。

    keyring_encrypted_file插件支持包含标准MySQL Keyring服务接口的功能。这些功能执行的密钥环操作可从两个级别访问:

    • SQL接口:在SQL语句中,调用“通用密钥环密钥管理功能”中所述的用户定义函数(UDF)。
    • C接口:在C语言代码中,调用“密钥环服务”中所述的密钥环服务功能。

    示例(使用UDF):

    SELECT keyring_key_generate('MyKey', 'AES', 32);
    SELECT keyring_key_remove('MyKey');
    

    有关允许的密钥类型的信息keyring_encrypted_file,请参见“支持的密钥环密钥类型和长度”。