mysql 加密 tde_TDE与列级数据加密

本文详述了MySQL数据库中的TDE(Transparent Data Encryption)测试过程,包括创建数据库、证书、主密钥,以及备份和恢复的步骤。在模拟丢失证书和主密钥的情况下,演示了如何重新创建和恢复,确保数据库正常访问。同时,文章还探讨了列级数据加密的实现,并介绍了数据迁移和密钥修改的方法,为数据库安全提供了全面的实践指南。
摘要由CSDN通过智能技术生成

一、测试TDE

此部分内容扩展SQL Server安全系列的第九篇:SQL Server安全透明数据加密的测试TDE章节。启用TDE的详细步骤请参考原文。

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

--Create a test database

CREATE DATABASEUestDBGO

--Create a certificate in master to use with TDE

USEmaster;GO

--TDE hooks into encryption key hierarchy in SQL Server

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '!drJP9QXC&Vi%cs';GO

--Create the certificate used to protect the database encryption key

CREATE CERTIFICATE UestDBTDECert WITH SUBJECT = 'Certificate to implement TDE on UestDB';GO

--Backup the master_key

BACKUP MASTER KEY TO FILE = 'D:\SQL2012\MasterKey.bak' ENCRYPTION BY PASSWORD = 'pass';GO

--Backup the certificate--Either create the D:\SQL2012 folder or change it in the code below

BACKUP CERTIFICATE UestDBTDECert TO FILE = 'D:\SQL2012\UestDBTDECert'

WITH PRIVATE KEY ( FILE = 'D:\SQL2012\UestDBTDECertPrivateKey',

ENCRYPTIONBY PASSWORD = 'RISiS9Ul%CByEk6');GO

--Must backup private key as well

View Code

代码1 创建主密钥、证书并备份主密钥、证书

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

USEUestDB;GO

--Create the database encryption key for TDE. Analogous to database master key for data encryption.

CREATE DATABASE ENCRYPTION KEY

WITH ALGORITHM =TRIPLE_DES_3KEY

ENCRYPTIONBYSERVER CERTIFICATE UestDBTDECert;GO

--Get a warning about backing up the key, if you haven't already--...take the advice and back it up!

--Now need to turn TDE on.

ALTER DATABASE UestDB SET ENCRYPTION ON;GO

View Code

代码2 创建数据库加密密钥并启用TDE

接下来模拟证书和主库密钥丢失的情况

->1 del master_key + certificate

->2 create master_key + certificate

->3 create master_key + restore certificate

->4 restore master_key + certificate

首先备份UestDB数据库

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

--backup test database

BACKUP DATABASEUestDBTO DISK = N'D:\SQL2012\MSSQL11.SQL12\MSSQL\Backup\UestDB.bak'

WITH NOFORMAT, INIT, NAME = N'UestDB Full Database Backup',

SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS= 10;GO

View Code

代码3 备份数据库

1、删除证书、删除master_key+重启数据库服务

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

USEmasterGO

--Oops! We lost the certificate and don't have a copy!--Or, going to restore the database to another server instance

DROPCERTIFICATE UestDBTDECert;GO

DROP MASTER KEY;GO

View Code

证书'UestDBTDECert'是由主密钥加密的,因此需先删除证书才能删除master_key。重启数据库服务后在对象资源管理器下展开UestDB数据报错:

ae8f32953850578c7c135179e303c874.png

0c9445172f5cc5c52e1db1d6852d4aa7.png

图1 UestDB不能访问

查看ERRORLOG日志如下所示:

1c9ee583127b3e7e7be67b17551f6caf.png

图2 删除证书、删除master_key

2、用源代码重新创建master_key、创建证书+重启数据库服务

MySQLTDE(Transparent Data Encryption)是一种数据加密技术,可以将数据库文件加密以保护数据的安全性。实现MySQLTDE可以使用第三方加密软件或硬件进行加密,也可以使用MySQL自带的加密插件。 以下是使用MySQL自带的加密插件实现TDE的步骤: 1. 安装MySQL插件 MySQL自带了一个加密插件,名为mysql_aes_cbc。可以通过以下命令安装: ``` INSTALL PLUGIN mysql_aes_cbc SONAME 'mysql_aes_cbc.so'; ``` 2. 创建加密表空间 为了加密整个数据库,需要创建一个加密表空间,并将所有表和索引移到该表空间中。可以使用以下命令创建加密表空间: ``` CREATE TABLESPACE `encrypted_tablespace` ADD DATAFILE 'encrypted_tablespace.ibd' ENGINE=INNODB ENCRYPTION='Y'; ``` 其中,encrypted_tablespace是加密表空间的名称,encrypted_tablespace.ibd是加密表空间的数据文件名。 3. 将表和索引移到加密表空间 使用以下命令将表和索引移到加密表空间: ``` ALTER TABLE `table_name` TABLESPACE `encrypted_tablespace`; ALTER INDEX `index_name` ON `table_name` TABLESPACE `encrypted_tablespace`; ``` 其中,table_name是表的名称,index_name是索引的名称。 4. 加密数据文件 使用以下命令对数据文件进行加密: ``` ALTER TABLE `table_name` ENCRYPTION='Y'; ``` 其中,table_name是表的名称。 5. 验证加密 使用以下命令验证是否成功加密: ``` SHOW CREATE TABLE `table_name`; ``` 其中,table_name是表的名称。如果输出结果中包含“ENCRYPTION='Y'”,则表示加密成功。 注意:MySQLTDE只能保护数据在磁盘上的安全,不会加密在内存中的数据。因此,如果服务器被攻击并且MySQL进程已经启动,攻击者可以通过内存中的数据访问到未加密数据。因此,建议同时使用其他安全措施来保护MySQL服务器的安全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值