MySQL Server支持键控服务,使内部组件和插件能够安全地存储敏感信息以供稍后检索。MySQL发行版提供了一个可在两个级别访问的键控接口:
在SQL级别,作为一组用户定义的函数(UDF),该函数将映射到服务例程的调用。
作为C语言界面,可作为来自服务器插件或用户定义的函数的插件服务。
本节介绍如何使用键控服务功能存储,检索和删除MySQL Keyring密钥库中的键。有关使用UDFS的SQL接口的信息,第6.4.4.14节“通用键控钥匙管理功能”。对于普通键入信息,请参阅第6.4.4节“MySQL键入”。
键控服务使用底层键入插件,如果有的话。如果没有启用键控插件,则键控服务调用失败。
一种“记录“在密钥库中由数据(关键本身)和访问密钥的唯一标识符组成。标识符有两部分:
key_id.
:密钥ID或名称。key_id.
从中开始的值mysql_
由MySQL Server保留。用户身份
:会话有效的用户ID。如果没有用户上下文,则此值可以是空值
。价值实际上不需要“用户“;意义取决于应用程序。实现Keyring UDF接口的功能通过该值
当前用户()
作为用户身份
键控服务功能的值。
KeyRing服务功能具有以下特征:
每个函数返回0以进行成功,1个以进行故障。
这
key_id.
和用户身份
参数形成一个唯一的组合,指示要使用的键控中的哪个键。这
key_type.
参数提供有关密钥的其他信息,例如其加密方法或预期用途。KeyRing服务功能将密钥ID,用户名,类型和值视为二进制字符串,因此比较区分大小写。例如,ID的ID
我的钥匙
和我的钥匙
请参阅不同的键。
这些键控服务功能可用:
my_key_fetch()
Deobfuscates并从钥匙环上检索钥匙,以及其类型。该函数分配用于存储返回的键和键类型的缓冲区的内存。呼叫者应在不再需要时零或混淆内存,然后释放它。
句法:
bool my_key_fetch(const char * key_id,const char ** key_type,const char * user_id,void ** key,size_t * key_len)
论点:
key_id.
那用户身份
:返回的字符串,作为一对形成一个唯一标识符,指示要获取的键。key_type.
:缓冲区指针的地址。该函数将其存储到指向空端接的字符串的指针,该字符串提供有关密钥的其他信息(在添加密钥时存储)。钥匙
:缓冲区指针的地址。该函数将其存储到指向包含获取密钥数据的缓冲区的指针。key_len.
:该变量的地址函数将大小存储在其中字节的字节中*钥匙
缓冲。
返回值:
成功返回0,1进行故障。
my_key_generate()
生成给定类型和长度的新随机键,并将其存储在键控中。关键的长度
key_len.
并且与由此形成的标识符相关联key_id.
和用户身份
。类型和长度值必须与底层键控插件支持的值一致。看第6.4.4.12节,“支持键控键类型和长度”。句法:
Bool My_key_generate(const char * key_id,const char * key_type,const char * user_id,size_t key_len)
论点:
key_id.
那用户身份
:作为对形成要生成的键的唯一标识符,为一对的空终止字符串。key_type.
:一个空终止的字符串,提供有关该密钥的其他信息。key_len.
:要生成的关键字的大小。
返回值:
成功返回0,1进行故障。
my_key_remove()
从钥匙圈中删除密钥。
句法:
Bool My_key_remove(const char * key_id,const char * user_id)
论点:
key_id.
那用户身份
:作为对形成要删除的键的唯一标识符,为一对终止字符串。
返回值:
成功返回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.
那用户身份
:作为对形成要存储的键的唯一标识符,为对作为对的空终止字符串。key_type.
:一个空终止的字符串,提供有关该密钥的其他信息。钥匙
:包含要存储的密钥数据的缓冲区。key_len.
:尺寸为字节钥匙
缓冲。
返回值:
成功返回0,1进行故障。