MySQL 8.0.35 企业版安装和启用TDE插件keyring_encrypted_file

本文主要记录MySQL企业版TDE插件keyring_encrypted_file的安装和使用。

TDE说明

TDE( Transparent Data Encryption,透明数据加密) 指的是无需修改应用就可以实现数据的加解密,在数据写磁盘的时候加密,读的时候自动解密。加密后其他人即使能够访问数据库文件,没有key也无法读取数据,从而达到防止非法访问的目的。

  • MySQL的支持情况

InnoDB使用的是两层的加密键架构,包括一个master加密键和表空间加密键,master加密键是用来加解密表空间键的,而表空间加密键保持不变,放置在表空间文件的文件头,这样可以不时轮换master的加密键,从而提供更高的安全性,而表空间的数据不用重新进行加解密,节省时间,对生产系统的影响也较小。

静态数据加密功能支持基于高级加密标准 (Advanced EncryptionStandard,AES) 块的加密算法。它使用电码本(Electronic Codebook ) 块加密模式进行表空间密钥加密,使用密码分组链接 (CipherBlock Chaining) 块加密模式进行数据加密。

加密的key都是通过keyring(钥匙圈)来进行管理的,使用的是插件和组件的形式。这些插件或组件使用本身的后台存储或者与其它的密钥后端存储系统通信,MySQL 5.7开始支持TDE,8.0提供更多的加密选项,社区版和企业版都可以,区别是企业版提供额外的keyring组件和插件,可以提供更好的安全性,如果要达到合规的要求,需要使用企业版,详细支持情况列表如下。

对于不同的版本,支持的文件加密也是有区别的,8.0.23或以上,支持的加密包括有:独立表空间、通用表空间、DoubleWrite文件、mysql系统表空间、Redo log和UndoLog文件的加密。

根据官方文档,启用后性能影响百分比在个位数,实际的影响情况可用工作负载测试下。启用加密后,数据库的占用空间也变化不大。

启用加密后,对于备份策略也需要调整,需要考虑到master键的保存,并不时作备份恢复测试,确保即使生产数据完全丢失也可以恢复数据。要注意的是,如果使用MySQL Enterprise Backup (MEB)备份TDE的表空间,备份下来也是加密的,而mysqldump备份是没有加密的,考虑到安全问题可手动加密。

一、系统环境

操作系统:Ubuntu 20.04.5 LTS

数据库版本:8.0.35-commercial MySQL Enterprise Server - Commercial

TDE插件类型:keyring_encrypted_file

二、添加配置文件

vim /etc/mysql/mysql.conf.d/mysqld.cnf

添加到mydqld下

[mysqld]# keyring
early-plugin-load=keyring_encrypted_file.so
keyring_file_data=/database/mysql/keyring/keyring_file
keyring_encrypted_file_password=uYeW0fD6aODGzgWz

三、添加目录和授权

根据配置创建保持key的目录和授权。否则启动会报权限问题。

mkdir -p /database/mysql/keyring
chown -R mysql:mysql /database/mysql/keyring/
chmod 750 /database/mysql/keyring/
三、安装插件

使用下面命令安装插件

INSTALL PLUGIN keyring_file soname 'keyring_file.so';

题外话 卸载插件 UNINSTALL PLUGIN keyring_file;

四、查看插件安装情况
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'keyring%';

ACTIVE表明插件已经安装成功

五、重启后插件生效
systemctl start mysql

下面是启动后mysql的日志

root@xmachine:/home/admin# tail -n 100 /var/log/mysql/error.log2024-03-04T07:39:08.736046Z 0 [Warning] [MY-010139] [Server] Changed limits: max_open_files: 10000 (requested 10240)
2024-03-04T07:39:08.990458Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2024-03-04T07:39:08.990490Z 0 [Warning] [MY-011068] [Server] The syntax 'slave_skip_errors' is deprecated and will be removed in a future release. Please use replica_skip_errors instead.
2024-03-04T07:39:08.990526Z 0 [Warning] [MY-010915] [Server] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2024-03-04T07:39:08.992119Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.35-commercial) starting as process 3889861
2024-03-04T07:39:08.996032Z 0 [Warning] [MY-013360] [Server] Plugin keyring_encrypted_file reported: ''keyring_encrypted_file plugin' is deprecated and will be removed in a future release. Please use component_keyring_encrypted_file instead'
2024-03-04T07:39:08.997311Z 0 [Warning] [MY-013907] [InnoDB] Deprecated configuration parameters innodb_log_file_size and/or innodb_log_files_in_group have been used to compute innodb_redo_log_capacity=4294967296. Please use innodb_redo_log_capacity instead.
2024-03-04T07:39:08.999044Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-03-04T07:39:09.533703Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-03-04T07:39:09.649068Z 0 [Warning] [MY-013360] [Server] Plugin keyring_file reported: ''keyring_file plugin' is deprecated and will be removed in a future release. Please use component_keyring_file instead'
2024-03-04T07:39:09.759970Z 0 [Warning] [MY-010068] [Server] CA certificate /database/mysql/ca.pem is self signed.
2024-03-04T07:39:09.759999Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2024-03-04T07:39:09.791955Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock
2024-03-04T07:39:09.792000Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.35-commercial'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Enterprise Server - Commercial.
六、查询插件状态

查看加密插件状态

select plugin_name,plugin_status from information_schema.plugins where plugin_name like 'keyring%';

查询主密钥文件的位置

show variables like 'keyring_file_data';

查看相应的目录是否生成加密key文件。

 

查看密钥

show variables like '%keyring%';

七、加密和解密表操作
# 数据表创建时加密:CREATE TABLE t1 (c1 INT) ENCRYPTION='Y'# 已创建数据表加密ALTER TABLE t1 ENCRYPTION='Y'# 数据表解密:ALTER TABLE t1 ENCRYPTION='N'
八、轮换主密钥

执行下面的轮换主密钥命令需要 SUPER 权限

ALTER INSTANCE ROTATE INNODB MASTER KEY;

九、查看表加密状态

查看加密的表:

SELECT TABLE_SCHEMA, TABLE_NAME, CREATE_OPTIONS FROM INFORMATION_SCHEMA.TABLES WHERE CREATE_OPTIONS LIKE '%ENCRYPTION%';

查看未加密的表

select concat(TABLE_SCHEMA,".",TABLE_NAME) from INFORMATION_SCHEMA.TABLES where (TABLE_SCHEMA,TABLE_NAME) not in (SELECT TABLE_SCHEMA,TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE CREATE_OPTIONS LIKE '%ENCRYPTION%' and table_schema not in ('information_schema','performance_schema','sys','mysql','universe')) and TABLE_SCHEMA in ('mydata');
十、其他

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/721084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 摄像机的深度切换与摄像机画面投影

摄像机可选:透视、正交 正交类似投影,1比1 透视类似人眼,近大远小 摄像机投影 在项目中新建:渲染器纹理 将新建纹理拖动到相机的目标纹理中 新建一个平面,将新建材质组件放到平面中即可。 相机深度切换 使用代…

93. 通用防重幂等设计

文章目录 一、防重与幂等的区别二、幂等性的应用场景三、幂等性与防重关系四、处理流程 一、防重与幂等的区别 防重与幂等是在 Web 应用程序和分布式系统中重要而又非常常见的问题。 防重 防重是指在多次提交同样的请求过程中,系统会检测和消除重复的数据&#xf…

每天一个数据分析题(一百八十三)

以下哪一项不是逻辑回归模型的特点? A. 因变量通常为二分类型变量 B. 自变量可以是分类型或连续型变量 C. 适用于处理连续自变量与二分类型因变量之间的关系 D. 通过logit转换,输出结果为实数域内的数值 题目来源于CDA模拟题库 点击此处获取答案

【动态规划】45. 跳跃游戏 II

45. 跳跃游戏 II 解题思路 int[] memo;:定义一个数组memo,用来作为备忘录,存储从每个索引位置跳到数组末尾所需的最小跳跃次数。 Arrays.fill(memo, n);:在开始计算之前,先将memo数组的所有元素初始化为n。这里的n是…

C语言中的宏函数与宏定义

C语言中的宏函数与宏定义 从开始写C语言到生成执行程序的流程大致如下: 预处理工作是系统引用预处理程序对源程序中的预处理部分做处理,而预处理部分是指以“#”开头的、放在函数之外的、一般放在源文件的前面的预处理命令,如:包…

流密码之线性反馈移位寄存器,以习题:n=4的LFSR,输出序列满足ki-4+ki-3+ki=0,初始状态为1000,求最终输出序列 为例

文章重点 关于线性反馈移位寄存器的一些知识点本期就不详细介绍了,本期重点在于讲解习题,以使大家能顺利应对平时作业及期末考试。 习题 习题1如下:n=4的LFSR。输出序列满足ki-4+ki-3+ki=0。 初始状态为1000。求不同时刻的状态及最终输出序列。 分析思路 思路:我们知道…

HTTP有什么缺陷,HTTPS是怎么解决的

缺陷 HTTP是明文的,谁都能看得懂,HTTPS是加了TLS/SSL加密的,这样就不容易被拦截和攻击了。 SSL是TLS的前身,他俩都是加密安全协议。前者大部分浏览器都不支持了,后者现在用的多。 对称加密 通信双方握有加密解密算法…

python自学3

第一节第六章 数据的列表 列表也是支持嵌套的 列表的下标索引 反向也可以 嵌套也可以 列表的常用操作 什么是列表的方法 学习到的第一个方法,index,查询元素在列表中的下标索引值 index查询方法 修改表功能的方法 插入方法 追加元素 单个元素追加 多…

YOLO v9训练自己数据集

原以为RT-DETR可以真的干翻YOLO家族,结果,!!!! 究竟能否让卷积神经网络重获新生? 1.数据准备 代码地址:https://github.com/WongKinYiu/yolov9 不能科学上网的评论区留言 数据集…

教育知识与能力保分卷一(中学)

2.在教育学的发展过程中,代表马克思主义的教育学著作是(A )。 A.凯洛夫的《教育学》 B.赞可夫的《教学与发展》 C.杜威的《民主主义与教育》 D.昆体良的《论演说家的教育》 8.小贺在一次期…

电脑不小心格式化了,怎么恢复?

在这个数字化时代,电脑已经成为我们日常生活和工作中不可或缺的工具。然而,有时我们可能会不小心格式化电脑硬盘,导致重要数据的丢失。那么,电脑不小心格式化了,怎么恢复? 别着急,在本篇攻略中&…

开源模型应用落地-qwen1.5-7b-chat与vllm实现推理加速的正确姿势(八)

一、前言 就在前几天开源社区又发布了qwen1.5版本,它是qwen2模型的测试版本。在本篇学习中,将集成vllm实现模型推理加速,现在,我们赶紧跟上技术发展的脚步,去体验一下新版本模型的推理质量。 二、术语 2.1. vLLM vLLM是一个开源的大模型推理加速框架,通过PagedAttention…

记一次openfeign反序列化异常复盘

前言 之前业务部门有2个通用响应类,一个是负责和前端交互的响应类AjaxResult,一个是负责和后端RPC接口交互的响应类RpcResult。一开始这两个响应类的值字段都一样,形如下 private Boolean success;private String message;private Integer code;private…

掌握PDF全面指南:Python开发者的高效编程技巧

掌握PDF全面指南:Python开发者的高效编程技巧 简介PDF基础知识PDF的结构常见用途PDF在开发中的挑战 PDF处理库介绍PyPDF2ReportLabPDFMiner辅助库 读取和分析PDF文件使用PyPDF2读取PDF文件提取PDF中的文本和元数据分析PDF结构和内容 编辑和修改PDF文件合并多个PDF文…

如何制作一个分销商城小程序_揭秘分销商城小程序的制作秘籍

打造赚钱神器!揭秘分销商城小程序的制作秘籍 在这个数字化高速发展的时代,拥有一个属于自己的分销商城小程序,已成为众多商家和创业者的必备利器。它不仅能够快速搭建起自己的在线销售渠道,还能够利用分销模式,迅速裂…

C# 对文件、文件夹的操作

在使用后面的代码前,需要: using System; using System.IO;C# 对文件的操作 判断文件是否存在 string filePath "E:\\new folder\\test\\myfile.xls"; if (File.Exists(filePath)) {// 如果文件存在 } else {// 如果文件不存在 }复制文件 …

中级前端面试整理-上篇

JS的基本类型 JavaScript中的基本类型是指:那些存储在内存中的值类型,他们是不可以变的、意味着一旦创建,值类型就不能改变。 JS的7种基本类型 布尔类型(Boolean): 表示true或者false数字类型(Number): 表示整数、浮点或者NaN字符串类型(St…

了解拒绝服务攻击:攻击类型、影响和防御措施

拒绝服务攻击(Denial of Service,简称DoS)是一种广泛存在的网络安全威胁,旨在使目标系统无法提供正常的服务,使其服务不可用或严重受限。在本文中,我们将深入探讨拒绝服务攻击的不同类型、其对网络系统和业…

安全特性 悬垂指针

英文名称 Dangling point,它还有一个兄弟叫 wild point - 野指针。 简单的对Dangling point做一个类比:我换手机号码了,但是没有通知老板,老板通讯录存的是我的旧号码。然后老板打电话有两种可能:打不通电话或者电话打…

pytorch 自定义函数

pytorch 自定义函数 介绍:https://zhuanlan.zhihu.com/p/344802526 主要构建 static method forward 和 backward 比如 layernorm: 参考:https://github.com/zhangyi-3/KBNet/blob/main/basicsr/models/archs/kb_utils.py 导数的推导:http…