图文实录|MySQL技术分享:MySQL的数据加密




点击上方蓝字关注我们






引言互联网数据的爆发式增长使得数据安全越来越为各大数据库厂商及用户所重视。MySQL在数据安全方面也提供了很多支持。通过加密函数,透明数据加密等特性,MySQL可以对用户敏感数据进行加密,从而防止数据泄露等安全问题。本期分享我们将详细介绍一下MySQL在数据加密方面的特性,希望能让大家对其有比较深入的了解并在选择数据安全方案的时候提供一些参考。
本文金句:为了保证数据安全,MySQL支持了透明加密,函数加密等特性,其中尤其是透明加密为所有落盘数据提供了充分的安全保障。


 

1

数据加密简介



数据加密:指的是通过对敏感数据进行编码处理来保证数据安全,防止数据泄露。


加密方式:主要包含应用系统加密、文件系统加密、函数加密,表空间加密和磁盘加密等。



MySQL也提供了多种方式的加密来保证数据安全,主要包括:


  • 函数加密:通过提供若干加密函数的方式来对敏感数据进行编码处理,防止明文数据泄露;下图即为MySQL企业级函数加密的示意图。

  • 透明数据加密:在存储引擎中对数据进行加密,用户无感知。所有落盘数据都可加密。这个特性是MySQL在安全方面非常重要的一个特性,后面的分享我们将会对这一特性的原理和实现方法进行详细的介绍。


在Klustron分布式数据库的存储节点1.2版本,采用的是MySQL8.0.26版本,而且使用的是InnoDB存储引擎,所以,Klustron的存储节点不仅有着和MySQL一致的安全特性,还实现了对所有落盘数据的全流程加密,包括数据文件,日志文件,备份文件等。下方是Klustron分布式数据库的整体架构图:



2

数据加密详解



透明数据加密原理(总体设计):


  • MySQL5.7.11开始支持单表数据透明加密,8.0版本支持所有数据(redo,binlog,relay log等所有落盘数据)加密。


总体架构上来说,MySQL采用了双层秘钥的设计:


  • Tablespace key:表空间秘钥,用于加解密每个数据页,加密后存放于每个表空间数据ibd文件的第一个页;



    Q&A



    q1:key rotate 如何保证原子性?a1:如之前所描述的,key rotate是将各个tablespace key重新加密并写入ibd文件的第一个页面的,而这个过程是会记录redo log的。InnoDB除了写入相关的redo log外,还会将当前表的加密信息也写入redo log,比如说master key的版本号等。所以,在发生crash时,可以在recovery的过程中,通过redo log中记录的相关信息来保证key rotate的一致性状态。
    q2:Klustron在加密这块做了哪些工作?

    a2:Klustron除了支持MySQL已经提供的加密特性外,还实现了落盘数据(包括数据,日志,备份等等)的全流程加密。另外,KunlunBase正在实现对国五加密标准的支持。



    END产品文档

    Klustron 快速入门:
    https://doc.kunlunbase.com/zh/Klustron_Instruction_Manual.html
    Klustron 快速体验指南:
    https://doc.kunlunbase.com/zh/Klustron_Quickly_Guide.html
    Klustron 功能体验范例:
    https://doc.kunlunbase.com/zh/Klustron-function-experience-example.html
    Klustron 产品使用和测评指南:
    https://doc.kunlunbase.com/zh/product-usage-and-evaluation-guidelines.html
    同时欢迎大家扫码👇添加小助手(备注:加入Klustron技术交流群)欢迎大家在交流群共同探讨更多问题及主题。 
     点击👆上方,关注获取源代码及技术信息~