• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 使用keyring_okv插件(KMIP)

    注意

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

    密钥管理互操作性协议(KMIP)支持在密钥管理服务器及其客户端之间进行加密密钥通信。在keyring_okv钥匙圈插件使用KMIP 1.1协议作为一个KMIP后端的一个客户端安全地通信。密钥环材料仅由后端生成,而不由生成keyring_okv。该插件可与以下KMIP兼容产品一起使用:

    • Oracle Key保管库
    • 金雅拓SafeNet KeySecure设备

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

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

    示例(使用UDF):

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

    有关密钥类型信息允许通过keyring_okv,第6.4.4.8,“支持的重点匙扣类型和长度”。

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

    • 常规keyring_okv配置
    • 为Oracle Key Vault配置keyring_okv
    • 为金雅拓SafeNet KeySecure设备配置keyring_okv
    • 密码保护keyring_okv密钥文件
    常规keyring_okv配置

    无论keyring_okv插件使用哪个KMIP后端存储密钥环,keyring_okv_conf_dir系统变量都会配置keyring_okv其支持文件使用的目录位置。默认值为空,因此在插件可以与KMIP后端进行通信之前,必须将变量设置为正确配置的目录。除非您这样做,否则keyring_okv在服务器启动期间向错误日志中写入一条消息,指出该消息无法通信:

    [Warning] Plugin keyring_okv reported: 'For keyring_okv to be
    initialized, please point the keyring_okv_conf_dir variable to a directory
    containing Oracle Key Vault configuration file and ssl materials'
    

    keyring_okv_conf_dir变量必须命名包含以下各项的目录:

    • okvclient.or :一个文件,其中包含keyring_okv将与之通信的KMIP后端的详细信息。
    • ssl:包含证书,并建立与KMIP后端的安全连接所需的密钥文件的目录CA.pemcert.pemkey.pem。如果密钥文件受密码保护,则ssl目录可以包含一个单行文本文件password.txt,该文件名为,包含解密密钥文件所需的密码。

    这两个okvclient.or 文件和ssl目录与证书和密钥文件所需的keyring_okv工作正常。用这些文件填充配置目录的过程取决于与一起使用的KMIP后端keyring_okv,如其他地方所述。

    用作keyring_okv其支持文件位置的配置目录应具有限制性模式,并且只能由用于运行MySQL服务器的帐户访问。例如,在Unix和类似Unix的系统上,要使用/usr/local/mysql/mysql-keyring-okv目录,可以使用以下命令(执行为root)创建目录并设置其模式和所有权:

    cd /usr/local/mysql
    mkdir mysql-keyring-okv
    chmod 750 mysql-keyring-okv
    chown mysql mysql-keyring-okv
    chgrp mysql mysql-keyring-okv
    

    为了在服务器启动过程中可用,keyring_okv必须使用该--early-plugin-load选项进行加载。另外,设置keyring_okv_conf_dir系统变量以告诉keyring_okv在哪里可以找到其配置目录。例如,在服务器my.cnf文件中使用以下行(.so根据需要调整平台的后缀和目录位置):

    [mysqld]
    early-plugin-load=keyring_okv.so
    keyring_okv_conf_dir=/usr/local/mysql/mysql-keyring-okv
    

    有关的其他信息keyring_okv_conf_dir,请参见“密钥环系统变量”。

    为Oracle Key Vault配置keyring_okv

    此处的讨论假定您熟悉Oracle Key Vault。一些相关的信息来源:

    • Oracle Key Vault网站
    • Oracle Key Vault文档

    在Oracle Key Vault术语中,使用Oracle Key Vault存储和检索安全性对象的客户端称为端点。要与Oracle Key Vault通信,必须注册为端点并通过下载和安装端点支持文件进行注册。

    以下过程简要总结了keyring_okv用于Oracle Key Vault 的设置过程:

    1. 创建keyring_okv要使用的插件的配置目录。
    2. 在Oracle Key Vault中注册端点以获取注册令牌。
    3. 使用注册令牌获得okvclient.jar客户端软件下载。
    4. 安装客户端软件以填充keyring_okv包含Oracle Key Vault支持文件的配置目录。

    使用以下过程来配置keyring_okv和Oracle Key Vault一起使用。该描述仅总结了如何与Oracle Key Vault进行交互。有关详细信息,请访问 Oracle Key Vault网站并查阅《 Oracle Key Vault管理指南》。

    1. 创建将包含Oracle Key Vault支持文件的配置目录,并确保将keyring_okv_conf_dir系统变量设置为该目录的名称(有关详细信息,请参见General keyring_okv Configuration)。
    2. 以具有系统管理员角色的用户身份登录到Oracle Key Vault管理控制台。
    3. 选择“端点”选项卡以到达“端点”页面。在“端点”页面上,单击“添加”。
    4. 提供所需的端点信息,然后单击注册。端点类型应为“其他”。成功注册会产生一个注册令牌。
    5. 从Oracle Key Vault服务器注销。
    6. 这次无需登录即可再次连接到Oracle Key Vault服务器。使用端点注册令牌注册并请求okvclient.jar软件下载。将此文件保存到您的系统。
    7. okvclient.jar使用以下命令安装文件(您必须具有JDK 1.4或更高版本):

      java -jar okvclient.jar -d dir_name [-v]
      

      -d选项后的目录名称是安装提取文件的位置。-v如果提供该选项,则将导致生成日志信息,如果命令失败,该信息可能会很有用。

      当命令要求提供Oracle Key Vault端点密码时,请勿提供密码。而是按Enter。(结果是,端点连接到Oracle Key Vault时不需要密码。)

    8. 前面的命令生成一个okvclient.or 文件,该文件应该-d位于前面的java -jar命令中的选项所命名的目录下的此位置:

      install_dir/conf/okvclient.or 
      

      文件内容包括如下所示的行:

      SERVER=host_ip:port_num
      STANDBY_SERVER=host_ip:port_num
      

      keyring_okv与服务器的命名在主机上运行的通信插件试图SERVER变回退到STANDBY_SERVER如果失败:

      • 对于SERVER变量,okvclient.or 必须在文件中进行设置。
      • 对于STANDBY_SERVER变量,okvclient.or 文件中的设置是可选的。
    9. 转到Oracle Key Vault安装程序目录,并通过运行以下命令来测试设置:

      okvutil/bin/okvutil list
      

      输出应如下所示:

      Unique ID                               Type            Identifier
      255AB8DE-C97F-482C-E053-0100007F28B9	Symmetric Key	-
      264BF6E0-A20E-7C42-E053-0100007FB29C	Symmetric Key	-
      

      对于新的Oracle Key Vault服务器(其中没有任何密钥的服务器),输出看起来像这样,以指示Vault中没有密钥:

      no objects found
      
    10. 使用此命令sslokvclient.jar文件中提取包含SSL资料的目录:

      jar xf okvclient.jar ssl
      
    11. 将Oracle Key Vault支持文件(okvclient.or 文件和ssl目录)复制到配置目录中。
    12. (可选)如果要用密码保护密钥文件,请使用“密码保护keyring_okv密钥文件”中的说明。

    完成上述步骤后,重新启动MySQL服务器。它加载keyring_okv插件并keyring_okv使用其配置目录中的文件与Oracle Key Vault通信。

    为金雅拓SafeNet KeySecure设备配置keyring_okv

    金雅拓SafeNet KeySecure设备使用KMIP协议(版本1.1或1.2)。的keyring_okv密钥环插件(它支持KMIP 1.1)可以使用KeySecure作为钥匙圈存储其KMIP后端。

    使用以下过程来配置keyring_okv和KeySecure一起工作。该描述仅总结了如何与KeySecure进行交互。有关详细信息,请参阅《KeySecure用户指南》中名为“添加KMIP服务器”的部分。

    1. 创建将包含KeySecure支持文件的配置目录,并确保将keyring_okv_conf_dir系统变量设置为该目录的名称(有关详细信息,请参见General keyring_okv Configuration)。
    2. 在配置目录中,创建一个名为ssl用于存储所需的SSL证书和密钥文件的子目录。
    3. 在配置目录中,创建一个名为的文件okvclient.or 。它应具有以下格式:

      SERVER=host_ip:port_num
      STANDBY_SERVER=host_ip:port_num
      

      例如,如果KeySecure在主机198.51.100.20上运行并在端口9002上侦听,则okvclient.or 文件如下所示:

      SERVER=198.51.100.20:9002
      STANDBY_SERVER=198.51.100.20:9002
      
    4. 以具有用于证书颁发机构访问权限的凭据的管理员身份连接到KeySecure管理控制台。
    5. 导航到“安全性>>本地CA”,然后创建一个本地证书颁发机构(CA)。
    6. 转到受信任的CA列表。选择默认,然后单击属性。然后,选择“受信任的证书颁发机构列表的编辑”并添加刚刚创建的CA。
    7. 下载CA并将其保存ssl为名为的文件在目录中CA.pem
    8. 导航到“安全性>>证书申请”并创建证书。然后,您将能够下载包含证书PEM文件的压缩tar文件。
    9. 从下载的文件中提取PEM文件。例如,如果文件名为csr_w_pk_pkcs8.gz,则使用以下命令解压缩并解压缩:

      tar zxvf csr_w_pk_pkcs8.gz
      

      提取操作产生两个文件:certificate_request.pemprivate_key_pkcs8.pem

    10. 使用此openssl命令解密私钥并创建一个名为的文件key.pem

      openssl pkcs8 -in private_key_pkcs8.pem -out key.pem
      
    11. key.pem文件复制到ssl目录中。
    12. 将证书申请复制certificate_request.pem到剪贴板中。
    13. 导航到安全性>>本地CA。选择您先前创建的同一CA(您下载的用于创建CA.pem文件的CA ),然后单击“签署请求”。从剪贴板粘贴证书申请,选择客户端的证书用途(密钥环是KeySecure的客户端),然后单击“签名申请”。结果是在新页面中与所选CA签署的证书。
    14. 将签名的证书复制到剪贴板,然后将剪贴板内容另存为目录中命名cert.pemssl文件。
    15. (可选)如果要用密码保护密钥文件,请使用“密码保护keyring_okv密钥文件”中的说明。

    完成上述步骤后,重新启动MySQL服务器。它加载keyring_okv插件并keyring_okv使用其配置目录中的文件与KeySecure通信。

    密码保护keyring_okv密钥文件

    您可以选择使用密码保护密钥文件,并提供一个包含密码的文件以使密钥文件能够被解密。这样做,将位置更改为ssl目录并执行以下步骤:

    1. 加密key.pem密钥文件。例如,使用以下命令,然后在提示下输入加密密码:

      shell>openssl rsa -des3 -in key.pem -out key.pem.new
      Enter PEM pass phrase:
      Verifying - Enter PEM pass phrase:
      
    2. 将加密密码保存password.txtssl目录中命名的单行文本文件中。
    3. 验证可以使用以下命令对加密的密钥文件进行解密。解密后的文件应显示在控制台上:

      shell>openssl rsa -in key.pem.new -passin file:password.txt
      
    4. 删除原始key.pem文件,然后重命名key.pem.newkey.pem
    5. 根据需要更改新key.pem文件和password.txt文件的所有权和访问方式,以确保它们具有与ssl目录中其他文件相同的限制。