• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 密钥环服务

    MySQL Server支持密钥环服务,该服务使内部服务器组件和插件能够安全地存储敏感信息,以便以后检索。本节介绍如何使用密钥环服务功能来存储,检索和删除MySQL密钥环密钥库中的密钥。密钥环服务功能的SQL接口也可以作为一组用户定义的功能(UDF)使用。请参见“通用密钥环密钥管理功能”。有关常规密钥环的信息,请参见“ MySQL密钥环”。

    密钥环服务使用启用的任何基础密钥环插件(如果有)。如果未启用任何密钥环插件,则密钥环服务调用将失败。

    阿“记录”在密钥库中包含的数据(密钥本身)和一个唯一的标识符,通过该键被访问。标识符分为两部分:

    • key_id:密钥ID或名称。key_id开头的值mysql_由MySQL Server保留。
    • user_id:会话有效用户ID。如果没有用户上下文,则该值为NULL。该值实际上不必是“用户”;含义取决于应用程序。

      实现密钥环UDF接口的函数将值CURRENT_USER()as作为user_id值传递给密钥环服务函数。

    密钥环服务功能具有以下共同特征:

    • 每个函数返回0表示成功,返回1表示失败。
    • key_iduser_id参数形成指示在钥匙圈使用哪个键的独特组合。
    • 该自key_type变量提供有关密钥的其他信息,例如其加密方法或预期用途。
    • 密钥环服务功能将密钥ID,用户名,类型和值视为二进制字符串,因此比较区分大小写。例如,的ID MyKeymykey引用不同的密钥。

    这些密钥环服务功能可用:

    • my_key_fetch()

      对密钥环及其类型进行反混淆和检索。该函数为用于存储返回的键和键类型的缓冲区分配内存。当不再需要内存时,调用者应将其清零或混淆,然后释放它。

      句法:

      bool my_key_fetch(const char *key_id, const char **key_type,
                        const char* user_id, void **key, size_t *key_len)
      

      参数:

      • key_iduser_id:空对的字符串,成对形成一个唯一的标识符,指示要提取的密钥。
      • key_type:缓冲区指针的地址。该函数将指向空终止字符串的指针存储在该指针中,该字符串提供有关密钥的其他信息(添加密钥时存储)。
      • key:缓冲区指针的地址。该函数在其中存储一个指向包含已提取密钥数据的缓冲区的指针。
      • key_len:函数存储*key缓冲区大小的变量的地址,以字节为单位。

      返回值:

      返回0表示成功,返回1表示失败。

    • my_key_generate()

      生成给定类型和长度的新随机密钥,并将其存储在密钥环中。钥匙具有的长度key_len,并与从形成所述标识符相关联key_iduser_id。类型和长度值必须与基础密钥环插件支持的值一致。请参见“支持的密钥环密钥类型和长度”。

      句法:

      bool my_key_generate(const char *key_id, const char *key_type,
                           const char *user_id, size_t key_len)
      

      参数:

      • key_iduser_id:空对的字符串,一对成对形成要生成的密钥的唯一标识符。
      • key_type:以空值结尾的字符串,提供有关密钥的其他信息。
      • key_len:要生成的密钥的字节大小。

      返回值:

      返回0表示成功,返回1表示失败。

    • my_key_remove()

      从钥匙圈中删除钥匙。

      句法:

      bool my_key_remove(const char *key_id, const char* user_id)
      

      参数:

      • key_iduser_id:一对以null结尾的字符串,构成要删除的密钥的唯一标识符。

      返回值:

      返回0表示成功,返回1表示失败。

    • my_key_store()

      混淆密钥并将其存储在密钥环中。

      句法:

      bool my_key_store(const char *key_id, const char *key_type,
                        const char* user_id, void *key, size_t key_len)
      

      参数:

      • key_iduser_id:空对的字符串,它们成对形成要存储的密钥的唯一标识符。
      • key_type:以空值结尾的字符串,提供有关密钥的其他信息。
      • key:包含要存储的密钥数据的缓冲区。
      • key_lenkey缓冲区的大小(以字节为单位)。

      返回值:

      返回0表示成功,返回1表示失败。