密钥环服务
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_id
和user_id
参数形成指示在钥匙圈使用哪个键的独特组合。 - 该自
key_type
变量提供有关密钥的其他信息,例如其加密方法或预期用途。 - 密钥环服务功能将密钥ID,用户名,类型和值视为二进制字符串,因此比较区分大小写。例如,的ID
MyKey
和mykey
引用不同的密钥。
这些密钥环服务功能可用:
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_id
,user_id
:空对的字符串,成对形成一个唯一的标识符,指示要提取的密钥。key_type
:缓冲区指针的地址。该函数将指向空终止字符串的指针存储在该指针中,该字符串提供有关密钥的其他信息(添加密钥时存储)。key
:缓冲区指针的地址。该函数在其中存储一个指向包含已提取密钥数据的缓冲区的指针。key_len
:函数存储*key
缓冲区大小的变量的地址,以字节为单位。
返回值:
返回0表示成功,返回1表示失败。
my_key_generate()
生成给定类型和长度的新随机密钥,并将其存储在密钥环中。钥匙具有的长度
key_len
,并与从形成所述标识符相关联key_id
和user_id
。类型和长度值必须与基础密钥环插件支持的值一致。请参见“支持的密钥环密钥类型和长度”。句法:
bool my_key_generate(
const char *key_id,const char *key_type,const char *user_id, size_t key_len)参数:
key_id
,user_id
:空对的字符串,一对成对形成要生成的密钥的唯一标识符。key_type
:以空值结尾的字符串,提供有关密钥的其他信息。key_len
:要生成的密钥的字节大小。
返回值:
返回0表示成功,返回1表示失败。
my_key_remove()
从钥匙圈中删除钥匙。
句法:
bool my_key_remove(
const char *key_id,const char * user_id)参数:
key_id
,user_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_id
,user_id
:空对的字符串,它们成对形成要存储的密钥的唯一标识符。key_type
:以空值结尾的字符串,提供有关密钥的其他信息。key
:包含要存储的密钥数据的缓冲区。key_len
:key
缓冲区的大小(以字节为单位)。
返回值:
返回0表示成功,返回1表示失败。